diff --git a/hash/gba_ereader.xml b/hash/gba_ereader.xml
index 4bd5a97dbf4..9abc2a2598f 100644
--- a/hash/gba_ereader.xml
+++ b/hash/gba_ereader.xml
@@ -4075,5 +4075,225 @@
-
+
+
+ Mario Party-e - Big Boo (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Big Boo (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Bowser (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Bowser (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Daisy (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Daisy (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Graceful Princess Peach (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Graceful Princess Peach (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Lakitu (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Lakitu (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Princess Peach (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Princess Peach (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Super Waluigi (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Super Waluigi (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Super Wario (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Super Wario (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Waluigi (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Waluigi (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Wario (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Wario (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Yoshi (USA) (Strip 1)
+ 200?
+ Nintendo
+
+
+
+
+
+
+
+ Mario Party-e - Yoshi (USA) (Strip 2)
+ 200?
+ Nintendo
+
+
+
+
+
+
diff --git a/hash/pce.xml b/hash/pce.xml
index dbe51cd62fb..d0828dad5ce 100644
--- a/hash/pce.xml
+++ b/hash/pce.xml
@@ -3093,7 +3093,7 @@
-
+
Power Tennis
1993
Hudson
diff --git a/hash/pce_tourvision.xml b/hash/pce_tourvision.xml
index 4d7ae85b830..93a108f87be 100644
--- a/hash/pce_tourvision.xml
+++ b/hash/pce_tourvision.xml
@@ -126,6 +126,20 @@
+
+
+ Barunba (Tourvision PCE bootleg)
+ 1989
+ bootleg (Tourvision) / Zap / Namcot
+
+
+
+
+
+
+
+
+
Be Ball (alt) (Tourvision PCE bootleg)
@@ -813,6 +827,20 @@ Notes:
+
+
+ Power Tennis (Tourvision PCE bootleg)
+ 1993
+ bootleg (Tourvision) / Hudson Soft
+
+
+
+
+
+
+
+
+
Puzzle Boy (Tourvision PCE bootleg)
diff --git a/hash/psx.xml b/hash/psx.xml
index 3585d37e9e6..a28eed57d7c 100755
--- a/hash/psx.xml
+++ b/hash/psx.xml
@@ -35744,13 +35744,14 @@ The entries in this section are intended to replace the existing "low-grade" Jap
-
-
+
- Interactive CD Sampler Disc - Volume 04 (USA)
- 1997
- Sony Computer Entertainment America
-
-
-
-
-
-
-
-
-
- Interactive CD Sampler Disc - Volume 05 (USA)
- 1997
- Sony Computer Entertainment America
-
-
-
-
-
-
-
-
-
+
- Interactive CD Sampler Disc - Volume 06 (USA)
+ Interactive CD Sampler Disc 6 (USA, EDC)
1998
Sony Computer Entertainment America
@@ -35812,68 +35782,7 @@ TODO: Check if these match the corresponding redump dumps.
-
-
- Interactive CD Sampler Disc - Volume 07 (USA)
- 1998
- Sony Computer Entertainment America
-
-
-
-
-
-
-
-
-
- Interactive CD Sampler Disc - Volume 08 (USA)
- 1998
- Sony Computer Entertainment America
-
-
-
-
-
-
-
-
-
- Interactive CD Sampler Disc - Volume 09 (USA)
- 1998
- Sony Computer Entertainment America
-
-
-
-
-
-
-
-
-
- Interactive CD Sampler Disc - Volume 10 (USA)
- 1999
- Sony Computer Entertainment America
-
-
-
-
-
-
-
-
-
+
%s()\n", FUNCNAME));
diff --git a/src/mame/drivers/digijet.cpp b/src/mame/drivers/digijet.cpp
index 9adf0b6d715..6a3e18d374d 100644
--- a/src/mame/drivers/digijet.cpp
+++ b/src/mame/drivers/digijet.cpp
@@ -22,14 +22,14 @@
#include "emu.h"
#include "cpu/mcs48/mcs48.h"
-#define I8048_TAG "i8048"
+#define I8049_TAG "i8049"
class digijet_state : public driver_device
{
public:
digijet_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_maincpu(*this, I8048_TAG)
+ , m_maincpu(*this, I8049_TAG)
{
}
@@ -39,10 +39,6 @@ public:
virtual void machine_reset() override { }
};
-static ADDRESS_MAP_START( program_map, AS_PROGRAM, 8, digijet_state )
- AM_RANGE(0x0000, 0x07ff) AM_ROM
-ADDRESS_MAP_END
-
static ADDRESS_MAP_START( io_map, AS_IO, 8, digijet_state )
ADDRESS_MAP_END
@@ -51,13 +47,12 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( digijet, digijet_state )
/* basic machine hardware */
- MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_11MHz)
- MCFG_CPU_PROGRAM_MAP(program_map)
+ MCFG_CPU_ADD(I8049_TAG, I8049, XTAL_11MHz)
MCFG_CPU_IO_MAP(io_map)
MACHINE_CONFIG_END
ROM_START( digijet )
- ROM_REGION( 0x800, I8048_TAG, 0 )
+ ROM_REGION( 0x800, I8049_TAG, 0 )
ROM_LOAD( "vanagon_85_usa_ca.bin", 0x000, 0x800, CRC(2ed7c4c5) SHA1(ae48d8892b44fe76b48bcefd293c15cd47af3fba) ) // Volkswagen Vanagon, 1985, USA, California
ROM_END
diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp
index 85181a1decb..892de322f3c 100644
--- a/src/mame/drivers/djmain.cpp
+++ b/src/mame/drivers/djmain.cpp
@@ -22,7 +22,7 @@
* Gx831 Pop'n Music 2 (1999.04)
* Gx980 Pop'n Music 3 (1999.09)
*
- * ????? Pop'n Stage (1999.11)
+ * GQ970 Pop'n Stage (1999.11)
* Gx970 Pop'n Stage EX (2000.03)
*
* Chips:
@@ -1195,7 +1195,6 @@ INPUT_PORTS_END
//--------- Pop'n Stage
-#ifdef UNUSED_DEFINITION
static INPUT_PORTS_START( popnstage )
PORT_START("BTN1")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
@@ -1288,7 +1287,6 @@ static INPUT_PORTS_START( popnstage )
PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW3:5" )
PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW3:6" )
INPUT_PORTS_END
-#endif
#ifdef UNUSED_DEFINITION
static INPUT_PORTS_START( popnstex )
@@ -1884,6 +1882,28 @@ ROM_START( popn3 )
ROM_REGION( 0x1000000, "shared", ROMREGION_ERASE00 ) /* K054539 RAM */
ROM_END
+ROM_START( popnstage )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* MC68EC020FG25 MPU */
+ ROM_LOAD16_BYTE( "970jba01.6a", 0x000000, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "970jba02.8a", 0x000001, 0x80000, NO_DUMP )
+
+ ROM_REGION( 0x200000, "gfx1", 0) /* SPRITE */
+ ROM_LOAD16_BYTE( "970jba03.19a", 0x000000, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "970jba04.20a", 0x000001, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "970jba05.22a", 0x100000, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "970jba06.24a", 0x100001, 0x80000, NO_DUMP )
+
+ ROM_REGION( 0x200000, "gfx2", 0 ) /* TILEMAP */
+ ROM_LOAD16_BYTE( "970jba07.22d", 0x000000, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "970jba08.23d", 0x000001, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "970jba09.25d", 0x100000, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "970jba10.27d", 0x100001, 0x80000, NO_DUMP )
+
+ DISK_REGION( "ata:0:hdd:image" ) /* IDE HARD DRIVE */
+ DISK_IMAGE( "970jba11", 0, SHA1(72e92b73b22a8f35e9faca93211e5acf781e66bb) ) /* GQ970 pop'n stage 1.5 ver1.00 1999/10/15 (C) KONAMI */
+
+ ROM_REGION( 0x1000000, "shared", ROMREGION_ERASE00 ) /* K054539 RAM */
+ROM_END
#if 0
// for reference, these sets have not been verified
@@ -2194,6 +2214,7 @@ GAME( 2002, bmfinal, 0, djmainj, bm6thmix, djmain_state, bmfinal, RO
GAME( 1998, popn1, 0, djmaina, popn1, djmain_state, beatmania, ROT0, "Konami", "Pop'n Music 1 (ver AA-A)", 0 )
GAME( 1998, popn2, 0, djmainj, popn2, djmain_state, beatmania, ROT0, "Konami", "Pop'n Music 2 (ver JA-A)", 0 )
GAME( 1998, popn3, 0, djmainj, popn2, djmain_state, beatmania, ROT0, "Konami", "Pop'n Music 3 (ver JA-A)", 0 )
+GAME( 1999, popnstage,0, djmainj, popnstage,djmain_state, beatmania, ROT0, "Konami", "Pop'n Stage (ver JB-A)", MACHINE_NOT_WORKING )
// for reference, these sets have not been verified
//GAME( 1998, bm3rdmxb, bm3rdmix, djmainj, bm3rdmix, djmain_state, beatmania, ROT0, "Konami", "beatmania 3rd MIX (ver JA-B)", 0 )
diff --git a/src/mame/drivers/flower.cpp b/src/mame/drivers/flower.cpp
index 26197104508..77d7a2d8fef 100644
--- a/src/mame/drivers/flower.cpp
+++ b/src/mame/drivers/flower.cpp
@@ -80,17 +80,153 @@ class flower_state : public driver_device
{
public:
flower_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
+ : driver_device(mconfig, type, tag),
+ m_palette(*this, "palette"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_txvram(*this, "txvram"),
+ m_bgvram(*this, "bgvram"),
+ m_fgvram(*this, "fgvram")
{ }
+
+ required_device m_palette;
+ required_device m_gfxdecode;
+ required_shared_ptr m_txvram;
+ required_shared_ptr m_bgvram;
+ required_shared_ptr m_fgvram;
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void legacy_tx_draw(bitmap_ind16 &bitmap,const rectangle &cliprect);
+ void legacy_layers_draw(bitmap_ind16 &bitmap,const rectangle &cliprect);
};
+void flower_state::legacy_tx_draw(bitmap_ind16 &bitmap,const rectangle &cliprect)
+{
+ gfx_element *gfx_0 = m_gfxdecode->gfx(0);
+ int count;
+
+ for (count=0;count<32*32;count++)
+ {
+ int x = count % 32;
+ int y = count / 32;
+
+ UINT8 tile = m_txvram[count];
+ UINT8 attr = m_txvram[count+0x400];
+
+ if(attr & 0x03) // debug
+ attr = machine().rand() & 0xfc;
+
+ gfx_0->transpen(bitmap,cliprect,tile,attr >> 2,0,0,x*8,y*8,3);
+ }
+
+ for (count=0;count<4*32;count++)
+ {
+ int x = count / 32;
+ int y = count % 32;
+
+ UINT8 tile = m_txvram[count];
+ UINT8 attr = m_txvram[count+0x400];
+
+ if(attr & 0x03) // debug
+ attr = machine().rand() & 0xfc;
+
+ gfx_0->transpen(bitmap,cliprect,tile,attr >> 2,0,0,x*8+256,y*8,3);
+ }
+
+}
+
+void flower_state::legacy_layers_draw(bitmap_ind16 &bitmap,const rectangle &cliprect)
+{
+ gfx_element *gfx_1 = m_gfxdecode->gfx(1);
+ int count;
+
+ for (count=0;count<32*32;count++)
+ {
+ int x = count % 16;
+ int y = count / 16;
+ UINT8 tile, attr;
+
+ tile = m_bgvram[count];
+ attr = m_bgvram[count+0x100];
+ if(attr & 0xf) // debug
+ attr = machine().rand() & 0xf0;
+
+ gfx_1->opaque(bitmap,cliprect, tile, attr >> 4, 0, 0, x*16, y*16);
+
+ tile = m_fgvram[count];
+ attr = m_fgvram[count+0x100];
+ if(attr & 0xf)
+ attr = machine().rand() & 0xf0;
+
+ gfx_1->transpen(bitmap,cliprect, tile, attr >> 4, 0, 0, x*16, y*16, 15);
+ }
+}
+
+UINT32 flower_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+{
+ legacy_layers_draw(bitmap,cliprect);
+ legacy_tx_draw(bitmap,cliprect);
+ return 0;
+}
+
+static ADDRESS_MAP_START( shared_map, AS_PROGRAM, 8, flower_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("workram")
+ AM_RANGE(0xa000, 0xa000) AM_WRITENOP
+ AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("txvram")
+ AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_SHARE("bgvram")
+ AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_SHARE("fgvram")
+ADDRESS_MAP_END
static INPUT_PORTS_START( flower )
INPUT_PORTS_END
+static const gfx_layout charlayout =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 2,
+ { 0, 4 },
+ { STEP4(0,1), STEP4(8,1) },
+ { STEP8(0,16) },
+ 8*8*2
+};
+
+static const gfx_layout tilelayout =
+{
+ 16,16,
+ RGN_FRAC(1,2),
+ 4,
+ { 0, 4, RGN_FRAC(1,2), RGN_FRAC(1,2)+4 },
+ { STEP4(0,1), STEP4(8,1), STEP4(8*8*2,1), STEP4(8*8*2+8,1) },
+ { STEP8(0,16), STEP8(8*8*4,16) },
+ 16*16*2
+};
+
+static GFXDECODE_START( flower )
+ GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0, 16 )
+GFXDECODE_END
+
static MACHINE_CONFIG_START( flower, flower_state )
+ MCFG_CPU_ADD("maincpu",Z80,4000000)
+ MCFG_CPU_PROGRAM_MAP(shared_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", flower_state, irq0_line_hold)
+
+ MCFG_CPU_ADD("subcpu",Z80,4000000)
+ MCFG_CPU_PROGRAM_MAP(shared_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", flower_state, irq0_line_hold)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(flower_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_3_579545MHz*2, 442, 0, 288, 263, 16, 240) /* generic NTSC video timing at 256x224 */
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", flower)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
+
MACHINE_CONFIG_END
@@ -107,18 +243,18 @@ ROM_START( flower ) /* Komax version */
ROM_REGION( 0x2000, "gfx1", ROMREGION_INVERT ) /* tx layer */
ROM_LOAD( "10.13e", 0x0000, 0x2000, CRC(62f9b28c) SHA1(d57d06b99e72a4f68f197a5b6c042c926cc70ca0) ) // FIRST AND SECOND HALF IDENTICAL
- ROM_REGION( 0x8000, "gfx2", ROMREGION_INVERT ) /* sprites */
- ROM_LOAD( "14.19e", 0x0000, 0x2000, CRC(11b491c5) SHA1(be1c4a0fbe8fd4e124c21e0f700efa0428376691) )
- ROM_LOAD( "13.17e", 0x2000, 0x2000, CRC(ea743986) SHA1(bbef4fd0f7d21cc89a52061fa50d7c2ea37287bd) )
- ROM_LOAD( "12.16e", 0x4000, 0x2000, CRC(e3779f7f) SHA1(8e12d06b3cdc2fcb7b77cc35f8eca45544cc4873) )
- ROM_LOAD( "11.14e", 0x6000, 0x2000, CRC(8801b34f) SHA1(256059fcd16b21e076db1c18fd9669128df1d658) )
-
- ROM_REGION( 0x8000, "gfx3", ROMREGION_INVERT ) /* bg layers */
+ ROM_REGION( 0x8000, "gfx2", ROMREGION_INVERT ) /* bg layers */
ROM_LOAD( "8.10e", 0x0000, 0x2000, CRC(f85eb20f) SHA1(699edc970c359143dee6de2a97cc2a552454785b) )
ROM_LOAD( "6.7e", 0x2000, 0x2000, CRC(3e97843f) SHA1(4e4e5625dbf78eca97536b1428b2e49ad58c618f) )
ROM_LOAD( "9.12e", 0x4000, 0x2000, CRC(f1d9915e) SHA1(158e1cc8c402f9ae3906363d99f2b25c94c64212) )
ROM_LOAD( "15.9e", 0x6000, 0x2000, CRC(1cad9f72) SHA1(c38dbea266246ed4d47d12bdd8f9fae22a5f8bb8) )
+ ROM_REGION( 0x8000, "gfx3", ROMREGION_INVERT ) /* sprites */
+ ROM_LOAD( "14.19e", 0x0000, 0x2000, CRC(11b491c5) SHA1(be1c4a0fbe8fd4e124c21e0f700efa0428376691) )
+ ROM_LOAD( "13.17e", 0x2000, 0x2000, CRC(ea743986) SHA1(bbef4fd0f7d21cc89a52061fa50d7c2ea37287bd) )
+ ROM_LOAD( "12.16e", 0x4000, 0x2000, CRC(e3779f7f) SHA1(8e12d06b3cdc2fcb7b77cc35f8eca45544cc4873) )
+ ROM_LOAD( "11.14e", 0x6000, 0x2000, CRC(8801b34f) SHA1(256059fcd16b21e076db1c18fd9669128df1d658) )
+
ROM_REGION( 0x8000, "sound1", 0 )
ROM_LOAD( "4.12a", 0x0000, 0x8000, CRC(851ed9fd) SHA1(5dc048b612e45da529502bf33d968737a7b0a646) ) /* 8-bit samples */
@@ -126,9 +262,9 @@ ROM_START( flower ) /* Komax version */
ROM_LOAD( "5.16a", 0x0000, 0x4000, CRC(42fa2853) SHA1(cc1e8b8231d6f27f48b05d59390e93ea1c1c0e4c) ) /* volume tables? */
ROM_REGION( 0x300, "proms", 0 ) /* RGB proms */
- ROM_LOAD( "82s129.k1", 0x0200, 0x0100, CRC(d311ed0d) SHA1(1d530c874aecf93133d610ab3ce668548712913a) ) // r
- ROM_LOAD( "82s129.k2", 0x0100, 0x0100, CRC(ababb072) SHA1(a9d46d12534c8662c6b54df94e96907f3a156968) ) // g
ROM_LOAD( "82s129.k3", 0x0000, 0x0100, CRC(5aab7b41) SHA1(8d44639c7c9f1ba34fe9c4e74c8a38b6453f7ac0) ) // b
+ ROM_LOAD( "82s129.k2", 0x0100, 0x0100, CRC(ababb072) SHA1(a9d46d12534c8662c6b54df94e96907f3a156968) ) // g
+ ROM_LOAD( "82s129.k1", 0x0200, 0x0100, CRC(d311ed0d) SHA1(1d530c874aecf93133d610ab3ce668548712913a) ) // r
ROM_REGION( 0x0520, "user1", 0 ) /* Other proms, (zoom table?) */
ROM_LOAD( "82s147.d7", 0x0000, 0x0200, CRC(f0dbb2a7) SHA1(03cd8fd41d6406894c6931e883a9ac6a4a4effc9) )
@@ -150,18 +286,19 @@ ROM_START( flowerj ) /* Sega/Alpha version. Sega game number 834-5998 */
ROM_REGION( 0x2000, "gfx1", ROMREGION_INVERT ) /* tx layer */
ROM_LOAD( "10.13e", 0x0000, 0x2000, CRC(62f9b28c) SHA1(d57d06b99e72a4f68f197a5b6c042c926cc70ca0) ) // FIRST AND SECOND HALF IDENTICAL
- ROM_REGION( 0x8000, "gfx2", ROMREGION_INVERT ) /* sprites */
- ROM_LOAD( "14.19e", 0x0000, 0x2000, CRC(11b491c5) SHA1(be1c4a0fbe8fd4e124c21e0f700efa0428376691) )
- ROM_LOAD( "13.17e", 0x2000, 0x2000, CRC(ea743986) SHA1(bbef4fd0f7d21cc89a52061fa50d7c2ea37287bd) )
- ROM_LOAD( "12.16e", 0x4000, 0x2000, CRC(e3779f7f) SHA1(8e12d06b3cdc2fcb7b77cc35f8eca45544cc4873) )
- ROM_LOAD( "11.14e", 0x6000, 0x2000, CRC(8801b34f) SHA1(256059fcd16b21e076db1c18fd9669128df1d658) )
-
- ROM_REGION( 0x8000, "gfx3", ROMREGION_INVERT ) /* bg layers */
+ ROM_REGION( 0x8000, "gfx2", ROMREGION_INVERT ) /* bg layers */
ROM_LOAD( "8.10e", 0x0000, 0x2000, CRC(f85eb20f) SHA1(699edc970c359143dee6de2a97cc2a552454785b) )
ROM_LOAD( "6.7e", 0x2000, 0x2000, CRC(3e97843f) SHA1(4e4e5625dbf78eca97536b1428b2e49ad58c618f) )
ROM_LOAD( "9.12e", 0x4000, 0x2000, CRC(f1d9915e) SHA1(158e1cc8c402f9ae3906363d99f2b25c94c64212) )
ROM_LOAD( "7.9e", 0x6000, 0x2000, CRC(e350f36c) SHA1(f97204dc95b4000c268afc053a2333c1629e07d8) )
+ ROM_REGION( 0x8000, "gfx3", ROMREGION_INVERT ) /* sprites */
+ ROM_LOAD( "14.19e", 0x0000, 0x2000, CRC(11b491c5) SHA1(be1c4a0fbe8fd4e124c21e0f700efa0428376691) )
+ ROM_LOAD( "13.17e", 0x2000, 0x2000, CRC(ea743986) SHA1(bbef4fd0f7d21cc89a52061fa50d7c2ea37287bd) )
+ ROM_LOAD( "12.16e", 0x4000, 0x2000, CRC(e3779f7f) SHA1(8e12d06b3cdc2fcb7b77cc35f8eca45544cc4873) )
+ ROM_LOAD( "11.14e", 0x6000, 0x2000, CRC(8801b34f) SHA1(256059fcd16b21e076db1c18fd9669128df1d658) )
+
+
ROM_REGION( 0x8000, "sound1", 0 )
ROM_LOAD( "4.12a", 0x0000, 0x8000, CRC(851ed9fd) SHA1(5dc048b612e45da529502bf33d968737a7b0a646) ) /* 8-bit samples */
@@ -169,9 +306,9 @@ ROM_START( flowerj ) /* Sega/Alpha version. Sega game number 834-5998 */
ROM_LOAD( "5.16a", 0x0000, 0x4000, CRC(42fa2853) SHA1(cc1e8b8231d6f27f48b05d59390e93ea1c1c0e4c) ) /* volume tables? */
ROM_REGION( 0x300, "proms", 0 ) /* RGB proms */
- ROM_LOAD( "82s129.k1", 0x0200, 0x0100, CRC(d311ed0d) SHA1(1d530c874aecf93133d610ab3ce668548712913a) ) // r
- ROM_LOAD( "82s129.k2", 0x0100, 0x0100, CRC(ababb072) SHA1(a9d46d12534c8662c6b54df94e96907f3a156968) ) // g
ROM_LOAD( "82s129.k3", 0x0000, 0x0100, CRC(5aab7b41) SHA1(8d44639c7c9f1ba34fe9c4e74c8a38b6453f7ac0) ) // b
+ ROM_LOAD( "82s129.k2", 0x0100, 0x0100, CRC(ababb072) SHA1(a9d46d12534c8662c6b54df94e96907f3a156968) ) // g
+ ROM_LOAD( "82s129.k1", 0x0200, 0x0100, CRC(d311ed0d) SHA1(1d530c874aecf93133d610ab3ce668548712913a) ) // r
ROM_REGION( 0x0520, "user1", 0 ) /* Other proms, (zoom table?) */
ROM_LOAD( "82s147.d7", 0x0000, 0x0200, CRC(f0dbb2a7) SHA1(03cd8fd41d6406894c6931e883a9ac6a4a4effc9) )
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 3b740a5ca89..50a6f03d5a3 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -22,7 +22,7 @@
@MP0905B TMS0970 1977, Parker Brothers Codename Sector
*MP0057 TMS1000 1978, APH Student Speech+ (same ROM contents as TSI Speech+?)
@MP0158 TMS1000 1979, Entex Soccer
- *MP0163 TMS1000 1979, LJN Electronic Concentration
+ @MP0163 TMS1000 1979, A-One LSI Match Number/LJN Electronic Concentration
*MP0168 TMS1000 1979, Conic Basketball/Tandy Sports Arena
@MP0170 TMS1000 1979, Conic Football
*MP0230 TMS1000? 1980, Entex Blast It
@@ -33,7 +33,7 @@
@MP1133 TMS1470 1979, Kosmos Astro
@MP1180 TMS1100 1980, Tomy Power House Pinball
@MP1181 TMS1100 1979, Conic Football 2
- *MP1193 TMS1100 1980, Tandy Championship Football (model 60-2150)
+ @MP1193 TMS1100 1980, Tandy Championship Football (model 60-2150)
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
*MP1209 TMS1100 1980, U.S. Games Space Cruiser/Strategy Football
@MP1211 TMS1100 1980, Entex Space Invader
@@ -82,7 +82,7 @@
@M34012 TMS1100 1980, Mattel Dungeons & Dragons - Computer Labyrinth Game
*M34014 TMS1100 1981, Coleco Bowlatronic
M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter
- *M34018 TMS1100 1981, Coleco Head to Head Boxing
+ @M34018 TMS1100 1981, Coleco Head to Head Boxing
@M34038 TMS1100 1982, Parker Brothers Lost Treasure
M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
*M34078A TMS1100 1983, Milton Bradley Arcade Mania
@@ -155,8 +155,10 @@
#include "gjackpot.lh"
#include "gpoker.lh"
#include "h2hbaseb.lh"
+#include "h2hboxing.lh"
#include "h2hfootb.lh"
#include "lostreas.lh" // clickable
+#include "matchnum.lh" // clickable
#include "mathmagi.lh"
#include "mdndclab.lh" // clickable
#include "merlin.lh" // clickable
@@ -168,10 +170,11 @@
#include "ssimon.lh" // clickable
#include "ssports4.lh"
#include "starwbc.lh" // clickable
-#include "stopthie.lh" // clickable
+#include "stopthief.lh"
#include "tandy12.lh" // clickable
#include "tbreakup.lh"
#include "tc4.lh"
+#include "tcfball.lh"
#include "zodiac.lh"
#include "hh_tms1k_test.lh" // common test-layout - use external artwork
@@ -385,6 +388,137 @@ INPUT_CHANGED_MEMBER(hh_tms1k_state::power_button)
***************************************************************************/
+/***************************************************************************
+
+ A-One LSI Match Number
+ * PCB label PT-204 "Pair Card"
+ * TMS1000NLL MP0163 (die label 1000B, MP0163)
+ * 2x2-digit 7seg LED displays + 3 LEDs, 1-bit sound
+
+ A-One was a subsidiary of Bandai? The PCB serial PT-xxx is same, and the font
+ used on the boxes for "A-One LSI" is same as "Bandai Electronics" from early-80s.
+
+ known releases:
+ - Japan: Match Number (white case, Queen playing card bezel)
+ - USA: Electronic Concentration, distributed by LJN (black case, rainbow pattern bezel)
+ - UK: Electronic Concentration, distributed by Peter Pan Playthings (same as USA version)
+
+***************************************************************************/
+
+class matchnum_state : public hh_tms1k_state
+{
+public:
+ matchnum_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+};
+
+// handlers
+
+void matchnum_state::prepare_display()
+{
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(8, 4, m_o, m_r);
+}
+
+WRITE16_MEMBER(matchnum_state::write_r)
+{
+ // R3-R5,R8-R10: input mux
+ m_inp_mux = (data >> 3 & 7) | (data >> 5 & 0x38);
+
+ // R6,R7: speaker out
+ m_speaker->level_w(data >> 6 & 3);
+
+ // R0-R3: digit/led select
+ m_r = data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(matchnum_state::write_o)
+{
+ // O0-O6: digit segments A-G
+ // O7: led data
+ m_o = data;
+ prepare_display();
+}
+
+READ8_MEMBER(matchnum_state::read_k)
+{
+ // K: multiplexed inputs
+ return read_inputs(6);
+}
+
+
+// config
+
+static INPUT_PORTS_START( matchnum )
+ PORT_START("IN.0") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 16")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 15")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 14")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 13")
+
+ PORT_START("IN.1") // R4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 20")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 19")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 18")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 17")
+
+ PORT_START("IN.2") // R5
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_NAME("Change")
+ PORT_CONFNAME( 0x08, 0x08, "Players" )
+ PORT_CONFSETTING( 0x08, "1" )
+ PORT_CONFSETTING( 0x00, "2" )
+
+ PORT_START("IN.3") // R8
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 12")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 11")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 10")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 9")
+
+ PORT_START("IN.4") // R9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 5")
+
+ PORT_START("IN.5") // R10
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 1")
+INPUT_PORTS_END
+
+static const INT16 matchnum_speaker_levels[4] = { 0, 0x7fff, -0x8000, 0 };
+
+static MACHINE_CONFIG_START( matchnum, matchnum_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1000, 325000) // approximation - RC osc. R=47K, C=47pf
+ MCFG_TMS1XXX_READ_K_CB(READ8(matchnum_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(matchnum_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(matchnum_state, write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_matchnum)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SPEAKER_LEVELS(4, matchnum_speaker_levels)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
/***************************************************************************
APF Mathemagician
@@ -976,13 +1110,13 @@ MACHINE_CONFIG_END
* TMS1100NLLE (rev. E!) MP3460 (die label same)
* 2*SN75492N LED display drivers, 9-digit LED grid, 1-bit sound
+ LED electronic football game. To distinguish between offense and defense,
+ offense blips (should) appear brighter. The hardware is similar to cqback.
+
known releases:
- USA(1): Head to Head Football
- USA(2): Team Play Football, distributed by Sears
- LED electronic football game. To distinguish between offense and defense,
- offense blips (should) appear brighter. The hardware is similar to cqback.
-
***************************************************************************/
class h2hfootb_state : public hh_tms1k_state
@@ -1228,6 +1362,118 @@ MACHINE_CONFIG_END
+/***************************************************************************
+
+ Coleco Head to Head Boxing
+ * TMS1100NLL M34018-N2 (die label M34018)
+ * 2-digit 7seg LED display, LED grid display, 1-bit sound
+
+ This appears to be the last game of Coleco's Head to Head series.
+
+***************************************************************************/
+
+class h2hboxing_state : public hh_tms1k_state
+{
+public:
+ h2hboxing_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+};
+
+// handlers
+
+void h2hboxing_state::prepare_display()
+{
+ set_display_segmask(0x600, 0x7f);
+ display_matrix(8, 11, m_o, m_r);
+}
+
+WRITE16_MEMBER(h2hboxing_state::write_r)
+{
+ // R0-R4: input mux
+ m_inp_mux = data & 0x1f;
+
+ // R8: speaker out
+ m_speaker->level_w(data >> 8 & 1);
+
+ // R0-R7: select led
+ // R9,R10: select digit
+ m_r = data & ~0x100;
+ prepare_display();
+}
+
+WRITE16_MEMBER(h2hboxing_state::write_o)
+{
+ // O0-O7: digit segments/led data
+ m_o = data;
+ prepare_display();
+}
+
+READ8_MEMBER(h2hboxing_state::read_k)
+{
+ // K: multiplexed inputs
+ return read_inputs(5);
+}
+
+
+// config
+
+static INPUT_PORTS_START( h2hboxing )
+ PORT_START("IN.0") // R0
+ PORT_CONFNAME( 0x01, 0x00, "Players" )
+ PORT_CONFSETTING( 0x00, "1" )
+ PORT_CONFSETTING( 0x01, "2" )
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL
+
+ PORT_START("IN.3") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Punch / Pro")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Block / Amateur")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // R4
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Punch")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Block")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( h2hboxing, h2hboxing_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1100, 350000) // approximation - RC osc. R=39K, C=100pf
+ MCFG_TMS1XXX_READ_K_CB(READ8(h2hboxing_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(h2hboxing_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(h2hboxing_state, write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_h2hboxing)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
/***************************************************************************
Coleco Total Control 4
@@ -3627,16 +3873,16 @@ MACHINE_CONFIG_END
* TMC0904NL CP0904A (die label 4A0970D-04A)
* 10 LEDs behind bezel, no sound
- known releases:
- - USA: Comp IV (two versions, different case)
- - Europe: Logic 5
- - Japan: Pythaligoras
-
This is small tabletop Mastermind game; a code-breaking game where the player
needs to find out the correct sequence of colours (numbers in our case).
Press the R key to start, followed by a set of unique numbers and E.
Refer to the official manual for more information.
+ known releases:
+ - USA: Comp IV (two versions, different case)
+ - Europe: Logic 5
+ - Japan: Pythaligoras
+
***************************************************************************/
class comp4_state : public hh_tms1k_state
@@ -4821,7 +5067,7 @@ static MACHINE_CONFIG_START( stopthief, stopthief_state )
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
- MCFG_DEFAULT_LAYOUT(layout_stopthie)
+ MCFG_DEFAULT_LAYOUT(layout_stopthief)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -5171,6 +5417,114 @@ MACHINE_CONFIG_END
+/***************************************************************************
+
+ Tandy Championship Football (model 60-2150)
+ * PCB label CYG-316
+ * TMS1100NLL MP1193 (die label 1100B, MP1193)
+ * 7-digit 7seg LED display + LED grid, 1-bit sound
+
+ Another clone of Mattel Football II. The original manufacturer is unknown.
+
+***************************************************************************/
+
+class tcfball_state : public hh_tms1k_state
+{
+public:
+ tcfball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+};
+
+// handlers
+
+void tcfball_state::prepare_display()
+{
+ // R8 enables leds, R9 enables digits
+ UINT16 mask = ((m_r >> 9 & 1) * 0x7f) | ((m_r >> 8 & 1) * 0x780);
+ UINT16 sel = ((m_r & 0x7f) | (m_r << 7 & 0x780)) & mask;
+
+ set_display_segmask(0x77, 0x7f);
+ set_display_segmask(0x08, 0xff); // R3 has DP
+ display_matrix(8, 11, m_o, sel);
+}
+
+WRITE16_MEMBER(tcfball_state::write_r)
+{
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R5-R7: input mux
+ m_inp_mux = data >> 5 & 7;
+
+ // R8+R0-R3: select led
+ // R9+R0-R6: select digit
+ m_r = data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(tcfball_state::write_o)
+{
+ // O0-O7: digit segments/led data
+ m_o = data;
+ prepare_display();
+}
+
+READ8_MEMBER(tcfball_state::read_k)
+{
+ // K: multiplexed inputs
+ return read_inputs(3);
+}
+
+
+// config
+
+static INPUT_PORTS_START( tcfball )
+ PORT_START("IN.0") // R5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
+
+ PORT_START("IN.1") // R6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("Score")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Status")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pass")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Kick")
+
+ PORT_START("IN.2") // R7
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_CONFNAME( 0x08, 0x00, "Skill Level" )
+ PORT_CONFSETTING( 0x00, "1" ) // college
+ PORT_CONFSETTING( 0x08, "2" ) // professional
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tcfball, tcfball_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1100, 375000) // approximation - RC osc. R=56K, C=24pf
+ MCFG_TMS1XXX_READ_K_CB(READ8(tcfball_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tcfball_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tcfball_state, write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_tcfball)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
/***************************************************************************
Tandy Radio Shack Computerized Arcade (1981, 1982, 1995)
@@ -5333,7 +5687,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- TSI Speech+
+ Telesensory Systems, Inc.(TSI) Speech+
* TMS1000 MCU, label TMS1007NL (die label 1000B, 1007A)
* TSI S14001A speech chip, GI S14007-A 2KB maskrom for samples
* 9-digit 7seg LED display
@@ -5671,7 +6025,7 @@ MACHINE_CONFIG_END
known releases:
- World: Ditto
- USA: Electronic Pocket Repeat (model 60-2152/60-2468A), distributed by Tandy
- model 60-2482 from 1996 is assumed to be a clone of Tiger Copycat Jr.
+ note: 1996 model 60-2482 MCU is a Z8, and is assumed to be a clone of Tiger Copycat Jr.
***************************************************************************/
@@ -6201,6 +6555,17 @@ MACHINE_CONFIG_END
***************************************************************************/
+ROM_START( matchnum )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0163", 0x0000, 0x0400, CRC(37507600) SHA1(b1d4d8ea563e97ef378b42c44cb3ea4eb6abe0d2) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_matchnum_output.pla", 0, 365, CRC(da29670c) SHA1(bcec28bf25dc8c81d08851ad8a3f4e89f413017a) )
+ROM_END
+
+
ROM_START( mathmagi )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp1030", 0x0000, 0x0800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) )
@@ -6267,6 +6632,17 @@ ROM_START( h2hbaseb )
ROM_END
+ROM_START( h2hboxing )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "m34018", 0x0000, 0x0800, CRC(e26a11a3) SHA1(aa2735088d709fa8d9188c4fb7982a53e3a8c1bc) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_h2hboxing_output.pla", 0, 365, CRC(ffb0e63d) SHA1(31ee3f779270a23f05f9ad508283d2569ef069f1) )
+ROM_END
+
+
ROM_START( tc4 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) )
@@ -6585,7 +6961,7 @@ ROM_START( mmerlin )
ROM_END
-ROM_START( stopthie )
+ROM_START( stopthief )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "mp6101b", 0x0000, 0x1000, CRC(8bde5bb4) SHA1(8c318fcce67acc24c7ae361f575f28ec6f94665a) )
@@ -6594,12 +6970,12 @@ ROM_START( stopthie )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
+ ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
-ROM_START( stopthiep )
+ROM_START( stopthiefp )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD16_WORD( "us4341385", 0x0000, 0x1000, CRC(07aec38a) SHA1(0a3d0956495c0d6d9ea771feae6c14a473a800dc) ) // from patent US4341385, data should be correct (it included checksums)
@@ -6608,7 +6984,7 @@ ROM_START( stopthiep )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
+ ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -6647,6 +7023,17 @@ ROM_START( lostreas )
ROM_END
+ROM_START( tcfball )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1193", 0x0000, 0x0800, CRC(7d9f446f) SHA1(bb6af47b42d989494f21475a73f072cddf58c99f) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_tcfball_output.pla", 0, 365, CRC(26b2996e) SHA1(df0e706c552bf74123aa65e71b0c9b4d33cddb2b) )
+ROM_END
+
+
ROM_START( tandy12 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "cd7282sl", 0x0000, 0x0800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) )
@@ -6682,16 +7069,6 @@ ROM_START( copycat )
ROM_LOAD( "tms1000_copycat_output.pla", 0, 365, CRC(b1d0c96d) SHA1(ac1a003eab3f69e09e9050cb24ea17211e0523fe) )
ROM_END
-ROM_START( ditto )
- ROM_REGION( 0x0200, "maincpu", 0 )
- ROM_LOAD( "mp1801", 0x0000, 0x0200, CRC(cee6043b) SHA1(4ec334be6835688413637ff9d9d7a5f0d61eba27) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_ditto_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_ditto_output.pla", 0, 365, CRC(2b708a27) SHA1(e95415e51ffbe5da3bde1484fcd20467dde9f09a) )
-ROM_END
-
ROM_START( copycatm2 )
ROM_REGION( 0x0200, "maincpu", 0 )
ROM_LOAD( "mp3005n", 0x0000, 0x0200, CRC(a87649cb) SHA1(14ef7967a80578885f0b905772c3bb417b5b3255) )
@@ -6703,6 +7080,17 @@ ROM_START( copycatm2 )
ROM_END
+ROM_START( ditto )
+ ROM_REGION( 0x0200, "maincpu", 0 )
+ ROM_LOAD( "mp1801", 0x0000, 0x0200, CRC(cee6043b) SHA1(4ec334be6835688413637ff9d9d7a5f0d61eba27) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_ditto_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_ditto_output.pla", 0, 365, CRC(2b708a27) SHA1(e95415e51ffbe5da3bde1484fcd20467dde9f09a) )
+ROM_END
+
+
ROM_START( tbreakup )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "mp2726a", 0x0000, 0x0400, CRC(1f7c28e2) SHA1(164cda4eb3f0b1d20955212a197c9aadf8d18a06) )
@@ -6738,6 +7126,8 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
+CONS( 1979, matchnum, 0, 0, matchnum, matchnum, driver_device, 0, "A-One LSI", "Match Number", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
CONS( 1978, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // ***
@@ -6745,6 +7135,7 @@ COMP( 1979, zodiac, 0, 0, zodiac, zodiac, driver_device, 0, "Col
CONS( 1978, cqback, 0, 0, cqback, cqback, driver_device, 0, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE )
CONS( 1980, h2hfootb, 0, 0, h2hfootb, h2hfootb, driver_device, 0, "Coleco", "Head to Head Football", MACHINE_SUPPORTS_SAVE )
CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, driver_device, 0, "Coleco", "Head to Head Baseball", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, h2hboxing, 0, 0, h2hboxing, h2hboxing, driver_device, 0, "Coleco", "Head to Head Boxing", MACHINE_SUPPORTS_SAVE )
CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, cnfball, 0, 0, cnfball, cnfball, driver_device, 0, "Conic", "Electronic Football (Conic, TMS1000 version)", MACHINE_SUPPORTS_SAVE )
@@ -6781,13 +7172,14 @@ CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Mil
CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) // ***
CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // ***
-CONS( 1979, stopthiep, stopthie, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // ***
+CONS( 1979, stopthief, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // ***
+CONS( 1979, stopthiefp,stopthief,0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // ***
CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", MACHINE_SUPPORTS_SAVE )
CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", MACHINE_SUPPORTS_SAVE )
CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1982, lostreas, 0, 0, lostreas, lostreas, driver_device, 0, "Parker Brothers", "Lost Treasure - The Electronic Deep-Sea Diving Game (Electronic Dive-Control Center)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // ***
+CONS( 1980, tcfball, 0, 0, tcfball, tcfball, driver_device, 0, "Tandy Radio Shack", "Championship Football (model 60-2150)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: ***
COMP( 1976, speechp, 0, 0, speechp, speechp, driver_device, 0, "Telesensory Systems, Inc.", "Speech+", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp
index c7dc6ccd9b6..781b8f4ba36 100644
--- a/src/mame/drivers/ksys573.cpp
+++ b/src/mame/drivers/ksys573.cpp
@@ -2876,6 +2876,8 @@ INPUT_PORTS_END
ROMX_LOAD( "700a01(gchgchmp).22g", 0x000000, 0x080000, CRC(39ebb0ca) SHA1(9aab8c637dd2be84d79007e52f108abe92bf29dd), ROM_BIOS(2) ) \
ROM_SYSTEM_BIOS( 2, "dsem2", "Found on Dancing Stage Euro Mix 2" ) \
ROMX_LOAD( "700b01.22g", 0x0000000, 0x080000, CRC(6cf852af) SHA1(a2421d0a494892c0e71003c96995ce8f945064dd), ROM_BIOS(3) ) \
+ ROM_REGION( 0x8000, "mcu", 0 ) \
+ ROM_LOAD( "hd6473644h.18e", 0, 0x8000, NO_DUMP) \
ROM_REGION( 0x40, "h8_response", 0 ) \
ROMX_LOAD( "h8a01.bin", 0x000000, 0x000040, CRC(131e0359) SHA1(967f66578ebc0cf6b044d71af09b59bce1f4a1d0), ROM_BIOS(1) ) \
ROMX_LOAD( "h8a01.bin", 0x000000, 0x000040, CRC(131e0359) SHA1(967f66578ebc0cf6b044d71af09b59bce1f4a1d0), ROM_BIOS(2) ) \
diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp
index 2eb9135e825..3c448e3912f 100644
--- a/src/mame/drivers/model3.cpp
+++ b/src/mame/drivers/model3.cpp
@@ -2565,6 +2565,81 @@ ROM_START( scudplusa ) /* step 1.5, Sega game ID# is 833-13260 SCUD PLUS, ROM b
ROM_END
ROM_START( vf3 ) /* step 1.0, Sega game ID# is 833-12712, ROM board ID# 834-12821 */
+ ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
+ // CROM
+ ROM_LOAD64_WORD_SWAP( "epr-19227d.17", 0x600006, 0x080000, CRC(8b650966) SHA1(a21627c353d65b4c80e1b10f1d864380a15bec91) )
+ ROM_LOAD64_WORD_SWAP( "epr-19228d.18", 0x600004, 0x080000, CRC(a2470c78) SHA1(7691fc259676e49a1aaa50efdd7c74c5e996fcf9) )
+ ROM_LOAD64_WORD_SWAP( "epr-19229d.19", 0x600002, 0x080000, CRC(6773f715) SHA1(84122773bdf53c2b427c5f515d125fb9e787e36c) )
+ ROM_LOAD64_WORD_SWAP( "epr-19230d.20", 0x600000, 0x080000, CRC(43c08240) SHA1(eae684b6c1f4d32c9149b3b8a14c1ad9b21b8d8a) )
+
+ // CROM0
+ ROM_LOAD64_WORD_SWAP( "mpr-19193.1", 0x800006, 0x400000, CRC(7bab33d2) SHA1(243a09959f3c4311070f1de760ee63958cd47660) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19194.2", 0x800004, 0x400000, CRC(66254702) SHA1(843ac4f6791f312f3138f8f38d38c8e4d2bab305) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19195.3", 0x800002, 0x400000, CRC(bd5e27a3) SHA1(778c67bf7b5c7e3ae52fe12308a81b095563f52b) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19196.4", 0x800000, 0x400000, CRC(f386b850) SHA1(168d21382359acb8f1d52d722de8c6b9a9210378) )
+
+ // CROM1
+ ROM_LOAD64_WORD_SWAP( "mpr-19197.5", 0x1800006, 0x400000, CRC(a22d76c9) SHA1(ad2d67a62436ccc6479e2a218ab09d2fc22c367d) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19198.6", 0x1800004, 0x400000, CRC(d8ee5032) SHA1(3e9274142874ace76dba2bc9b5351cfdfb3a50cd) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19199.7", 0x1800002, 0x400000, CRC(9f80d6fe) SHA1(97b9076d413e28d00e9c45fcc7dad6f534ca8874) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19200.8", 0x1800000, 0x400000, CRC(74941091) SHA1(914db3955f355779147d86446f5976121191ea6d) )
+
+ // CROM2
+ ROM_LOAD64_WORD_SWAP( "mpr-19201.9", 0x2800006, 0x400000, CRC(7c4a8c31) SHA1(473b7bef932d7d54a5dc06bd80d286f2e2e96d44) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19202.10", 0x2800004, 0x400000, CRC(aaa086c6) SHA1(01871c8e5454aed80e907fde199cfb23a57aa1c2) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19203.11", 0x2800002, 0x400000, CRC(0afa6334) SHA1(1bb70e823fb6e05df069cbfafed2e57bda8776b9) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19204.12", 0x2800000, 0x400000, CRC(2f93310a) SHA1(3dfc5b72a78967d7772da4098adb41f18b5294d4) )
+
+ // CROM3
+ ROM_LOAD64_WORD_SWAP( "mpr-19205.13", 0x3800006, 0x400000, CRC(199c328e) SHA1(1ef1f09ff1f5253bf03e06c5b6e42be9599b9ea5) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19206.14", 0x3800004, 0x400000, CRC(71a98d73) SHA1(dda617f9f5f986e3369fa3d3090c423eefdf913c) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19207.15", 0x3800002, 0x400000, CRC(2ce1612d) SHA1(736f559d460f0069c7a2d5ba7cddf9135737d6e2) )
+ ROM_LOAD64_WORD_SWAP( "mpr-19208.16", 0x3800000, 0x400000, CRC(08f30f71) SHA1(393525b19cdecddfbd62c6209203db5f3edfd9a8) )
+
+ // mirror CROM0 to CROM
+ ROM_COPY("user1", 0x800000, 0x000000, 0x600000)
+
+ ROM_REGION( 0x1000000, "user3", 0 ) /* Video ROMs Part 1 */
+ ROM_LOAD_VROM( "mpr-19211.26", 0x000002, 0x200000, CRC(9c8f5df1) SHA1(d47c8bd0189c8e617a3ed9f75ee3812a229f56c0) )
+ ROM_LOAD_VROM( "mpr-19212.27", 0x000000, 0x200000, CRC(75036234) SHA1(01a20a6a62408017bff8f2e76dbd21c00275bc70) )
+ ROM_LOAD_VROM( "mpr-19213.28", 0x000006, 0x200000, CRC(67b123cf) SHA1(b84c4f83c25edcc8ac929d3f9cf51da713045071) )
+ ROM_LOAD_VROM( "mpr-19214.29", 0x000004, 0x200000, CRC(a6f5576b) SHA1(e994b3ef8e6eb07e8f3bbe474410c06d6c42354b) )
+ ROM_LOAD_VROM( "mpr-19215.30", 0x00000a, 0x200000, CRC(c6fd9f0d) SHA1(1f3299706d6ac73836c069a7ed2866d412f60369) )
+ ROM_LOAD_VROM( "mpr-19216.31", 0x000008, 0x200000, CRC(201bb1ed) SHA1(7ffd72ff56159529d74f01f8da0ba4798f109806) )
+ ROM_LOAD_VROM( "mpr-19217.32", 0x00000e, 0x200000, CRC(4dadd41a) SHA1(7a1e0908962afcfc737132478c0e45d153d94ecb) )
+ ROM_LOAD_VROM( "mpr-19218.33", 0x00000c, 0x200000, CRC(cff91953) SHA1(41e95704a65958377c3bbd9d00d90a5ad4552f66) )
+
+ ROM_REGION( 0x1000000, "user4", 0 ) /* Video ROMs Part 2 */
+ ROM_LOAD_VROM( "mpr-19219.34", 0x000002, 0x200000, CRC(c610d521) SHA1(cb146fe78d89176e9dd5c773644614cdc2ef57ce) )
+ ROM_LOAD_VROM( "mpr-19220.35", 0x000000, 0x200000, CRC(e62924d0) SHA1(4d1ac11a5977a4e9cf942c9f1204960c0a895347) )
+ ROM_LOAD_VROM( "mpr-19221.36", 0x000006, 0x200000, CRC(24f83e3c) SHA1(c587428fa47e849881bf45487af086db6b09264e) )
+ ROM_LOAD_VROM( "mpr-19222.37", 0x000004, 0x200000, CRC(61a6aa7d) SHA1(cc26020b2f904f68822111073b595ee0cc8b2e0c) )
+ ROM_LOAD_VROM( "mpr-19223.38", 0x00000a, 0x200000, CRC(1a8c1980) SHA1(43b8efb019c8a20fe38f95050fe60dfe9bf322f0) )
+ ROM_LOAD_VROM( "mpr-19224.39", 0x000008, 0x200000, CRC(0a79a1bd) SHA1(1df71cf77ea8611462380a449eb99199664b3da3) )
+ ROM_LOAD_VROM( "mpr-19225.40", 0x00000e, 0x200000, CRC(91a985eb) SHA1(5a842a260e4a78f5463222db44f13b068fa70b23) )
+ ROM_LOAD_VROM( "mpr-19226.41", 0x00000c, 0x200000, CRC(00091722) SHA1(ef86db36b4b91a66b3e401c3c91735b9d28da2e2) )
+
+ ROM_REGION( 0x100000, "audiocpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "epr-19231.21", 0x080000, 0x080000, CRC(b416fe96) SHA1(b508eb6802072a8d4f8fdc7ca4fba6c6a4aaadae) )
+
+ ROM_REGION( 0x800000, "samples", 0 ) /* SCSP samples */
+ ROM_LOAD( "mpr-19209.22", 0x000000, 0x400000, CRC(3715e38c) SHA1(b11dbf8a5840990e9697c53b4796cd70ad91f6a1) )
+ ROM_LOAD( "mpr-19210.24", 0x400000, 0x400000, CRC(c03d6502) SHA1(4ca49fe5dd5105ca5f78f4740477beb64137d4be) )
+
+ ROM_REGION( 0x20000, "cpu2", 0 ) /* Z80 code */
+ ROM_FILL( 0x000000, 0x20000, 0x0000 )
+
+ ROM_REGION( 0x800000, "dsb", 0 ) /* DSB samples */
+ ROM_FILL( 0x000000, 0x800000, 0x0000 )
+
+ ROM_REGION( 0x80000, "scsp1", 0 ) /* first SCSP's RAM */
+ ROM_FILL( 0x000000, 0x80000, 0x0000 )
+
+ ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
+ ROM_FILL( 0x000000, 0x80000, 0x0000 )
+ROM_END
+
+ROM_START( vf3c ) /* step 1.0, Sega game ID# is 833-12712, ROM board ID# 834-12821 */
ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
// CROM
ROM_LOAD64_WORD_SWAP( "epr-19227c.17", 0x600006, 0x080000, CRC(a7df4d75) SHA1(1b1186227f830556c5e2b6ca4c2bf20673b22f94) )
@@ -6060,7 +6135,8 @@ DRIVER_INIT_MEMBER(model3_state,lamachin)
/* Model 3 Step 1.0 */
-GAME( 1996, vf3, 0, model3_10, model3, model3_state, vf3, ROT0, "Sega", "Virtua Fighter 3 (Revision C)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, vf3, 0, model3_10, model3, model3_state, vf3, ROT0, "Sega", "Virtua Fighter 3 (Revision D)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, vf3c, vf3, model3_10, model3, model3_state, vf3, ROT0, "Sega", "Virtua Fighter 3 (Revision C)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1996, vf3a, vf3, model3_10, model3, model3_state, vf3, ROT0, "Sega", "Virtua Fighter 3 (Revision A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1996, vf3tb, vf3, model3_10, model3, model3_state, model3_10, ROT0, "Sega", "Virtua Fighter 3 Team Battle", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, bass, 0, model3_10, bass, model3_state, bass, ROT0, "Sega", "Sega Bass Fishing (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp
index e043d21c61c..5e261adada5 100644
--- a/src/mame/drivers/namcos1.cpp
+++ b/src/mame/drivers/namcos1.cpp
@@ -2701,7 +2701,8 @@ ROM_START( puzlclub )
ROM_LOAD( "pc1-c4.bin", 0x80000, 0x20000, CRC(f1c95296) SHA1(f093c4227b4f6f524a76d0b9409c2c6ce33e560b) )
ROM_LOAD( "pc1-c5.bin", 0xa0000, 0x20000, CRC(bc443c27) SHA1(af841b6a2b783b0d9b9bbc33083afbb56e8bff69) )
ROM_LOAD( "pc1-c6.bin", 0xc0000, 0x20000, CRC(ec0a3dc5) SHA1(a5148e99f3198196fd635ff4ac0275393e6f7033) )
-
+ ROM_LOAD( "pc1-c7.bin", 0xe0000, 0x20000, NO_DUMP ) // title screen gfxs are here, might not exist.
+
ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASEFF ) /* sprites */
/* no sprites */
ROM_END
diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp
index eefe29baa84..0f7c50cafb4 100644
--- a/src/mame/drivers/octopus.cpp
+++ b/src/mame/drivers/octopus.cpp
@@ -115,7 +115,14 @@ Its BIOS performs POST and halts as there's no keyboard.
#include "machine/mc146818.h"
#include "machine/i8255.h"
#include "machine/wd_fdc.h"
+#include "machine/i8251.h"
+#include "machine/clock.h"
#include "imagedev/floppy.h"
+#include "machine/pit8253.h"
+#include "sound/speaker.h"
+#include "machine/octo_kbd.h"
+#include "machine/bankdev.h"
+#include "machine/ram.h"
class octopus_state : public driver_device
{
@@ -135,10 +142,19 @@ public:
m_fdc(*this, "fdc"),
m_floppy0(*this, "fdc:0"),
m_floppy1(*this, "fdc:1"),
- m_current_dma(-1)
+ m_kb_uart(*this, "keyboard"),
+ m_pit(*this, "pit"),
+ m_speaker(*this, "speaker"),
+ m_z80_bankdev(*this, "z80_bank"),
+ m_ram(*this, "main_ram"),
+ m_current_dma(-1),
+ m_speaker_active(false),
+ m_beep_active(false),
+ m_z80_active(false)
{ }
virtual void machine_reset() override;
+ virtual void machine_start() override;
virtual void video_start() override;
SCN2674_DRAW_CHARACTER_MEMBER(display_pixels);
DECLARE_READ8_MEMBER(vram_r);
@@ -158,6 +174,13 @@ public:
DECLARE_WRITE8_MEMBER(gpo_w);
DECLARE_READ8_MEMBER(vidcontrol_r);
DECLARE_WRITE8_MEMBER(vidcontrol_w);
+ DECLARE_READ8_MEMBER(z80_io_r);
+ DECLARE_WRITE8_MEMBER(z80_io_w);
+ IRQ_CALLBACK_MEMBER(x86_irq_cb);
+
+ DECLARE_WRITE_LINE_MEMBER(spk_w);
+ DECLARE_WRITE_LINE_MEMBER(spk_freq_w);
+ DECLARE_WRITE_LINE_MEMBER(beep_w);
DECLARE_WRITE_LINE_MEMBER(dack0_w) { m_dma1->hack_w(state ? 0 : 1); } // for all unused DMA channel?
DECLARE_WRITE_LINE_MEMBER(dack1_w) { if(!state) m_current_dma = 1; else if(m_current_dma == 1) m_current_dma = -1; } // HD
@@ -167,6 +190,15 @@ public:
DECLARE_WRITE_LINE_MEMBER(dack5_w) { if(!state) m_current_dma = 5; else if(m_current_dma == 5) m_current_dma = -1; } // Floppy
DECLARE_WRITE_LINE_MEMBER(dack6_w) { m_dma1->hack_w(state ? 0 : 1); }
DECLARE_WRITE_LINE_MEMBER(dack7_w) { m_dma1->hack_w(state ? 0 : 1); }
+
+ enum
+ {
+ BEEP_TIMER = 100
+ };
+
+protected:
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
required_device m_maincpu;
required_device m_subcpu;
@@ -181,6 +213,11 @@ private:
required_device m_fdc;
required_device m_floppy0;
required_device m_floppy1;
+ required_device m_kb_uart;
+ required_device m_pit;
+ required_device m_speaker;
+ required_device m_z80_bankdev;
+ required_device m_ram;
UINT8 m_hd_bank; // HD bank select
UINT8 m_fd_bank; // Floppy bank select
@@ -190,21 +227,25 @@ private:
UINT8 m_cntl; // RTC / FDC control (PPI port B)
UINT8 m_gpo; // General purpose outputs (PPI port C)
UINT8 m_vidctrl;
+ bool m_speaker_active;
+ bool m_beep_active;
+ bool m_speaker_level;
+ bool m_z80_active;
+
+ emu_timer* m_timer_beep;
};
static ADDRESS_MAP_START( octopus_mem, AS_PROGRAM, 8, octopus_state )
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
+ AM_RANGE(0x00000, 0x1ffff) AM_RAMBANK("main_ram_bank")
// second 128kB for 256kB system
// expansion RAM, up to 512kB extra
AM_RANGE(0x20000, 0xcffff) AM_NOP
AM_RANGE(0xd0000, 0xdffff) AM_RAM AM_SHARE("vram")
AM_RANGE(0xe0000, 0xe3fff) AM_NOP
AM_RANGE(0xe4000, 0xe5fff) AM_RAM AM_SHARE("fram")
- AM_RANGE(0xe6000, 0xf3fff) AM_NOP
- AM_RANGE(0xf4000, 0xf5fff) AM_ROM AM_REGION("chargen",0)
- AM_RANGE(0xf6000, 0xfbfff) AM_NOP
+ AM_RANGE(0xe6000, 0xe7fff) AM_ROM AM_REGION("chargen",0)
+ AM_RANGE(0xe8000, 0xfbfff) AM_NOP
AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0)
ADDRESS_MAP_END
@@ -215,10 +256,10 @@ static ADDRESS_MAP_START( octopus_io, AS_IO, 8, octopus_state )
AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWA")
AM_RANGE(0x21, 0x2f) AM_READWRITE(system_r, system_w)
AM_RANGE(0x31, 0x33) AM_READWRITE(bank_sel_r, bank_sel_w)
- // 0x50-51: Keyboard (i8251)
- AM_RANGE(0x50, 0x51) AM_NOP
+ AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("keyboard", i8251_device, data_r, data_w)
+ AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("keyboard", i8251_device, status_r, control_w)
// 0x70-73: HD controller
- // 0x80-83: serial timers (i8253)
+ AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("pit", pit8253_device, read, write)
// 0xa0-a3: serial interface (Z80 SIO/2)
AM_RANGE(0xb0, 0xb1) AM_DEVREADWRITE("pic_master", pic8259_device, read, write)
AM_RANGE(0xb4, 0xb5) AM_DEVREADWRITE("pic_slave", pic8259_device, read, write)
@@ -236,11 +277,12 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( octopus_sub_mem, AS_PROGRAM, 8, octopus_state )
- ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("z80_bank", address_map_bank_device, read8, write8)
ADDRESS_MAP_END
static ADDRESS_MAP_START( octopus_sub_io, AS_IO, 8, octopus_state )
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_io_r, z80_io_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( octopus_vram, AS_0, 8, octopus_state )
@@ -275,6 +317,15 @@ static INPUT_PORTS_START( octopus )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
INPUT_PORTS_END
+void octopus_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch(id)
+ {
+ case BEEP_TIMER: // switch off speaker
+ m_beep_active = false;
+ break;
+ }
+}
WRITE8_MEMBER(octopus_state::vram_w)
{
@@ -319,6 +370,7 @@ WRITE8_MEMBER(octopus_state::bank_sel_w)
break;
case 2:
m_z80_bank = data;
+ m_z80_bankdev->set_bank(m_z80_bank & 0x0f);
logerror("Z80/RAM bank = %i\n",data);
break;
}
@@ -332,7 +384,15 @@ WRITE8_MEMBER(octopus_state::bank_sel_w)
// 0x28: write: Z80 enable
WRITE8_MEMBER(octopus_state::system_w)
{
- logerror("SYS: System control offset %i data %02x\n",offset,data);
+ logerror("SYS: System control offset %i data %02x\n",offset+1,data);
+ switch(offset)
+ {
+ case 7: // enable Z80, halt 8088
+ m_subcpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_z80_active = true;
+ break;
+ }
}
READ8_MEMBER(octopus_state::system_r)
@@ -340,12 +400,26 @@ READ8_MEMBER(octopus_state::system_r)
switch(offset)
{
case 0:
- return 0x1f; // do bits 0-4 mean anything? Language?
+ return 0x1f; // do bits 0-4 mean anything? Language DIPs?
}
return 0xff;
}
+// Any I/O cycle relinquishes control of the bus
+READ8_MEMBER(octopus_state::z80_io_r)
+{
+ z80_io_w(space,offset,0);
+ return 0x00;
+}
+
+WRITE8_MEMBER(octopus_state::z80_io_w)
+{
+ m_subcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_z80_active = false;
+}
+
// RTC/FDC control - PPI port B
// bit4-5: write precomp.
// bit6-7: drive select
@@ -416,6 +490,32 @@ WRITE8_MEMBER(octopus_state::vidcontrol_w)
m_fdc->set_unscaled_clock((data & 0x08) ? XTAL_16MHz / 16 : XTAL_16MHz / 8);
}
+// Sound hardware
+// Sound level provided by i8253 timer 2
+// Enabled by /DTR signal from i8251
+// 100ms beep triggered by pulsing /CTS signal low on i8251
+WRITE_LINE_MEMBER(octopus_state::spk_w)
+{
+ m_speaker_active = !state;
+ m_speaker->level_w(((m_speaker_active || m_beep_active) && m_speaker_level) ? 1 : 0);
+}
+
+WRITE_LINE_MEMBER(octopus_state::spk_freq_w)
+{
+ m_speaker_level = state;
+ m_speaker->level_w(((m_speaker_active || m_beep_active) && m_speaker_level) ? 1 : 0);
+}
+
+WRITE_LINE_MEMBER(octopus_state::beep_w)
+{
+ if(!state) // active low
+ {
+ m_beep_active = true;
+ m_speaker->level_w(((m_speaker_active || m_beep_active) && m_speaker_level) ? 1 : 0);
+ m_timer_beep->adjust(attotime::from_msec(100));
+ }
+}
+
READ8_MEMBER(octopus_state::dma_read)
{
UINT8 byte;
@@ -442,11 +542,32 @@ WRITE_LINE_MEMBER( octopus_state::dma_hrq_changed )
m_dma2->hack_w(state);
}
+// Any interrupt will also give bus control back to the 8088
+IRQ_CALLBACK_MEMBER(octopus_state::x86_irq_cb)
+{
+ m_subcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_z80_active = false;
+ return m_pic1->inta_cb(device,irqline);
+}
+
+void octopus_state::machine_start()
+{
+ m_timer_beep = timer_alloc(BEEP_TIMER);
+
+ // install extra RAM
+ if(m_ram->size() > 0x20000)
+ m_maincpu->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,"extra_ram_bank");
+}
+
void octopus_state::machine_reset()
{
- m_subcpu->set_input_line(INPUT_LINE_HALT,ASSERT_LINE); // halt Z80 to start with
+ m_subcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); // halt Z80 to start with
+ m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_z80_active = false;
m_current_dma = -1;
m_current_drive = 0;
+ membank("main_ram_bank")->set_base(m_ram->pointer());
}
void octopus_state::video_start()
@@ -477,12 +598,16 @@ static SLOT_INTERFACE_START( octopus_floppies )
SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
SLOT_INTERFACE_END
+static SLOT_INTERFACE_START(keyboard)
+ SLOT_INTERFACE("octopus", OCTOPUS_KEYBOARD)
+SLOT_INTERFACE_END
+
static MACHINE_CONFIG_START( octopus, octopus_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",I8088, XTAL_24MHz / 3) // 8MHz
MCFG_CPU_PROGRAM_MAP(octopus_mem)
MCFG_CPU_IO_MAP(octopus_io)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic_master", pic8259_device, inta_cb)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(octopus_state, x86_irq_cb)
MCFG_CPU_ADD("subcpu",Z80, XTAL_24MHz / 4) // 6MHz
MCFG_CPU_PROGRAM_MAP(octopus_sub_mem)
@@ -533,17 +658,39 @@ static MACHINE_CONFIG_START( octopus, octopus_state )
MCFG_I8255_OUT_PORTB_CB(WRITE8(octopus_state,cntl_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(octopus_state,gpo_w))
MCFG_MC146818_ADD("rtc", XTAL_32_768kHz)
- MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic_slave",pic8259_device, ir4_w))
+ MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic_slave",pic8259_device, ir2_w))
+ // Keyboard UART
+ MCFG_DEVICE_ADD("keyboard", I8251, 0)
+ MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic_slave",pic8259_device, ir4_w))
+ MCFG_I8251_DTR_HANDLER(WRITELINE(octopus_state,spk_w))
+ MCFG_I8251_RTS_HANDLER(WRITELINE(octopus_state,beep_w))
+ MCFG_RS232_PORT_ADD("keyboard_port", keyboard, "octopus")
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("keyboard", i8251_device, write_rxd))
+ MCFG_RS232_DSR_HANDLER(DEVWRITELINE("keyboard", i8251_device, write_dsr))
+ MCFG_DEVICE_ADD("keyboard_clock_rx", CLOCK, 9600 * 64)
+ MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("keyboard",i8251_device,write_rxc))
+ MCFG_DEVICE_ADD("keyboard_clock_tx", CLOCK, 1200 * 64)
+ MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("keyboard",i8251_device,write_txc))
+
MCFG_FD1793_ADD("fdc",XTAL_16MHz / 8)
MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE("pic_master",pic8259_device, ir5_w))
MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("dma2",am9517a_device, dreq1_w))
MCFG_FLOPPY_DRIVE_ADD("fdc:0", octopus_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", octopus_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_DEVICE_ADD("pit", PIT8253, 0)
+ MCFG_PIT8253_CLK0(500) // DART channel A
+ MCFG_PIT8253_CLK1(500) // DART channel B
+ MCFG_PIT8253_CLK2(2457500) // speaker frequency
+ MCFG_PIT8253_OUT2_HANDLER(WRITELINE(octopus_state,spk_freq_w))
+
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
// TODO: add components
// i8253 PIT timer (speaker output, serial timing, other stuff too?)
- // i8251 serial controller (keyboard)
// Centronics parallel interface
// Z80SIO/2 (serial)
// Winchester HD controller (Xebec/SASI compatible? uses TTL logic)
@@ -564,6 +711,16 @@ static MACHINE_CONFIG_START( octopus, octopus_state )
MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(octopus_state, display_pixels)
MCFG_DEVICE_ADDRESS_MAP(AS_0, octopus_vram)
+ MCFG_DEVICE_ADD("z80_bank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(octopus_mem)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
+
+ MCFG_RAM_ADD("main_ram")
+ MCFG_RAM_DEFAULT_SIZE("128K")
+ MCFG_RAM_EXTRA_OPTIONS("256K")
+
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp
index 1303062ee38..d826646d42c 100644
--- a/src/mame/drivers/overdriv.cpp
+++ b/src/mame/drivers/overdriv.cpp
@@ -298,6 +298,7 @@ void overdriv_state::machine_start()
save_item(NAME(m_sprite_colorbase));
save_item(NAME(m_zoom_colorbase));
save_item(NAME(m_road_colorbase));
+ save_item(NAME(m_fake_timer));
}
void overdriv_state::machine_reset()
diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp
index 8a66854e457..689d2ace928 100644
--- a/src/mame/drivers/saturn.cpp
+++ b/src/mame/drivers/saturn.cpp
@@ -591,12 +591,67 @@ void sat_console_state::nvram_init(nvram_device &nvram, void *data, size_t size)
memcpy(data, init, sizeof(init));
}
+void saturn_state::debug_scuirq_command(int ref, int params, const char **param)
+{
+ debugger_console con = machine().debugger().console();
+ const char *const irqnames[16] = {
+ "VBlank-in", "VBlank-out", "HBlank-in", "Timer 0", "Timer 1", "SCU DSP end", "Sound request", "SMPC", "Pad", "DMA lv 2", "DMA lv 1", "DMA lv 0", "DMA illegal", "VDP1 end", "A-Bus" };
+
+
+ for(int irq_lv = 0;irq_lv<16;irq_lv++)
+ con.printf("%s irq enabled: %s\n",irqnames[irq_lv],(m_scu.ism & (1 << irq_lv)) == 0 ? "1" : "0");
+}
+
+void saturn_state::debug_scudma_command(int ref, int params, const char **param)
+{
+ debugger_console con = machine().debugger().console();
+
+ for(int ch=0;ch<3;ch++)
+ {
+ con.printf("DMA LV%02d: src = %08x dst = %08x size = %08x\n",ch,m_scu.src[ch],m_scu.dst[ch],m_scu.size[ch]);
+ con.printf(" adds: src = %08x dst = %08x\n",m_scu.src_add[ch],m_scu.dst_add[ch]);
+ con.printf("indirect: index = %08x\n",m_scu.index[ch]);
+ con.printf(" enable: mask = %08x start factor = %08x\n",m_scu.enable_mask[ch],m_scu.start_factor[ch]);
+ }
+}
+
+void saturn_state::debug_help_command(int ref, int params, const char **param)
+{
+ debugger_console con = machine().debugger().console();
+
+ con.printf("Available Saturn commands:\n");
+ con.printf(" saturn scudma -- pretty prints current state of SCU DMA registers\n");
+ con.printf(" saturn scuirq -- pretty prints current state of SCU IRQ registers\n");
+ con.printf(" saturn help -- this list\n");
+}
+
+
+void saturn_state::debug_commands(int ref, int params, const char **param)
+{
+ if (params < 1)
+ return;
+
+ if (strcmp("scudma", param[0]) == 0)
+ debug_scudma_command(ref, params - 1, param + 1);
+ else if(strcmp("scuirq", param[0]) == 0)
+ debug_scuirq_command(ref, params - 1, param + 1);
+ else if(strcmp("help", param[0]) == 0)
+ debug_help_command(ref, params - 1, param + 1);
+}
+
MACHINE_START_MEMBER(sat_console_state, saturn)
{
system_time systime;
machine().base_datetime(systime);
+ if (machine().debug_flags & DEBUG_FLAG_ENABLED)
+ {
+ //printf("HI!\n");
+ using namespace std::placeholders;
+ machine().debugger().console().register_command("saturn", CMDFLAG_NONE, 0, 1, 4, std::bind(&saturn_state::debug_commands, this, _1, _2, _3));
+ }
+
machine().device("scsp")->set_ram_base(m_sound_ram);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this));
diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp
index 730cedbce28..ac875723425 100644
--- a/src/mame/drivers/snk6502.cpp
+++ b/src/mame/drivers/snk6502.cpp
@@ -1526,6 +1526,32 @@ ROM_START( nibbler6 ) /* revision 6 */
ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
ROM_END
+ROM_START( nibblera ) /* revision ??? */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "2732.ic12", 0x3000, 0x1000, CRC(e569937b) SHA1(6ee9aa528cc3f0685153b3170f41b9a665d358e0) )
+ ROM_LOAD( "2732.ic07", 0x4000, 0x1000, CRC(7f9d715c) SHA1(59fbdbb55dceaa86235911589395fa5243e44afe) )
+ ROM_LOAD( "2732.ic08", 0x5000, 0x1000, CRC(e46eb1c9) SHA1(b70a14085985096eb6650f3d06343a20d75e61b5) )
+ ROM_LOAD( "2732.ic09", 0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) )
+ ROM_LOAD( "2732.ic10", 0x7000, 0x1000, BAD_DUMP CRC(746e94cd) SHA1(284696722857900760d35f1f8ef53290deddac20) ) // FIXED BITS (xxx1xxxx)
+ ROM_LOAD( "2732.ic14", 0x8000, 0x1000, CRC(48ec4af0) SHA1(9b4b80c288d5ade998c0bbcfc3868c9dcd438707) )
+ ROM_RELOAD( 0xf000, 0x1000 ) /* for the reset and interrupt vectors */
+ ROM_LOAD( "2732.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
+ ROM_LOAD( "2732.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
+ ROM_LOAD( "2732.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "2732.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
+ ROM_LOAD( "2732.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
+
+ ROM_REGION( 0x0040, "proms", 0 )
+ ROM_LOAD( "g-0708-05.ic7", 0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
+ ROM_LOAD( "g-0708-04.ic6", 0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
+
+ ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF ) /* sound ROMs */
+ ROM_LOAD( "2732.ic52", 0x0800, 0x0800, CRC(cabe6c34) SHA1(664ab47555d4c05189d797836f34045f00ac119e) )
+ ROM_LOAD( "2732.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) ) // missing in set
+ROM_END
+
ROM_START( nibblerp ) /* revision 6 + extra soundrom */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ic12", 0x3000, 0x1000, CRC(ac6a802b) SHA1(ac1072e30994f13097663dc24d9d1dc35a95d874) )
@@ -1602,5 +1628,6 @@ GAME( 1982, pballoonr,pballoon, pballoon, pballoon, driver_device, 0, ROT90, "SN
GAME( 1982, nibbler, 0, nibbler, nibbler, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev 9)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, nibbler8, nibbler, nibbler, nibbler8, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev 8)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, nibbler6, nibbler, nibbler, nibbler6, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, nibblera, nibbler, nibbler, nibbler, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev ?)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, nibblerp, nibbler, nibbler, nibbler6, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (Pioneer Balloon conversion)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, nibblero, nibbler, nibbler, nibbler8, driver_device, 0, ROT90, "Rock-Ola (Olympia license)", "Nibbler (Olympia - rev 8)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/stfight.cpp b/src/mame/drivers/stfight.cpp
index 3d548b97d15..fb4f03df47f 100644
--- a/src/mame/drivers/stfight.cpp
+++ b/src/mame/drivers/stfight.cpp
@@ -263,7 +263,7 @@ TODO:
static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM, 8, stfight_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* sf02.bin */
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") /* sf02.bin */
AM_RANGE(0xc000, 0xc0ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc100, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xc200, 0xc200) AM_READ_PORT("P1")
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index c3959d326b4..c3a9ef20068 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -1266,7 +1266,7 @@ static INPUT_PORTS_START( superqix )
PORT_DIPSETTING( 0x40, "80%" )
PORT_DIPSETTING( 0x00, "85%" )
- PORT_START("SYSTEM")
+ PORT_START("SYSTEM") /* Port 0 of MCU, might also be readable by z80 at io 0x0418 (nmi ack read port) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
@@ -1274,8 +1274,13 @@ static INPUT_PORTS_START( superqix )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) // doesn't work in bootleg
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, superqix_state, superqix_semaphore_input_r, nullptr) /* Z80 and MCU Semaphores */
+ /* The bits 0xc0 above is known to be WRONG from tracing:
+ bit 6 connects to whatever bit 7 is connected to on AY-3-8910 #1 @3P Port A
+ bit 7 connects to whatever bit 7 is connected to on AY-3-8910 #1 @3P Port B
+ however what those ay bits actually each connect to (semaphores? service button?) is currently unknown
+ */
- PORT_START("P1")
+ PORT_START("P1") /* AY-3-8910 #1 @3P Port A */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
@@ -1285,7 +1290,7 @@ static INPUT_PORTS_START( superqix )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") /* ??? */
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
- PORT_START("P2")
+ PORT_START("P2") /* AY-3-8910 #1 @3P Port B */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
@@ -1405,12 +1410,12 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( sqix, superqix_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", Z80, 12000000/2) /* 6 MHz */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* 6 MHz */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_IO_MAP(sqix_port_map)
MCFG_CPU_PERIODIC_INT_DRIVER(superqix_state, sqix_timer_irq, 4*60) /* ??? */
- MCFG_CPU_ADD("mcu", I8751, 12000000/3) /* ??? */
+ MCFG_CPU_ADD("mcu", I8751, XTAL_12MHz/3) /* TODO: VERIFY DIVISOR, is this 3mhz or 4mhz? */
MCFG_CPU_IO_MAP(sqix_mcu_io_map)
MCFG_QUANTUM_PERFECT_CPU("maincpu")
@@ -1435,12 +1440,14 @@ static MACHINE_CONFIG_START( sqix, superqix_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("ay1", AY8910, 12000000/8)
+ MCFG_SOUND_ADD("ay1", AY8910, XTAL_12MHz/8) // AY-3-8910 @3P, outputs directly tied together
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("P1"))
MCFG_AY8910_PORT_B_READ_CB(READ8(superqix_state, in4_mcu_r)) /* port Bread */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_SOUND_ADD("ay2", AY8910, 12000000/8)
+ MCFG_SOUND_ADD("ay2", AY8910, XTAL_12MHz/8) // AY-3-8910 @3M, outputs directly tied together
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW2"))
MCFG_AY8910_PORT_B_READ_CB(READ8(superqix_state, sqix_from_mcu_r)) /* port Bread */
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(superqix_state,sqix_z80_mcu_w)) /* port Bwrite */
@@ -1483,11 +1490,13 @@ static MACHINE_CONFIG_START( sqix_nomcu, superqix_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ay1", AY8910, 12000000/8)
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT) // ?
MCFG_AY8910_PORT_A_READ_CB(IOPORT("P1"))
MCFG_AY8910_PORT_B_READ_CB(READ8(superqix_state, in4_mcu_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MCFG_SOUND_ADD("ay2", AY8910, 12000000/8)
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT) // ?
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW2"))
MCFG_AY8910_PORT_B_READ_CB(READ8(superqix_state, bootleg_in0_r)) /* port Bread */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp
index da9d37c0de2..7683377424f 100644
--- a/src/mame/drivers/taitogn.cpp
+++ b/src/mame/drivers/taitogn.cpp
@@ -517,9 +517,6 @@ READ16_MEMBER(taitogn_state::hack1_r)
// Lifted from zn.c
-static const UINT8 tt10[ 8 ] = { 0x80, 0x20, 0x38, 0x08, 0xf1, 0x03, 0xfe, 0xfc };
-static const UINT8 tt16[ 8 ] = { 0xc0, 0x04, 0xf9, 0xe1, 0x60, 0x70, 0xf2, 0x02 };
-
READ8_MEMBER(taitogn_state::znsecsel_r)
{
return m_n_znsecsel;
@@ -671,18 +668,16 @@ static MACHINE_CONFIG_START( coh3002t, taitogn_state )
MCFG_DEVICE_ADD("cat702_1", CAT702, 0)
MCFG_CAT702_DATAOUT_HANDLER(WRITELINE(taitogn_state, cat702_1_dataout))
- MCFG_CAT702_TRANSFORM_TABLE(tt10)
MCFG_DEVICE_ADD("cat702_2", CAT702, 0)
MCFG_CAT702_DATAOUT_HANDLER(WRITELINE(taitogn_state, cat702_2_dataout))
- MCFG_CAT702_TRANSFORM_TABLE(tt16)
MCFG_DEVICE_ADD("zndip", ZNDIP, 0)
MCFG_ZNDIP_DATAOUT_HANDLER(WRITELINE(taitogn_state, zndip_dataout))
MCFG_ZNDIP_DSR_HANDLER(DEVWRITELINE("maincpu:sio0", psxsio0_device, write_dsr))
MCFG_ZNDIP_DATA_HANDLER(IOPORT(":DSW"))
- MCFG_AT28C16_ADD( "at28c16", 0 )
+ MCFG_DEVICE_ADD("at28c16", AT28C16, 0)
MCFG_DEVICE_ADD("rf5c296", RF5C296, 0)
MCFG_RF5C296_SLOT(":pccard")
@@ -849,7 +844,11 @@ INPUT_PORTS_END
#define TAITOGNET_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-3002t.353", 0x000000, 0x080000, CRC(03967fa7) SHA1(0e17fec2286e4e25deb23d40e41ce0986f373d49) ) \
+ ROM_LOAD( "m534002c-60.ic353", 0x000000, 0x080000, CRC(03967fa7) SHA1(0e17fec2286e4e25deb23d40e41ce0986f373d49) ) \
+ ROM_REGION( 0x8, "cat702_1", 0) \
+ ROM_LOAD( "tt10.ic652", 0x000000, 0x000008, CRC(235510b1) SHA1(2cc02113207a8f0b078152d31ce6503411750e70) ) \
+ ROM_REGION( 0x8, "cat702_2", 0) \
+ ROM_LOAD( "tt16", 0x000000, 0x000008, CRC(6bb167b3) SHA1(9dcba08f10775a9adf2b1f382c947460edd3d239) ) \
ROM_REGION( 0x2000, "mcu", 0 ) \
ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */ \
ROM_REGION16_BE( 0x200000, "biosflash", 0 ) \
@@ -862,7 +861,7 @@ INPUT_PORTS_END
ROM_REGION32_LE( 0x600000, "zsg2", 0) \
ROM_FILL( 0, 0x600000, 0xff)
-ROM_START( taitogn )
+ROM_START( coh3002t )
TAITOGNET_BIOS
ROM_END
@@ -1073,35 +1072,35 @@ ROM_END
/* A dummy driver, so that the bios can be debugged, and to serve as */
/* parent for the coh-3002t.353 file, so that we do not have to include */
/* it in every zip file */
-GAME( 1997, taitogn, 0, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Taito GNET", MACHINE_IS_BIOS_ROOT )
+GAME( 1997, coh3002t, 0, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Taito GNET", MACHINE_IS_BIOS_ROOT )
-GAME( 1998, chaoshea, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Chaos Heat (V2.09O)", MACHINE_IMPERFECT_SOUND )
+GAME( 1998, chaoshea, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Chaos Heat (V2.09O)", MACHINE_IMPERFECT_SOUND )
GAME( 1998, chaosheaj,chaoshea, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Chaos Heat (V2.08J)", MACHINE_IMPERFECT_SOUND )
-GAME( 1998, raycris, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Ray Crisis (V2.03J)", MACHINE_IMPERFECT_SOUND )
-GAME( 1999, spuzbobl, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Super Puzzle Bobble (V2.05O)", MACHINE_IMPERFECT_SOUND )
+GAME( 1998, raycris, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Ray Crisis (V2.03J)", MACHINE_IMPERFECT_SOUND )
+GAME( 1999, spuzbobl, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Super Puzzle Bobble (V2.05O)", MACHINE_IMPERFECT_SOUND )
GAME( 1999, spuzboblj,spuzbobl, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Super Puzzle Bobble (V2.04J)", MACHINE_IMPERFECT_SOUND )
-GAME( 1999, gobyrc, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Go By RC (V2.03O)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // analog controls, needs mcu emulation
+GAME( 1999, gobyrc, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Go By RC (V2.03O)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // analog controls, needs mcu emulation
GAME( 1999, rcdego, gobyrc, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "RC De Go (V2.03J)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // "
-GAME( 1999, flipmaze, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "MOSS / Taito", "Flip Maze (V2.04J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2001, shikigam, taitogn, coh3002t, coh3002t, driver_device, 0, ROT270, "Alfa System / Taito", "Shikigami no Shiro (V2.03J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2003, sianniv, taitogn, coh3002t, coh3002t, driver_device, 0, ROT270, "Taito", "Space Invaders Anniversary (V2.02J)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // IRQ at the wrong time
-GAME( 2003, kollon, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Kollon (V2.04J)", MACHINE_IMPERFECT_SOUND )
+GAME( 1999, flipmaze, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "MOSS / Taito", "Flip Maze (V2.04J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2001, shikigam, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT270, "Alfa System / Taito", "Shikigami no Shiro (V2.03J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2003, sianniv, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT270, "Taito", "Space Invaders Anniversary (V2.02J)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // IRQ at the wrong time
+GAME( 2003, kollon, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Kollon (V2.04J)", MACHINE_IMPERFECT_SOUND )
GAME( 2003, kollonc, kollon, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Kollon (V2.04JC)", MACHINE_IMPERFECT_SOUND )
-GAME( 1999, otenamih, taitogn, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Otenami Haiken (V2.04J)", 0 )
-GAME( 2005, otenamhf, taitogn, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success / Warashi", "Otenami Haiken Final (V2.07JC)", 0 )
-GAME( 2000, psyvaria, taitogn, coh3002t, coh3002t, driver_device, 0, ROT270, "Success", "Psyvariar -Medium Unit- (V2.04J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2000, psyvarrv, taitogn, coh3002t, coh3002t, driver_device, 0, ROT270, "Success", "Psyvariar -Revision- (V2.04J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2000, zokuoten, taitogn, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zoku Otenamihaiken (V2.03J)", 0 ) // boots the soundcpu without any valid code, causing an infinite NMI loop (currently circumvented)
-GAME( 2004, zooo, taitogn, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zooo (V2.01J)", 0 )
+GAME( 1999, otenamih, coh3002t, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Otenami Haiken (V2.04J)", 0 )
+GAME( 2005, otenamhf, coh3002t, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success / Warashi", "Otenami Haiken Final (V2.07JC)", 0 )
+GAME( 2000, psyvaria, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT270, "Success", "Psyvariar -Medium Unit- (V2.04J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2000, psyvarrv, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT270, "Success", "Psyvariar -Revision- (V2.04J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2000, zokuoten, coh3002t, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zoku Otenamihaiken (V2.03J)", 0 ) // boots the soundcpu without any valid code, causing an infinite NMI loop (currently circumvented)
+GAME( 2004, zooo, coh3002t, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zooo (V2.01J)", 0 )
-GAME( 1999, mahjngoh, taitogn, coh3002t_mp, coh3002t_mp, driver_device, 0, ROT0, "Warashi / Mahjong Kobo / Taito", "Mahjong Oh (V2.06J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2001, usagi, taitogn, coh3002t_mp, coh3002t_mp, driver_device, 0, ROT0, "Warashi / Mahjong Kobo / Taito", "Usagi (V2.02J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2000, soutenry, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Warashi", "Soutenryu (V2.07J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2000, shanghss, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Warashi", "Shanghai Shoryu Sairin (V2.03J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2002, shangtou, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Warashi / Sunsoft / Taito", "Shanghai Sangokuhai Tougi (Ver 2.01J)", MACHINE_IMPERFECT_SOUND )
+GAME( 1999, mahjngoh, coh3002t, coh3002t_mp, coh3002t_mp, driver_device, 0, ROT0, "Warashi / Mahjong Kobo / Taito", "Mahjong Oh (V2.06J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2001, usagi, coh3002t, coh3002t_mp, coh3002t_mp, driver_device, 0, ROT0, "Warashi / Mahjong Kobo / Taito", "Usagi (V2.02J)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // missing transparencies, see MT #06258
+GAME( 2000, soutenry, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Warashi", "Soutenryu (V2.07J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2000, shanghss, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Warashi", "Shanghai Shoryu Sairin (V2.03J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2002, shangtou, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Warashi / Sunsoft / Taito", "Shanghai Sangokuhai Tougi (Ver 2.01J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2001, nightrai, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Takumi", "Night Raid (V2.03J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2001, otenki, taitogn, coh3002t, coh3002t, driver_device, 0, ROT0, "Takumi", "Otenki Kororin (V2.01J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2001, nightrai, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Takumi", "Night Raid (V2.03J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2001, otenki, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT0, "Takumi", "Otenki Kororin (V2.01J)", MACHINE_IMPERFECT_SOUND )
-GAME( 2002, xiistag, taitogn, coh3002t, coh3002t, driver_device, 0, ROT270, "Triangle Service", "XII Stag (V2.01J)", MACHINE_IMPERFECT_SOUND )
+GAME( 2002, xiistag, coh3002t, coh3002t, coh3002t, driver_device, 0, ROT270, "Triangle Service", "XII Stag (V2.01J)", MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp
index 2b3b37c2b07..de5be007872 100644
--- a/src/mame/drivers/taitosj.cpp
+++ b/src/mame/drivers/taitosj.cpp
@@ -175,14 +175,21 @@ TODO:
WRITE8_MEMBER(taitosj_state::taitosj_sndnmi_msk_w)
{
- m_sndnmi_disable = data & 0x01;
+ m_sndnmi_disable = (data & 1);
+ if ((m_sound_cmd_written && (!m_sndnmi_disable)) || m_sound_semaphore)
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ else
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
WRITE8_MEMBER(taitosj_state::sound_command_w)
{
- m_sound_cmd_ack = true;
+ m_sound_cmd_written = true;
m_soundlatch->write(space,0,data);
- if (!m_sndnmi_disable) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ if ((m_sound_cmd_written && (!m_sndnmi_disable)) || m_sound_semaphore)
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ else
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
@@ -192,9 +199,13 @@ WRITE8_MEMBER(taitosj_state::input_port_4_f0_w)
}
// EPORT2
-WRITE8_MEMBER(taitosj_state::sound_semaphore_assert_w)
+WRITE8_MEMBER(taitosj_state::sound_semaphore_w)
{
- m_sound_semaphore = (data & 1) == 1;
+ m_sound_semaphore = (data & 1);
+ if ((m_sound_cmd_written && (!m_sndnmi_disable)) || m_sound_semaphore)
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ else
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
CUSTOM_INPUT_MEMBER(taitosj_state::input_port_4_f0_r)
@@ -233,7 +244,7 @@ static ADDRESS_MAP_START( taitosj_main_nomcu_map, AS_PROGRAM, 8, taitosj_state )
AM_RANGE(0xd508, 0xd508) AM_MIRROR(0x00f0) AM_WRITE(taitosj_collision_reg_clear_w)
AM_RANGE(0xd509, 0xd50a) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("gfxpointer")
AM_RANGE(0xd50b, 0xd50b) AM_MIRROR(0x00f0) AM_WRITE(sound_command_w)
- AM_RANGE(0xd50c, 0xd50c) AM_MIRROR(0x00f0) AM_WRITE(sound_semaphore_assert_w)
+ AM_RANGE(0xd50c, 0xd50c) AM_MIRROR(0x00f0) AM_WRITE(sound_semaphore_w)
AM_RANGE(0xd50d, 0xd50d) AM_MIRROR(0x00f0) AM_WRITEONLY /*watchdog_reset_w*/ /* Bio Attack sometimes resets after you die */
AM_RANGE(0xd50e, 0xd50e) AM_MIRROR(0x00f0) AM_WRITE(taitosj_bankswitch_w)
AM_RANGE(0xd50f, 0xd50f) AM_MIRROR(0x00f0) AM_WRITENOP
@@ -305,7 +316,7 @@ static ADDRESS_MAP_START( kikstart_main_map, AS_PROGRAM, 8, taitosj_state )
AM_RANGE(0xd508, 0xd508) AM_WRITE(taitosj_collision_reg_clear_w)
AM_RANGE(0xd509, 0xd50a) AM_WRITEONLY AM_SHARE("gfxpointer")
AM_RANGE(0xd50b, 0xd50b) AM_WRITE(sound_command_w)
- AM_RANGE(0xd50c, 0xd50c) AM_WRITE(sound_semaphore_assert_w)
+ AM_RANGE(0xd50c, 0xd50c) AM_WRITE(sound_semaphore_w)
AM_RANGE(0xd50d, 0xd50d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
AM_RANGE(0xd50e, 0xd50e) AM_WRITE(taitosj_bankswitch_w)
AM_RANGE(0xd600, 0xd600) AM_WRITEONLY AM_SHARE("video_mode")
@@ -316,14 +327,14 @@ ADDRESS_MAP_END
// RD5000
READ8_MEMBER(taitosj_state::sound_command_r)
{
- m_sound_cmd_ack = false;
+ m_sound_cmd_written = false;
return m_soundlatch->read(space,0);
}
// RD5001
READ8_MEMBER(taitosj_state::sound_status_r)
{
- return (m_sound_cmd_ack == true ? 8 : 0) | (m_sound_semaphore == true ? 4 : 0) | 3;
+ return (m_sound_cmd_written == true ? 8 : 0) | (m_sound_semaphore == true ? 4 : 0) | 3;
}
// WR5000
@@ -336,6 +347,10 @@ WRITE8_MEMBER(taitosj_state::sound_command_ack_w)
WRITE8_MEMBER(taitosj_state::sound_semaphore_clear_w)
{
m_sound_semaphore = false;
+ if ((m_sound_cmd_written && (!m_sndnmi_disable)) || m_sound_semaphore)
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ else
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
@@ -1749,17 +1764,17 @@ WRITE8_MEMBER(taitosj_state::dac_vol_w)
static MACHINE_CONFIG_START( nomcu, taitosj_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",Z80,8000000/2) /* 4 MHz */
+ MCFG_CPU_ADD("maincpu",Z80,XTAL_8MHz/2) /* 8 MHz / 2, on CPU board */
MCFG_CPU_PROGRAM_MAP(taitosj_main_nomcu_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", taitosj_state, irq0_line_hold)
- MCFG_CPU_ADD("audiocpu", Z80,6000000/2) /* 3 MHz */
+ MCFG_CPU_ADD("audiocpu", Z80,XTAL_6MHz/2) /* 6 MHz / 2, on GAME board */
MCFG_CPU_PROGRAM_MAP(taitosj_audio_map)
/* interrupts: */
/* - no interrupts synced with vblank */
/* - NMI triggered by the main CPU */
/* - periodic IRQ, with frequency 6000000/(4*16*16*10*16) = 36.621 Hz, */
- MCFG_CPU_PERIODIC_INT_DRIVER(taitosj_state, irq0_line_hold, (double)6000000/(4*16*16*10*16))
+ MCFG_CPU_PERIODIC_INT_DRIVER(taitosj_state, irq0_line_hold, (double)XTAL_6MHz/(4*16*16*10*16))
/* video hardware */
@@ -1780,21 +1795,30 @@ static MACHINE_CONFIG_START( nomcu, taitosj_state )
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
- MCFG_SOUND_ADD("ay1", AY8910, 6000000/4)
+ MCFG_SOUND_ADD("ay1", AY8910, XTAL_6MHz/4) // 6mhz/4 on GAME board, AY-3-8910 @ IC53 (this is the only AY which uses proper mixing resistors, the 3 below have outputs tied together)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW2"))
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3"))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
- MCFG_SOUND_ADD("ay2", AY8910, 6000000/4)
+ MCFG_SOUND_ADD("ay2", AY8910, XTAL_6MHz/4) // 6mhz/4 on GAME board, AY-3-8910 @ IC51
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(taitosj_state, dac_out_w)) /* port Awrite */
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(taitosj_state, dac_vol_w)) /* port Bwrite */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
- MCFG_SOUND_ADD("ay3", AY8910, 6000000/4)
+ MCFG_SOUND_ADD("ay3", AY8910, XTAL_6MHz/4) // 6mhz/4 on GAME board, AY-3-8910 @ IC49
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(taitosj_state, input_port_4_f0_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
- MCFG_SOUND_ADD("ay4", AY8910, 6000000/4)
+ MCFG_SOUND_ADD("ay4", AY8910, XTAL_6MHz/4) // 6mhz/4 on GAME board, AY-3-8910 @ IC50
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT)
+ /* TODO: Implement ay4 Port A bits 0 and 1 which connect to a 7416 open
+ collector inverter, to selectively tie none, either or both of two
+ capacitors between the ay4 audio output signal and ground, or between
+ audio output signal and high-z (i.e. do nothing).
+ Bio Attack uses this?
+ */
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(taitosj_state, taitosj_sndnmi_msk_w)) /* port Bwrite */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -1810,7 +1834,7 @@ static MACHINE_CONFIG_DERIVED( mcu, nomcu )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(taitosj_main_mcu_map)
- MCFG_CPU_ADD("mcu", M68705,3000000) /* xtal is 3MHz, divided by 4 internally */
+ MCFG_CPU_ADD("mcu", M68705,XTAL_3MHz) /* xtal is 3MHz, divided by 4 internally */
MCFG_CPU_PROGRAM_MAP(taitosj_mcu_map)
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
@@ -2700,7 +2724,8 @@ ROM_END
void taitosj_state::reset_common()
{
- m_sndnmi_disable = 1;
+ m_sndnmi_disable = false; // ay-3-8910 resets all registers to 0 on reset
+ m_sound_semaphore = false;
m_input_port_4_f0 = 0;
/* start in 1st gear */
m_kikstart_gears[0] = 0x02;
@@ -2712,6 +2737,8 @@ void taitosj_state::reset_common()
void taitosj_state::init_common()
{
save_item(NAME(m_sndnmi_disable));
+ save_item(NAME(m_sound_cmd_written));
+ save_item(NAME(m_sound_semaphore));
save_item(NAME(m_input_port_4_f0));
save_item(NAME(m_kikstart_gears));
save_item(NAME(m_dac_out));
diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp
index 370ae4b6e47..3601855de92 100644
--- a/src/mame/drivers/tourvis.cpp
+++ b/src/mame/drivers/tourvis.cpp
@@ -24,6 +24,7 @@
* Ankoku Densetu (Legendary Axe II)
Armed-F (?)
Ballistix (186)
+ Barunba (39)
* Batman
Be Ball (93)
* Blodia
@@ -64,7 +65,7 @@
Kato & Ken (42)
Kiki Kaikai (120)
Legend Of Hero Tomna (56)
- Makyo Densetsu - The Legenary Axe (?)
+ Makyo Densetsu - The Legenary Axe (40)
Mesopotamia (197)
Mizubaku Daibouken Liquid Kids (10) (marketed as "Parasol Stars II")
Mr. Heli (23)
@@ -83,6 +84,7 @@
* Power Golf
Power League IV (?)
Power Sports (199)
+ Power Tennis (183)
Pro Yakyuu World Stadium '91 (192)
Psycho Chaser (14)
Puzzle Boy (57)
@@ -106,7 +108,7 @@
Tatsujin (31)
Terra Cresta II (27)
The NewZealand Story (11)
- Thunder Blade (?)
+ Thunder Blade (34)
* Tiger Road
* Titan
Toy Shop Boys (51)
diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp
index c62e1bee804..5b92a64fbb1 100644
--- a/src/mame/drivers/vis.cpp
+++ b/src/mame/drivers/vis.cpp
@@ -12,10 +12,14 @@ public:
vis_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_mb(*this, "mb")
+ m_mb(*this, "mb"),
+ m_pic1(*this, "mb:pic8259_slave"),
+ m_vga(*this, "vga")
{ }
required_device m_maincpu;
required_device m_mb;
+ required_device m_pic1;
+ required_device m_vga;
DECLARE_READ8_MEMBER(sysctl_r);
DECLARE_WRITE8_MEMBER(sysctl_w);
@@ -23,24 +27,27 @@ public:
DECLARE_WRITE8_MEMBER(unk_w);
DECLARE_READ8_MEMBER(unk2_r);
DECLARE_READ8_MEMBER(unk3_r);
- DECLARE_READ8_MEMBER(cdrom_r);
- DECLARE_WRITE8_MEMBER(cdrom_w);
+ DECLARE_READ8_MEMBER(pad_r);
+ DECLARE_WRITE8_MEMBER(pad_w);
+ DECLARE_READ8_MEMBER(vga_r);
+ DECLARE_WRITE8_MEMBER(vga_w);
protected:
void machine_reset() override;
private:
UINT8 m_sysctl;
UINT8 m_unkidx;
UINT8 m_unk[16];
- UINT8 m_cdcmd, m_cdstat;
+ UINT8 m_pad[4];
+ UINT8 m_crtcidx;
+ UINT8 m_gfxidx;
};
void vis_state::machine_reset()
{
- m_cdcmd = 0;
- m_cdstat = 0;
m_sysctl = 0;
}
+//chipset registers?
READ8_MEMBER(vis_state::unk_r)
{
if(offset)
@@ -61,11 +68,71 @@ READ8_MEMBER(vis_state::unk2_r)
return 0x40;
}
+//memory card reader?
READ8_MEMBER(vis_state::unk3_r)
{
return 0x00;
}
+READ8_MEMBER(vis_state::pad_r)
+{
+ if(offset == 2)
+ return 0xde;
+ return 0;
+}
+
+WRITE8_MEMBER(vis_state::pad_w)
+{
+ switch(offset)
+ {
+ case 1:
+ if(data == 0x10)
+ m_pic1->ir1_w(CLEAR_LINE);
+ else if(data == 0x16)
+ m_pic1->ir1_w(ASSERT_LINE);
+ }
+ m_pad[offset] = data;
+}
+
+READ8_MEMBER(vis_state::vga_r)
+{
+ if(offset < 0x10)
+ return m_vga->port_03b0_r(space, offset, mem_mask);
+ else if(offset < 0x20)
+ return m_vga->port_03c0_r(space, offset - 0x10, mem_mask);
+ else
+ return m_vga->port_03d0_r(space, offset - 0x20, mem_mask);
+}
+
+WRITE8_MEMBER(vis_state::vga_w)
+{
+ switch(offset)
+ {
+ case 0x1e:
+ m_gfxidx = data;
+ break;
+ case 0x1f:
+ if(m_gfxidx == 0x05)
+ data |= 0x40;
+ break;
+ case 0x04:
+ case 0x24:
+ m_crtcidx = data;
+ break;
+ case 0x05:
+ case 0x25:
+ if(m_crtcidx == 0x14)
+ data |= 0x40;
+ break;
+ }
+ if(offset < 0x10)
+ m_vga->port_03b0_w(space, offset, data, mem_mask);
+ else if(offset < 0x20)
+ m_vga->port_03c0_w(space, offset - 0x10, data, mem_mask);
+ else
+ m_vga->port_03d0_w(space, offset - 0x20, data, mem_mask);
+}
+
READ8_MEMBER(vis_state::sysctl_r)
{
return m_sysctl;
@@ -82,8 +149,10 @@ WRITE8_MEMBER(vis_state::sysctl_w)
static ADDRESS_MAP_START( at16_map, AS_PROGRAM, 16, vis_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x09ffff) AM_RAM
+ AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffff)
AM_RANGE(0x0d8000, 0x0fffff) AM_ROM AM_REGION("bios", 0xd8000)
AM_RANGE(0x100000, 0x15ffff) AM_RAM
+ AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("bios", 0)
AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("bios", 0xf0000)
ADDRESS_MAP_END
@@ -93,7 +162,9 @@ static ADDRESS_MAP_START( at16_io, AS_IO, 16, vis_state )
AM_RANGE(0x006a, 0x006b) AM_READ8(unk2_r, 0x00ff)
AM_RANGE(0x0092, 0x0093) AM_READWRITE8(sysctl_r, sysctl_w, 0x00ff)
AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
+ AM_RANGE(0x023c, 0x023f) AM_READWRITE8(pad_r, pad_w, 0xffff)
AM_RANGE(0x031a, 0x031b) AM_READ8(unk3_r, 0x00ff)
+ AM_RANGE(0x03b0, 0x03df) AM_READWRITE8(vga_r, vga_w, 0xffff)
ADDRESS_MAP_END
static MACHINE_CONFIG_START( vis, vis_state )
@@ -106,8 +177,8 @@ static MACHINE_CONFIG_START( vis, vis_state )
MCFG_DEVICE_ADD("mb", AT_MB, 0)
- MCFG_ISA16_SLOT_ADD("mb:isabus","vga", pc_isa16_cards, "clgd542x", true)
MCFG_ISA16_SLOT_ADD("mb:isabus","mcd", pc_isa16_cards, "mcd", true)
+ MCFG_FRAGMENT_ADD(pcvideo_vga)
MACHINE_CONFIG_END
ROM_START(vis)
diff --git a/src/mame/drivers/xbox.cpp b/src/mame/drivers/xbox.cpp
index 0dd75172d63..51a927a335a 100644
--- a/src/mame/drivers/xbox.cpp
+++ b/src/mame/drivers/xbox.cpp
@@ -189,6 +189,8 @@ MACHINE_CONFIG_END
Machine driver(s)
***************************************************************************/
+#define ROM_LOAD_BIOS(bios,name,offset,length,hash) \
+ ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */
ROM_START( xbox )
ROM_REGION( 0x400, "mcpx", 0 )
@@ -197,7 +199,14 @@ ROM_START( xbox )
ROM_LOAD( "mcpx_1_1.bin", 0x200, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) )
ROM_REGION( 0x100000, "bios", 0)
- ROM_LOAD( "4134_1024k.bin", 0x000000, 0x100000, CRC(49d8055a) SHA1(d46cef771a63dc8024fe36d7ab5b959087ac999f) )
+ ROM_SYSTEM_BIOS(0, "bios0", "Chihiro Bios 4134 1024k") \
+ ROM_LOAD_BIOS(0, "4134_1024k.bin", 0x000000, 0x100000, CRC(49d8055a) SHA1(d46cef771a63dc8024fe36d7ab5b959087ac999f)) \
+ ROM_SYSTEM_BIOS(1, "bios1", "Chihiro Bios 3944 1024k") \
+ ROM_LOAD_BIOS(1, "3944_1024k.bin", 0x000000, 0x100000, CRC(32a9ecb6) SHA1(67054fc88bda94e33e86f1b19be60efec0724fb6)) \
+ ROM_SYSTEM_BIOS(2, "bios2", "Chihiro Bios 4034 1024k") \
+ ROM_LOAD_BIOS(2, "4034_1024k.bin", 0x000000, 0x100000, CRC(0d6fc88f) SHA1(ab676b712204fb1728bf89f9cd541a8f5a64ab97)) \
+ ROM_SYSTEM_BIOS(3, "bios3", "Chihiro Bios 4817 1024k") \
+ ROM_LOAD_BIOS(3, "4817_1024k.bin", 0x000000, 0x100000, CRC(3f30863a) SHA1(dc955bd4d3ca71e01214a49e5d0aba615270c03c))
ROM_COPY( "mcpx", 1, 0x3fe00, 0x1ff)
ROM_COPY( "mcpx", 1, 0x7fe00, 0x1ff)
ROM_COPY( "mcpx", 1, 0xbfe00, 0x1ff)
@@ -205,9 +214,6 @@ ROM_START( xbox )
ROM_REGION( 0x1000000, "tbp", 0 ) // To Be Processed, of course
- ROM_LOAD( "3944_1024k.bin", 0x000000, 0x100000, CRC(32a9ecb6) SHA1(67054fc88bda94e33e86f1b19be60efec0724fb6) )
- ROM_LOAD( "4034_1024k.bin", 0x000000, 0x100000, CRC(0d6fc88f) SHA1(ab676b712204fb1728bf89f9cd541a8f5a64ab97) )
- ROM_LOAD( "4817_1024k.bin", 0x000000, 0x100000, CRC(3f30863a) SHA1(dc955bd4d3ca71e01214a49e5d0aba615270c03c) )
ROM_LOAD( "5101_256k.bin", 0x000000, 0x040000, CRC(e8a9224e) SHA1(5108e1025f48071c07a6823661d708c66dee97a9) )
ROM_LOAD( "xbox-5530.bin", 0x000000, 0x040000, CRC(9569c4d3) SHA1(40fa73277013be3168135e1768b09623a987ff63) )
ROM_LOAD( "xbox-5713.bin", 0x040000, 0x040000, CRC(58fd8173) SHA1(8b7ccc4648ccd78cdb7b65cfca09621eaf2d4238) )
diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp
index 215df0a5dfd..c4ad04c3914 100644
--- a/src/mame/drivers/zn.cpp
+++ b/src/mame/drivers/zn.cpp
@@ -180,55 +180,6 @@ inline void zn_state::psxwriteword( UINT32 *p_n_psxram, UINT32 n_address, UINT16
*( (UINT16 *)( (UINT8 *)p_n_psxram + WORD_XOR_LE( n_address ) ) ) = n_data;
}
-static const UINT8 ac01[ 8 ] = { 0x80, 0x1c, 0xe2, 0xfa, 0xf9, 0xf1, 0x30, 0xc0 };
-static const UINT8 ac02[ 8 ] = { 0xfc, 0x60, 0xe2, 0xfa, 0xf9, 0xf1, 0x30, 0xc0 };
-static const UINT8 tw01[ 8 ] = { 0xc0, 0x18, 0xf9, 0x81, 0x82, 0xfe, 0x0c, 0xf0 };
-static const UINT8 tw02[ 8 ] = { 0xf0, 0x81, 0x03, 0xfa, 0x18, 0x1c, 0x3c, 0xc0 };
-static const UINT8 at01[ 8 ] = { 0xf8, 0xe1, 0xe2, 0xfe, 0x3c, 0x40, 0x70, 0xf0 };
-static const UINT8 at02[ 8 ] = { 0xc0, 0x70, 0x78, 0xfa, 0xfe, 0x1c, 0xe1, 0x01 };
-static const UINT8 cp01[ 8 ] = { 0xf0, 0x81, 0xc1, 0x20, 0xe2, 0xfe, 0x04, 0xf8 };
-static const UINT8 cp02[ 8 ] = { 0xfc, 0xf1, 0x08, 0x18, 0xe2, 0xc2, 0x40, 0x80 }; /* brute forced */
-static const UINT8 cp03[ 8 ] = { 0xc0, 0x10, 0x60, 0x7c, 0x04, 0xfa, 0x03, 0x01 };
-static const UINT8 cp04[ 8 ] = { 0xf8, 0xe2, 0xe1, 0x81, 0x7c, 0x0c, 0x30, 0xc0 };
-static const UINT8 cp05[ 8 ] = { 0x80, 0x08, 0x30, 0xc2, 0xfe, 0xfd, 0xe1, 0xe0 };
-static const UINT8 cp06[ 8 ] = { 0xf0, 0x20, 0x3c, 0xfd, 0x81, 0x78, 0xfa, 0x02 };
-static const UINT8 cp07[ 8 ] = { 0xf8, 0x60, 0x20, 0x3c, 0xfd, 0x03, 0xf2, 0xf0 }; /* brute forced */
-static const UINT8 cp08[ 8 ] = { 0xe0, 0xf2, 0x70, 0x81, 0xc1, 0x3c, 0x04, 0xf8 };
-static const UINT8 cp09[ 8 ] = { 0xfc, 0x20, 0x38, 0x08, 0xf1, 0x03, 0x82, 0x80 }; /* brute forced */
-static const UINT8 cp10[ 8 ] = { 0xe0, 0x40, 0x38, 0x08, 0xf1, 0x03, 0xfe, 0xfc };
-static const UINT8 cp11[ 8 ] = { 0xf0, 0x20, 0xe1, 0x81, 0x7c, 0x04, 0xfa, 0x02 }; /* brute forced */
-static const UINT8 cp12[ 8 ] = { 0xfc, 0x82, 0x60, 0xe1, 0xf9, 0x38, 0x30, 0xf0 }; /* brute forced */
-static const UINT8 cp13[ 8 ] = { 0x02, 0x70, 0x08, 0x04, 0x3c, 0x20, 0xe1, 0x01 };
-static const UINT8 et01[ 8 ] = { 0x02, 0x08, 0x18, 0x1c, 0xfd, 0xc1, 0x40, 0x80 };
-static const UINT8 et02[ 8 ] = { 0xc0, 0xe1, 0xe2, 0xfe, 0x7c, 0x70, 0x08, 0xf8 };
-static const UINT8 et03[ 8 ] = { 0xc0, 0x08, 0xfa, 0xe2, 0xe1, 0xfd, 0x7c, 0x80 };
-static const UINT8 et05[ 8 ] = { 0xf0, 0x03, 0xe2, 0x18, 0x78, 0x7c, 0x3c, 0xc0 };
-static const UINT8 mg01[ 8 ] = { 0x80, 0xf2, 0x30, 0x38, 0xf9, 0xfd, 0x1c, 0xe0 };
-static const UINT8 mg02[ 8 ] = { 0xe0, 0x7c, 0x40, 0xc1, 0xf9, 0xfa, 0xf2, 0xf0 };
-static const UINT8 mg03[ 8 ] = { 0xc0, 0x04, 0x78, 0x82, 0x03, 0xf1, 0x10, 0xe0 };
-static const UINT8 mg04[ 8 ] = { 0xf0, 0xe1, 0x81, 0x82, 0xfa, 0x04, 0x3c, 0xc0 };
-static const UINT8 mg05[ 8 ] = { 0x80, 0xc2, 0x38, 0xf9, 0xfd, 0x0c, 0x10, 0xe0 }; /* brute forced */
-static const UINT8 mg06[ 8 ] = { 0xc0, 0xe2, 0xe1, 0xfd, 0x04, 0x78, 0x70, 0xf0 };
-static const UINT8 mg07[ 8 ] = { 0xe0, 0xc2, 0x38, 0xf9, 0xfd, 0x0c, 0x70, 0x80 };
-static const UINT8 mg08[ 8 ] = { 0xf0, 0xfa, 0xf9, 0xc1, 0x20, 0x1c, 0x7c, 0x80 };
-static const UINT8 mg09[ 8 ] = { 0xf0, 0x03, 0xe2, 0x18, 0x78, 0x7c, 0x3c, 0xc0 }; /* brute forced */
-static const UINT8 mg10[ 8 ] = { 0xfc, 0xf2, 0x30, 0xc1, 0xf9, 0x78, 0x60, 0xe0 };
-static const UINT8 mg11[ 8 ] = { 0x80, 0xc2, 0x38, 0xf9, 0xfd, 0x1c, 0x10, 0xf0 };
-static const UINT8 mg12[ 8 ] = { 0x02, 0x40, 0x38, 0xf9, 0xfd, 0x1c, 0x10, 0xf0 };
-static const UINT8 mg13[ 8 ] = { 0xc0, 0xe2, 0xe1, 0xf9, 0x04, 0x0c, 0x70, 0x80 };
-static const UINT8 mg14[ 8 ] = { 0xfc, 0xf2, 0xfa, 0x18, 0x20, 0x40, 0x81, 0x01 };
-static const UINT8 tt01[ 8 ] = { 0xe0, 0xf9, 0xfd, 0x7c, 0x70, 0x30, 0xc2, 0x02 };
-static const UINT8 tt02[ 8 ] = { 0xfc, 0x60, 0xe1, 0xc1, 0x30, 0x08, 0xfa, 0x02 }; /* brute forced */
-static const UINT8 tt03[ 8 ] = { 0xf0, 0x20, 0xe2, 0xfa, 0x78, 0x81, 0xfd, 0xfc }; /* brute forced */
-static const UINT8 tt04[ 8 ] = { 0xc0, 0xe1, 0xe2, 0xfa, 0x78, 0x7c, 0x0c, 0xf0 };
-static const UINT8 tt05[ 8 ] = { 0xc0, 0xf1, 0xf2, 0xe2, 0x60, 0x7c, 0x04, 0xf8 }; /* brute forced */
-static const UINT8 tt06[ 8 ] = { 0xfc, 0x38, 0xfa, 0xf2, 0xf1, 0xe1, 0x60, 0x80 }; /* brute forced */
-static const UINT8 tt07[ 8 ] = { 0x80, 0x10, 0xf1, 0x03, 0xfa, 0x38, 0x3c, 0xfc }; /* brute forced & dumped */
-//static const UINT8 tt10[ 8 ] = { 0x80, 0x20, 0x38, 0x08, 0xf1, 0x03, 0xfe, 0xfc };
-//static const UINT8 tt16[ 8 ] = { 0xc0, 0x04, 0xf9, 0xe1, 0x60, 0x70, 0xf2, 0x02 };
-static const UINT8 kn01[ 8 ] = { 0xf8, 0xe1, 0xe2, 0xfe, 0x3c, 0x30, 0x70, 0x80 }; /* brute forced */
-static const UINT8 kn02[ 8 ] = { 0x01, 0x18, 0xe2, 0xfe, 0x3c, 0x30, 0x70, 0x80 }; /* brute forced */
-
READ8_MEMBER(zn_state::znsecsel_r)
{
verboselog(2, "znsecsel_r( %08x, %08x )\n", offset, mem_mask );
@@ -353,9 +304,6 @@ static MACHINE_CONFIG_START( zn1_1mb_vram, zn_state )
MCFG_ZNDIP_DSR_HANDLER(DEVWRITELINE("maincpu:sio0", psxsio0_device, write_dsr))
MCFG_ZNDIP_DATA_HANDLER(IOPORT(":DSW"))
- // 5MHz NEC uPD78081 MCU:
- // we don't have a 78K0 emulation core yet..
-
/* video hardware */
MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x100000, XTAL_53_693175MHz )
@@ -368,7 +316,7 @@ static MACHINE_CONFIG_START( zn1_1mb_vram, zn_state )
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
- MCFG_AT28C16_ADD( "at28c16", nullptr )
+ MCFG_DEVICE_ADD("at28c16", AT28C16, 0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( zn1_2mb_vram, zn1_1mb_vram )
@@ -399,9 +347,6 @@ static MACHINE_CONFIG_START( zn2, zn_state )
MCFG_ZNDIP_DSR_HANDLER(DEVWRITELINE("maincpu:sio0", psxsio0_device, write_dsr))
MCFG_ZNDIP_DATA_HANDLER(IOPORT(":DSW"))
- // 5MHz NEC uPD78081 MCU:
- // we don't have a 78K0 emulation core yet..
-
/* video hardware */
MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0x200000, XTAL_53_693175MHz )
@@ -414,7 +359,7 @@ static MACHINE_CONFIG_START( zn2, zn_state )
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
- MCFG_AT28C16_ADD( "at28c16", nullptr )
+ MCFG_DEVICE_ADD("at28c16", AT28C16, 0)
MACHINE_CONFIG_END
/*
@@ -610,23 +555,10 @@ static MACHINE_CONFIG_DERIVED( coh1000c, zn1_1mb_vram )
MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(cp01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp02)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( starglad, coh1000c )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp03)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( glpracr, coh1000c )
MCFG_MACHINE_RESET_OVERRIDE(zn_state, glpracr)
-
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp05)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( coh1002c, zn1_2mb_vram )
@@ -643,11 +575,6 @@ static MACHINE_CONFIG_DERIVED( coh1002c, zn1_2mb_vram )
MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(cp01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp04)
MACHINE_CONFIG_END
/*
@@ -805,41 +732,6 @@ static MACHINE_CONFIG_DERIVED(coh3002c, zn2)
MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(cp10)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp06)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(plsmaswd, coh3002c)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp07)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(sfex2, coh3002c)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp08)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(techromn, coh3002c)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp09)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(tgmj, coh3002c)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp11)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(sfex2p, coh3002c)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp12)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(strider2, coh3002c)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(cp13)
MACHINE_CONFIG_END
/*
@@ -1124,21 +1016,6 @@ static MACHINE_CONFIG_DERIVED( coh1000ta, zn1_1mb_vram )
MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0)
MCFG_TC0140SYT_MASTER_CPU("maincpu")
MCFG_TC0140SYT_SLAVE_CPU("audiocpu")
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(tt01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(tt02)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( psyforce, coh1000ta )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(tt03)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( mgcldate, coh1000ta )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(tt06)
MACHINE_CONFIG_END
WRITE8_MEMBER(zn_state::fx1b_fram_w)
@@ -1192,16 +1069,6 @@ static MACHINE_CONFIG_DERIVED(coh1000tb, zn1_1mb_vram)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
MCFG_FRAGMENT_ADD(taito_zoom_sound)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(tt01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(tt04)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(ftimpact, coh1000tb)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(tt05)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED(coh1002tb, zn1_2mb_vram)
@@ -1222,11 +1089,6 @@ static MACHINE_CONFIG_DERIVED(coh1002tb, zn1_2mb_vram)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
MCFG_FRAGMENT_ADD(taito_zoom_sound)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(tt01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(tt07)
MACHINE_CONFIG_END
/*
@@ -1462,11 +1324,6 @@ static MACHINE_CONFIG_DERIVED( coh1000w, zn1_2mb_vram )
MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("maincpu:irq", psxirq_device, intin10))
MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( zn_state::atpsx_dma_read ), (zn_state *) owner ) )
MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( zn_state::atpsx_dma_write ), (zn_state *) owner ) )
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(tw01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(tw02)
MACHINE_CONFIG_END
/*
@@ -1664,23 +1521,6 @@ static MACHINE_CONFIG_DERIVED(coh1002e, zn1_2mb_vram)
MCFG_SOUND_ADD("ymf", YMF271, XTAL_16_9344MHz)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(et01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(et02)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(bldyror2, coh1002e)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(et03)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED(brvblade, coh1002e)
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(mg01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg11)
MACHINE_CONFIG_END
@@ -1800,11 +1640,6 @@ static MACHINE_CONFIG_DERIVED( bam2, zn1_2mb_vram )
MCFG_CPU_PROGRAM_MAP(bam2_map)
MCFG_MACHINE_RESET_OVERRIDE(zn_state, bam2)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(et01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(et05)
MACHINE_CONFIG_END
/*
@@ -2116,18 +1951,12 @@ ADDRESS_MAP_END
static MACHINE_CONFIG_DERIVED( coh1000a, zn1_2mb_vram )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(coh1000a_map)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(ac01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(ac02)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( nbajamex, coh1000a )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(nbajamex_map)
MCFG_MACHINE_RESET_OVERRIDE(zn_state, nbajamex)
-
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( jdredd, coh1000a )
@@ -2311,11 +2140,6 @@ static MACHINE_CONFIG_DERIVED(coh1001l, zn1_2mb_vram)
MCFG_YMZ280B_IRQ_HANDLER(INPUTLINE("audiocpu", 2))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(at01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(at02)
MACHINE_CONFIG_END
/*
@@ -2354,11 +2178,6 @@ static MACHINE_CONFIG_DERIVED( coh1002v, zn1_2mb_vram )
MCFG_CPU_PROGRAM_MAP(coh1002v_map)
MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002v)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(kn01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(kn02)
MACHINE_CONFIG_END
/*
@@ -2542,61 +2361,6 @@ static MACHINE_CONFIG_DERIVED( coh1002m, zn1_2mb_vram )
MCFG_CPU_PROGRAM_MAP(coh1002m_map)
MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002m)
-
- MCFG_DEVICE_MODIFY("cat702_1")
- MCFG_CAT702_TRANSFORM_TABLE(mg01)
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg02)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( shngmtkb, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg04)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( doapp, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg05)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( flamegun, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg06)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( lpadv, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg07)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( glpracr3, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg08)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( tondemo, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg09)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( 1on1gov, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg10)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( tblkkuzu, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg12)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( tecmowcm, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg13)
-MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( mfjump, coh1002m )
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg14)
MACHINE_CONFIG_END
READ8_MEMBER(zn_state::cbaj_sound_main_status_r)
@@ -2660,9 +2424,6 @@ static MACHINE_CONFIG_DERIVED( coh1002msnd, coh1002m )
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
-
- MCFG_DEVICE_MODIFY("cat702_2")
- MCFG_CAT702_TRANSFORM_TABLE(mg03)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( coh1002ml, coh1002m )
@@ -2861,19 +2622,23 @@ ROM Definitions
#define CPZN1_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_SYSTEM_BIOS( 0, "bios0", "standard" ) \
- ROMX_LOAD( "coh-1000c.353", 0x0000000, 0x080000, CRC(50033af6) SHA1(486d92ff6c7f1e54f8e0ef41cd9116eca0e10e1a), ROM_BIOS(1)) \
- ROM_SYSTEM_BIOS( 1, "bios1", "development" ) \
- ROMX_LOAD( "coh-1000c-devel.bin", 0x000000, 0x080000, CRC(f20f7fe5) SHA1(9aac7d3b3d0cc0bbbe4056164b73078dce41d91c), ROM_BIOS(2) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_SYSTEM_BIOS( 0, "j", "japan" ) \
+ ROMX_LOAD( "m534002c-13.ic353", 0x0000000, 0x080000, CRC(50033af6) SHA1(486d92ff6c7f1e54f8e0ef41cd9116eca0e10e1a), ROM_BIOS(1) ) /* japanese */ \
+ ROM_SYSTEM_BIOS( 1, "e", "english (debug)" ) \
+ ROMX_LOAD( "msm27c402zb.ic353", 0x000000, 0x080000, CRC(f20f7fe5) SHA1(9aac7d3b3d0cc0bbbe4056164b73078dce41d91c), ROM_BIOS(2) ) /* english (debug) */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "cp01.ic652", 0x000000, 0x000008, CRC(bb7ba033) SHA1(966f3aee5d00e1312c455f855915d621e6cb0672) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( cpzn1 )
+ROM_START( coh1000c )
CPZN1_BIOS
+
ROM_REGION32_LE( 0x80000, "countryrom", ROMREGION_ERASE00 )
ROM_REGION32_LE( 0x2400000, "maskroms", ROMREGION_ERASE00 )
ROM_REGION( 0x50000, "audiocpu", ROMREGION_ERASE00 )
ROM_REGION( 0x400000, "qsound", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
/* 95681-2 */
@@ -2895,6 +2660,9 @@ ROM_START( ts2 )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ts2-01m.3b", 0x0000000, 0x400000, CRC(d7a505e0) SHA1(f1b0cdea712101f695bd326eccd753eb79a07490) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp02", 0x000000, 0x000008, CRC(40b0b697) SHA1(a8ee10fc9c0257de0a9ed0db29ea08afe900405f) )
ROM_END
/* 95681-2 */
@@ -2918,6 +2686,9 @@ ROM_START( ts2a )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ts2-01m.3b", 0x0000000, 0x400000, CRC(d7a505e0) SHA1(f1b0cdea712101f695bd326eccd753eb79a07490) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp02", 0x000000, 0x000008, CRC(40b0b697) SHA1(a8ee10fc9c0257de0a9ed0db29ea08afe900405f) )
ROM_END
/* 95681-2 */
@@ -2939,6 +2710,9 @@ ROM_START( ts2j )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ts2-01m.3b", 0x0000000, 0x400000, CRC(d7a505e0) SHA1(f1b0cdea712101f695bd326eccd753eb79a07490) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp02", 0x000000, 0x000008, CRC(40b0b697) SHA1(a8ee10fc9c0257de0a9ed0db29ea08afe900405f) )
ROM_END
/* 95681-2 */
@@ -2963,6 +2737,9 @@ ROM_START( starglad )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ps1-01m.3b", 0x0000000, 0x400000, CRC(0bfb17aa) SHA1(cf4482785a2a33ad814c8b1461c5bc8e8e027895) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp03", 0x000000, 0x000008, CRC(27970400) SHA1(b240e3587d39315840c7471a0e97d7cd8275886c) )
ROM_END
/* 95681-2 */
@@ -2987,6 +2764,9 @@ ROM_START( stargladj )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ps1-01m.3b", 0x0000000, 0x400000, CRC(0bfb17aa) SHA1(cf4482785a2a33ad814c8b1461c5bc8e8e027895) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp03", 0x000000, 0x000008, CRC(27970400) SHA1(b240e3587d39315840c7471a0e97d7cd8275886c) )
ROM_END
/* 95681-2 */
@@ -3004,6 +2784,7 @@ TIME
As well as a hand written sum16 checksum of D04B (which matches dump)
*/
+
ROM_START( glpracr )
CPZN1_BIOS
@@ -3020,6 +2801,9 @@ ROM_START( glpracr )
/* Socket 1.3B is not populated, pcb verified */
ROM_REGION( 0x400000, "qsound", ROMREGION_ERASE00 ) /* Q Sound Samples */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp05", 0x000000, 0x000008, CRC(ae930900) SHA1(01fd03487943e21e3634285ef50107c6c2c4f6ca) )
ROM_END
/* 95681-2 */
@@ -3039,6 +2823,9 @@ ROM_START( glpracrj )
/* Socket 1.3B is not populated, pcb verified */
ROM_REGION( 0x400000, "qsound", ROMREGION_ERASE00 ) /* Q Sound Samples */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp05", 0x000000, 0x000008, CRC(ae930900) SHA1(01fd03487943e21e3634285ef50107c6c2c4f6ca) )
ROM_END
/* 95681-2 */
@@ -3063,6 +2850,9 @@ ROM_START( sfex )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* 95681-2 */
@@ -3087,6 +2877,9 @@ ROM_START( sfexu )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* 95681-2 */
@@ -3111,6 +2904,9 @@ ROM_START( sfexa )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* 95681-2 */
@@ -3135,6 +2931,9 @@ ROM_START( sfexj )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* 95681-2 */
@@ -3159,6 +2958,9 @@ ROM_START( sfexp )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* 95681-2 */
@@ -3183,6 +2985,9 @@ ROM_START( sfexpu1 )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* 95681-2 */
@@ -3207,6 +3012,9 @@ ROM_START( sfexpj )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* 95681-2 */
@@ -3231,22 +3039,29 @@ ROM_START( sfexpj1 )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sfe-01m.3b", 0x0000000, 0x400000, CRC(f5afff0d) SHA1(7f9ac32ba0a3d9c6fef367e36a92d47c9ac1feb3) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp04", 0x000000, 0x000008, CRC(e0dc24ae) SHA1(17d6e3dc11308195f4c46a6cd8093db9eaf584e5) )
ROM_END
/* Capcom ZN2 */
#define CPZN2_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-3002c.353", 0x0000000, 0x080000, CRC(e860ea8b) SHA1(66e7e1d4e426466b8f48a2ba055a91b475569504) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "m534002c-59.ic353", 0x0000000, 0x080000, CRC(e860ea8b) SHA1(66e7e1d4e426466b8f48a2ba055a91b475569504) ) /* english */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "cp10.ic652", 0x000000, 0x000008, CRC(7808fcef) SHA1(3c3fb8227b05dace042dc1429b9f2355b1a15638) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( cpzn2 )
+ROM_START( coh3002c )
CPZN2_BIOS
+
ROM_REGION32_LE( 0x80000, "countryrom", ROMREGION_ERASE00 )
ROM_REGION32_LE( 0x3000000, "maskroms", ROMREGION_ERASE00 )
ROM_REGION( 0x50000, "audiocpu", ROMREGION_ERASE00 )
ROM_REGION( 0x400000, "qsound", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
/* 95681-2 */
@@ -3274,6 +3089,9 @@ ROM_START( rvschool )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "jst-01m.3b", 0x0000000, 0x400000, CRC(9a7c98f9) SHA1(764c6c4f41047e1f36d2dceac4aa9b943a9d529a) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp06", 0x000000, 0x000008, CRC(99b22128) SHA1(9a773927ead72ed4ded44d53d89ecb123e1d3f17) )
ROM_END
/* 95681-2 */
@@ -3301,6 +3119,9 @@ ROM_START( rvschoolu )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "jst-01m.3b", 0x0000000, 0x400000, CRC(9a7c98f9) SHA1(764c6c4f41047e1f36d2dceac4aa9b943a9d529a) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp06", 0x000000, 0x000008, CRC(99b22128) SHA1(9a773927ead72ed4ded44d53d89ecb123e1d3f17) )
ROM_END
/* 95681-2 */
@@ -3328,6 +3149,9 @@ ROM_START( rvschoola )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "jst-01m.3b", 0x0000000, 0x400000, CRC(9a7c98f9) SHA1(764c6c4f41047e1f36d2dceac4aa9b943a9d529a) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp06", 0x000000, 0x000008, CRC(99b22128) SHA1(9a773927ead72ed4ded44d53d89ecb123e1d3f17) )
ROM_END
/* 95681-2 */
@@ -3355,6 +3179,9 @@ ROM_START( jgakuen )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "jst-01m.3b", 0x0000000, 0x400000, CRC(9a7c98f9) SHA1(764c6c4f41047e1f36d2dceac4aa9b943a9d529a) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp06", 0x000000, 0x000008, CRC(99b22128) SHA1(9a773927ead72ed4ded44d53d89ecb123e1d3f17) )
ROM_END
/* Hereafter Capcom games will use only the new game board 97695-1. */
@@ -3383,6 +3210,9 @@ ROM_START( sfex2 )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ex2-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp08", 0x000000, 0x000008, CRC(a63d6fa6) SHA1(68995438a1e90ff9aa59090e7e031d51c68c4d73) )
ROM_END
/* 97695-1 */
@@ -3405,6 +3235,9 @@ ROM_START( sfex2a )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ex2-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp08", 0x000000, 0x000008, CRC(a63d6fa6) SHA1(68995438a1e90ff9aa59090e7e031d51c68c4d73) )
ROM_END
/* 97695-1 */
@@ -3427,6 +3260,9 @@ ROM_START( sfex2h )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ex2-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp08", 0x000000, 0x000008, CRC(a63d6fa6) SHA1(68995438a1e90ff9aa59090e7e031d51c68c4d73) )
ROM_END
/* 97695-1 */
@@ -3449,6 +3285,9 @@ ROM_START( sfex2j )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ex2-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp08", 0x000000, 0x000008, CRC(a63d6fa6) SHA1(68995438a1e90ff9aa59090e7e031d51c68c4d73) )
ROM_END
/* 97695-1 */
@@ -3472,6 +3311,9 @@ ROM_START( plsmaswd )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sg2-01m.3a", 0x0000000, 0x400000, CRC(643ea27b) SHA1(40747432d5cfebac54d3824b6a6f26b5e7742fc1) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp07", 0x000000, 0x000008, CRC(4c1acdc2) SHA1(8c0b4ae95d6ba89e4bdf9fce5e2605c2728ae67f) )
ROM_END
/* 97695-1 */
@@ -3495,6 +3337,9 @@ ROM_START( plsmaswda )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sg2-01m.3a", 0x0000000, 0x400000, CRC(643ea27b) SHA1(40747432d5cfebac54d3824b6a6f26b5e7742fc1) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp07", 0x000000, 0x000008, CRC(4c1acdc2) SHA1(8c0b4ae95d6ba89e4bdf9fce5e2605c2728ae67f) )
ROM_END
/* 97695-1 */
@@ -3518,6 +3363,9 @@ ROM_START( stargld2 )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "sg2-01m.3a", 0x0000000, 0x400000, CRC(643ea27b) SHA1(40747432d5cfebac54d3824b6a6f26b5e7742fc1) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp07", 0x000000, 0x000008, CRC(4c1acdc2) SHA1(8c0b4ae95d6ba89e4bdf9fce5e2605c2728ae67f) )
ROM_END
/* 97695-1 */
@@ -3537,6 +3385,9 @@ ROM_START( tgmj )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "ate-01m.3a", 0x0000000, 0x400000, CRC(a21c6521) SHA1(560e4855f6e00def5277bdd12064b49e55c3b46b) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp11", 0x000000, 0x000008, CRC(22d77c59) SHA1(8e837a2f1b0c146ff835f20f4b9f6f9eb7e5ff04) )
ROM_END
/* 97695-1 */
@@ -3561,6 +3412,9 @@ ROM_START( techromn )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "kio-01m.3a", 0x0000000, 0x400000, CRC(6dc5bd07) SHA1(e1755a48465f741691ea0fa1166cb2dc09210ed9) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp09", 0x000000, 0x000008, CRC(02939f83) SHA1(a2a4d5218609c28da8175647cfb5114064d3265e) )
ROM_END
/* 97695-1 */
@@ -3585,6 +3439,9 @@ ROM_START( techromnu )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "kio-01m.3a", 0x0000000, 0x400000, CRC(6dc5bd07) SHA1(e1755a48465f741691ea0fa1166cb2dc09210ed9) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp09", 0x000000, 0x000008, CRC(02939f83) SHA1(a2a4d5218609c28da8175647cfb5114064d3265e) )
ROM_END
/* 97695-1 */
@@ -3609,6 +3466,9 @@ ROM_START( kikaioh )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "kio-01m.3a", 0x0000000, 0x400000, CRC(6dc5bd07) SHA1(e1755a48465f741691ea0fa1166cb2dc09210ed9) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp09", 0x000000, 0x000008, CRC(02939f83) SHA1(a2a4d5218609c28da8175647cfb5114064d3265e) )
ROM_END
/* 97695-1 */
@@ -3633,6 +3493,9 @@ ROM_START( sfex2p )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "x2p-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp12", 0x000000, 0x000008, CRC(7cc2ed68) SHA1(a409ae837665700bdc4e3aa7c41a418d5b792940) )
ROM_END
/* 97695-1 */
@@ -3657,6 +3520,9 @@ ROM_START( sfex2pa )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "x2p-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp12", 0x000000, 0x000008, CRC(7cc2ed68) SHA1(a409ae837665700bdc4e3aa7c41a418d5b792940) )
ROM_END
/* 97695-1 */
@@ -3681,6 +3547,9 @@ ROM_START( sfex2ph )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "x2p-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp12", 0x000000, 0x000008, CRC(7cc2ed68) SHA1(a409ae837665700bdc4e3aa7c41a418d5b792940) )
ROM_END
/* 97695-1 */
@@ -3705,6 +3574,9 @@ ROM_START( sfex2pj )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "x2p-01m.3a", 0x0000000, 0x400000, CRC(14a5bb0e) SHA1(dfe3c3a53bd4c58743d8039b5344d3afbe2a9c24) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp12", 0x000000, 0x000008, CRC(7cc2ed68) SHA1(a409ae837665700bdc4e3aa7c41a418d5b792940) )
ROM_END
/* 97695-1 */
@@ -3729,6 +3601,9 @@ ROM_START( strider2 )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "hr2-01m.3a", 0x0000000, 0x200000, CRC(510a16d1) SHA1(05f10c2921a4d3b1fab4d0a4ea06351809bdbb07) )
ROM_RELOAD( 0x0200000, 0x200000 )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp13", 0x000000, 0x000008, CRC(606edf50) SHA1(db711a9da4ecaf74e0b37deb8eb94e8b8fbae041) )
ROM_END
/* 97695-1 */
@@ -3753,6 +3628,9 @@ ROM_START( strider2a )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "hr2-01m.3a", 0x0000000, 0x200000, CRC(510a16d1) SHA1(05f10c2921a4d3b1fab4d0a4ea06351809bdbb07) )
ROM_RELOAD( 0x0200000, 0x200000 )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp13", 0x000000, 0x000008, CRC(606edf50) SHA1(db711a9da4ecaf74e0b37deb8eb94e8b8fbae041) )
ROM_END
/* 97695-1 */
@@ -3777,19 +3655,26 @@ ROM_START( shiryu2 )
ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */
ROM_LOAD16_WORD_SWAP( "hr2-01m.3a", 0x0000000, 0x200000, CRC(510a16d1) SHA1(05f10c2921a4d3b1fab4d0a4ea06351809bdbb07) )
ROM_RELOAD( 0x0200000, 0x200000 )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "cp13", 0x000000, 0x000008, CRC(606edf50) SHA1(db711a9da4ecaf74e0b37deb8eb94e8b8fbae041) )
ROM_END
/* Tecmo */
#define TPS_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-1002m.353", 0x0000000, 0x080000, CRC(69ffbcb4) SHA1(03eb2febfab3fcde716defff291babd9392de965) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "m534002c-61.ic353", 0x0000000, 0x080000, CRC(69ffbcb4) SHA1(03eb2febfab3fcde716defff291babd9392de965) ) /* english */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "mg01.ic652", 0x000000, 0x000008, CRC(50dc8322) SHA1(cef4011c6c06d6fce546e1db5d9fbae155eabf57) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( tps )
+ROM_START( coh1002m )
TPS_BIOS
+
ROM_REGION32_LE( 0x02800000, "bankedroms", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
/*
@@ -3799,8 +3684,6 @@ ROM_END
*/
-
-
ROM_START( glpracr2 )
TPS_BIOS
@@ -3815,6 +3698,9 @@ ROM_START( glpracr2 )
ROM_LOAD( "gra2-5.222", 0x1c00000, 0x400000, BAD_DUMP CRC(94a363c1) SHA1(4c53822a672ac99b001c9fe82f9d0f8496989e67) ) // gra2-5.222 BADADDR xxxxxxxxxxxxxxxxxxx--x
ROM_LOAD( "gra2-6.223", 0x2000000, 0x400000, CRC(8c6b4c4c) SHA1(0053f736dcd437c01da8cadd820e8af658ce6077) )
ROM_LOAD( "gra2-7.323", 0x2400000, 0x400000, CRC(7dfb6c54) SHA1(6e9a9a4172f957ba354ddd82c30735a56c5934b1) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg02", 0x000000, 0x000008, CRC(ce1d5558) SHA1(1d704636b14bb11889c06b344043555803ad6e08) )
ROM_END
ROM_START( glpracr2j )
@@ -3831,6 +3717,9 @@ ROM_START( glpracr2j )
ROM_LOAD( "gra2-5.222", 0x1c00000, 0x400000, BAD_DUMP CRC(94a363c1) SHA1(4c53822a672ac99b001c9fe82f9d0f8496989e67) ) // gra2-5.222 BADADDR xxxxxxxxxxxxxxxxxxx--x
ROM_LOAD( "gra2-6.223", 0x2000000, 0x400000, CRC(8c6b4c4c) SHA1(0053f736dcd437c01da8cadd820e8af658ce6077) )
ROM_LOAD( "gra2-7.323", 0x2400000, 0x400000, CRC(7dfb6c54) SHA1(6e9a9a4172f957ba354ddd82c30735a56c5934b1) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg02", 0x000000, 0x000008, CRC(ce1d5558) SHA1(1d704636b14bb11889c06b344043555803ad6e08) )
ROM_END
ROM_START( glpracr2l )
@@ -3850,6 +3739,9 @@ ROM_START( glpracr2l )
ROM_REGION( 0x040000, "link", 0 )
ROM_LOAD( "link3118.bin", 0x0000000, 0x040000, CRC(a4d4761e) SHA1(3fb25dfa5220d25093588d9501e0666214491100) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg02", 0x000000, 0x000008, CRC(ce1d5558) SHA1(1d704636b14bb11889c06b344043555803ad6e08) )
ROM_END
ROM_START( cbaj )
@@ -3874,6 +3766,9 @@ ROM_START( cbaj )
ROM_REGION( 0x800000, "ymz", 0 ) /* YMZ280B Sound Samples */
ROM_LOAD( "cb-vo.5120", 0x000000, 0x400000, CRC(afb05d6d) SHA1(0c08010579813814fbf8a978cf4376bab18697a4) )
ROM_LOAD( "cb-se.5121", 0x400000, 0x400000, CRC(f12b3db9) SHA1(d5231ad664603050bdca2081b114b07fc905ddc2) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg03", 0x000000, 0x000008, CRC(8be79633) SHA1(f38f881b6139eb8368e593904cb50b6e68bdf2e9) )
ROM_END
ROM_START( shngmtkb )
@@ -3886,6 +3781,9 @@ ROM_START( shngmtkb )
ROM_LOAD( "sh-01.218", 0x0c00000, 0x400000, CRC(5a84ea96) SHA1(af4972cc10706999361d7505b975f5f1e1fc6761) )
ROM_LOAD( "sh-02.219", 0x1000000, 0x400000, CRC(c8f80d76) SHA1(51e4eac6cec8e37e5b8c0e7d341feea574add7da) )
ROM_LOAD( "sh-03.220", 0x1400000, 0x400000, CRC(daaa4c73) SHA1(eb31d4cadd9eba3d3431f3f6ef880bb2effa0b9f) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg04", 0x000000, 0x000008, CRC(2711a75f) SHA1(400cd6f28826ba0ad1125eda21507e5ebf5caccf) )
ROM_END
ROM_START( doapp )
@@ -3900,6 +3798,9 @@ ROM_START( doapp )
ROM_LOAD( "doapp-3.219", 0x1000000, 0x400000, CRC(1c6540f3) SHA1(8631fde93a1da6325d7b31c7edf12c964f0ac4fc) )
ROM_LOAD( "doapp-4.220", 0x1400000, 0x400000, CRC(f83bacf7) SHA1(5bd66da993f0db966581dde80dd7e5b377754412) )
ROM_LOAD( "doapp-5.221", 0x1800000, 0x400000, CRC(e11e8b71) SHA1(b1d1b9532b5f074ce216a603436d5674d136865d) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg05", 0x000000, 0x000008, CRC(5748a4ca) SHA1(c88d73f6a646a9ddefdfd84cba70d591759c069f) )
ROM_END
ROM_START( tondemo )
@@ -3913,6 +3814,9 @@ ROM_START( tondemo )
ROM_LOAD( "tca-2.219", 0x1000000, 0x400000, CRC(89b8e1a8) SHA1(70c5f0f2d0a7869e29b62b32fa485f941b683678) )
ROM_LOAD( "tca-3.220", 0x1400000, 0x400000, CRC(4fcf8032) SHA1(3ea815548c3bda32b1d4e88454c29e5025431b1c) )
ROM_LOAD( "tca-4.221", 0x1800000, 0x400000, CRC(c9e23f25) SHA1(145d4e7f0cb67d2552559ce90305a56802a253f9) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg09", 0x000000, 0x000008, CRC(bb4a157c) SHA1(8ea729c3c2694bee12292b9654b86ff6a9e45f94) ) // matches et05
ROM_END
ROM_START( glpracr3 )
@@ -3932,8 +3836,10 @@ ROM_START( glpracr3 )
ROM_REGION( 0x200, "misc", 0 )
ROM_LOAD( "rom1.gal16v8d.u0117.bin", 0x0000, 0x117, CRC(cf8ebc23) SHA1(0662f8ba418eb9187fb7a86cc8c0d86220dcdbf0) ) // unprotected, verified on PCB, near the MG08 security chip
-ROM_END
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg08", 0x000000, 0x000008, CRC(679367fe) SHA1(495b03e1cdad9d6aaf509b73d837340e2b1bb23b) )
+ROM_END
ROM_START( glpracr3j )
TPS_BIOS
@@ -3949,10 +3855,11 @@ ROM_START( glpracr3j )
ROM_LOAD( "gra3-5.221", 0x1800000, 0x400000, CRC(4994fb17) SHA1(59b3e6c333e55ca8b6b4b00cd52b51e3e59a5657) )
ROM_LOAD( "gra3-6.222", 0x1c00000, 0x400000, CRC(1362c1af) SHA1(eae5b3cb11d361b3aa3f572e49800c0b2e3544ca) )
ROM_LOAD( "gra3-7.223", 0x2000000, 0x400000, CRC(73565e1f) SHA1(74311ee94e3abc8428b4a8b1c6c3dacd883b5646) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg08", 0x000000, 0x000008, CRC(679367fe) SHA1(495b03e1cdad9d6aaf509b73d837340e2b1bb23b) )
ROM_END
-
-
ROM_START( tecmowcm )
TPS_BIOS
@@ -3964,6 +3871,9 @@ ROM_START( tecmowcm )
ROM_LOAD( "twm-2.218", 0x0c00000, 0x400000, CRC(cb852264) SHA1(a7a2f3d6f723ddd80c57ac63522a1a0bf526a7b3) )
ROM_LOAD( "twm-3.219", 0x1000000, 0x400000, CRC(7c9f6925) SHA1(32519a238810d02181eaf5c2344334c523fa77d1) )
ROM_LOAD( "twm-4.220", 0x1400000, 0x400000, CRC(17cd0ec9) SHA1(37581530e974af692ab71471d0238801cd19c843) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg13", 0x000000, 0x000008, CRC(5778418e) SHA1(7c4d6922bbe726e0f25297f8528e94b41023581b) )
ROM_END
ROM_START( flamegun )
@@ -3984,6 +3894,9 @@ ROM_START( flamegun )
ROM_LOAD( "fg09.324", 0x2800000, 0x400000, CRC(82f129b4) SHA1(c0dcbc908c12f7cecbb051a671649edd20bac32c) )
ROM_LOAD( "fg0a.325", 0x2c00000, 0x400000, CRC(f8d2b20c) SHA1(d0c9e413d72772ab8710e217d228e001b28667c8) )
ROM_LOAD( "fb0b.326", 0x3000000, 0x400000, CRC(ad78ec79) SHA1(7e37a90a64c70f2c0024eaf30e1e4e028c0d858e) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg06", 0x000000, 0x000008, CRC(a10556fe) SHA1(5c2ecbb9319517137c0bbce1e38e75c6aa5e8b6f) )
ROM_END
ROM_START( flamegunj )
@@ -4004,6 +3917,9 @@ ROM_START( flamegunj )
ROM_LOAD( "fg09.324", 0x2800000, 0x400000, CRC(82f129b4) SHA1(c0dcbc908c12f7cecbb051a671649edd20bac32c) )
ROM_LOAD( "fg0a.325", 0x2c00000, 0x400000, CRC(f8d2b20c) SHA1(d0c9e413d72772ab8710e217d228e001b28667c8) )
ROM_LOAD( "fb0b.326", 0x3000000, 0x400000, CRC(ad78ec79) SHA1(7e37a90a64c70f2c0024eaf30e1e4e028c0d858e) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg06", 0x000000, 0x000008, CRC(a10556fe) SHA1(5c2ecbb9319517137c0bbce1e38e75c6aa5e8b6f) )
ROM_END
ROM_START( lpadv )
@@ -4014,15 +3930,21 @@ ROM_START( lpadv )
ROM_LOAD16_BYTE( "lp_4.u0120", 0x000000, 0x100000, CRC(12fffc02) SHA1(3294b65e4a0bbf501785565dd0c1f36f9bcea969) )
ROM_LOAD( "rp00.u0216", 0x400000, 0x400000, CRC(d759d0d4) SHA1(47b009a5dfa81611276b1376bdab44dfad597e85) )
ROM_LOAD( "rp01.u0217", 0x800000, 0x400000, CRC(5be576e1) SHA1(e24a96d179016d6d65205079874b35500760a642) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg07", 0x000000, 0x000008, CRC(afec0e8e) SHA1(dc3c696181dfb5b7426d882094be5eee2619e2a5) )
ROM_END
ROM_START( mfjump )
- TPS_BIOS
+ TPS_BIOS
ROM_REGION32_LE( 0x02800000, "bankedroms", 0 )
ROM_LOAD16_BYTE( "mfj-o.119", 0x0000001, 0x100000, CRC(0d724dc5) SHA1(2ba388fe6254c0cf3847fd173a414ee5ca31f4f4) )
ROM_LOAD16_BYTE( "mfj-e.120", 0x0000000, 0x100000, CRC(86292bca) SHA1(b6a25ab828da3d5c8f6d945336513485708f3f5b) )
ROM_LOAD( "mfj.216", 0x0400000, 0x400000, CRC(0d518dba) SHA1(100cd4d0a1e678e660336027f067a9a1f5cbad3e) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg14", 0x000000, 0x000008, CRC(5fa9a8c2) SHA1(d927760279ebda185fecf879e62ceefe938acd81) )
ROM_END
ROM_START( tblkkuzu )
@@ -4032,6 +3954,9 @@ ROM_START( tblkkuzu )
ROM_LOAD16_BYTE( "tbk.u119", 0x0000001, 0x100000, CRC(621b07e1) SHA1(30773aaa333fdee7ef55db2f8adde010688abce1) )
ROM_LOAD16_BYTE( "tbk.u120", 0x0000000, 0x100000, CRC(bb390f7d) SHA1(6bce88448fbb5308952f8c221e786be8aa51ceff) )
ROM_LOAD( "tbk.u0216", 0x0400000, 0x400000, CRC(41f8285f) SHA1(3326ab83d96d51ed31fb5c2f30630ff480d45282) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg12", 0x000000, 0x000008, CRC(584e6ea2) SHA1(f60fb556090d31f0f0fa1f8d87815eff6d2498a4) )
ROM_END
ROM_START( 1on1gov )
@@ -4052,20 +3977,27 @@ ROM_START( 1on1gov )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
/* Factory defaulted NVRAM, counters blanked, required security code included - region can be changed in test menu (default Japanese) */
ROM_LOAD( "at28c16", 0x0000000, 0x000800, CRC(fe992f29) SHA1(73c9c4d40abd8f3a95d4eb20f3c65f3a5cdd1203) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg10", 0x000000, 0x000008, CRC(8a73da40) SHA1(d6803a4c1d240dec2a4d8ac43aa6d7e9df947026) )
ROM_END
/* video system */
#define KN_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-1002v.353", 0x0000000, 0x080000, CRC(5ff165f3) SHA1(8f59314c1093446b9bcb06d232244da6df78e206) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "coh-1002v.ic353", 0x0000000, 0x080000, CRC(5ff165f3) SHA1(8f59314c1093446b9bcb06d232244da6df78e206) ) /* english */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "kn01.ic652", 0x000000, 0x000008, CRC(1ce271df) SHA1(b01479dc75a4a8a86bee7ac7cd10af2bda332544) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( vspsx )
+ROM_START( coh1002v )
KN_BIOS
+
ROM_REGION32_LE( 0x0280000, "fixedroms", ROMREGION_ERASE00 )
ROM_REGION32_LE( 0x1800000, "bankedroms", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
/*
@@ -4099,6 +4031,9 @@ ROM_START( aerofgts )
ROM_LOAD( "ic14.bin", 0x0c00000, 0x400000, CRC(c4ef1424) SHA1(1734a6ee6d0be94d24afefcf2a125b74747f53d0) )
ROM_LOAD( "ic15.bin", 0x1000000, 0x400000, CRC(2551d816) SHA1(e1500d4bfa8cc55220c366a5852263ac2070da82) )
ROM_LOAD( "ic16.bin", 0x1400000, 0x400000, CRC(21b401bc) SHA1(89374b80453c474aa1dd3a219422f557f95a262c) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "kn02", 0x000000, 0x000008, CRC(0d2001b4) SHA1(740d7794a1b94a42351d81947cbfae138c56ecc9) )
ROM_END
ROM_START( sncwgltd )
@@ -4118,6 +4053,9 @@ ROM_START( sncwgltd )
ROM_LOAD( "ic14.bin", 0x0c00000, 0x400000, CRC(c4ef1424) SHA1(1734a6ee6d0be94d24afefcf2a125b74747f53d0) )
ROM_LOAD( "ic15.bin", 0x1000000, 0x400000, CRC(2551d816) SHA1(e1500d4bfa8cc55220c366a5852263ac2070da82) )
ROM_LOAD( "ic16.bin", 0x1400000, 0x400000, CRC(21b401bc) SHA1(89374b80453c474aa1dd3a219422f557f95a262c) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "kn02", 0x000000, 0x000008, CRC(0d2001b4) SHA1(740d7794a1b94a42351d81947cbfae138c56ecc9) )
ROM_END
@@ -4125,15 +4063,19 @@ ROM_END
#define TAITOFX1_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-1000t.353", 0x0000000, 0x080000, CRC(e3f23b6e) SHA1(e18907cf8c6ba54d96edba0a9a00487a90219e0d) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "m534002c-14.ic353", 0x0000000, 0x080000, CRC(e3f23b6e) SHA1(e18907cf8c6ba54d96edba0a9a00487a90219e0d) ) /* japanese */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "tt01.ic652", 0x000000, 0x000008, CRC(daac13e7) SHA1(96d94f2b06fb7ecd91454969f4959a583ffb9d5a) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( taitofx1 )
+ROM_START( coh1000t )
TAITOFX1_BIOS
+
ROM_REGION32_LE( 0x01000000, "bankedroms", ROMREGION_ERASE00 )
ROM_REGION( 0x080000, "audiocpu", ROMREGION_ERASE00 )
ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
ROM_START( ftimpcta )
@@ -4152,6 +4094,9 @@ ROM_START( ftimpcta )
ROM_REGION32_LE( 0x600000, "zsg2", 0 )
ROM_LOAD( "e25-04.27", 0x0000000, 0x400000, CRC(09a66d35) SHA1(f0df24bc9bfc9eb0f5150dc035c19fc5b8a39bf9) )
ROM_LOAD( "e25-05.28", 0x0400000, 0x200000, CRC(3fb57636) SHA1(aa38bfac11ecf10fd55143cf4525a2a529be8bb6) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt05", 0x000000, 0x000008, CRC(66045c83) SHA1(b040fa87e855fd512fa99e80056d37aba895805b) )
ROM_END
ROM_START( ftimpact )
@@ -4170,6 +4115,9 @@ ROM_START( ftimpact )
ROM_REGION32_LE( 0x600000, "zsg2", 0 )
ROM_LOAD( "e25-04.27", 0x0000000, 0x400000, CRC(09a66d35) SHA1(f0df24bc9bfc9eb0f5150dc035c19fc5b8a39bf9) )
ROM_LOAD( "e25-05.28", 0x0400000, 0x200000, CRC(3fb57636) SHA1(aa38bfac11ecf10fd55143cf4525a2a529be8bb6) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt05", 0x000000, 0x000008, CRC(66045c83) SHA1(b040fa87e855fd512fa99e80056d37aba895805b) )
ROM_END
ROM_START( ftimpactu )
@@ -4188,6 +4136,9 @@ ROM_START( ftimpactu )
ROM_REGION32_LE( 0x600000, "zsg2", 0 )
ROM_LOAD( "e25-04.27", 0x0000000, 0x400000, CRC(09a66d35) SHA1(f0df24bc9bfc9eb0f5150dc035c19fc5b8a39bf9) )
ROM_LOAD( "e25-05.28", 0x0400000, 0x200000, CRC(3fb57636) SHA1(aa38bfac11ecf10fd55143cf4525a2a529be8bb6) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt05", 0x000000, 0x000008, CRC(66045c83) SHA1(b040fa87e855fd512fa99e80056d37aba895805b) )
ROM_END
ROM_START( ftimpactj )
@@ -4206,6 +4157,9 @@ ROM_START( ftimpactj )
ROM_REGION32_LE( 0x600000, "zsg2", 0 )
ROM_LOAD( "e25-04.27", 0x0000000, 0x400000, CRC(09a66d35) SHA1(f0df24bc9bfc9eb0f5150dc035c19fc5b8a39bf9) )
ROM_LOAD( "e25-05.28", 0x0400000, 0x200000, CRC(3fb57636) SHA1(aa38bfac11ecf10fd55143cf4525a2a529be8bb6) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt05", 0x000000, 0x000008, CRC(66045c83) SHA1(b040fa87e855fd512fa99e80056d37aba895805b) )
ROM_END
ROM_START( gdarius )
@@ -4223,6 +4177,9 @@ ROM_START( gdarius )
ROM_REGION32_LE( 0x400000, "zsg2", 0 )
ROM_LOAD( "e39-04.27", 0x0000000, 0x400000, CRC(6ee35e68) SHA1(fdfe63203d8cecf84cb869039fb893d5b63cdd67) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt07", 0x000000, 0x000008, CRC(ccf2f332) SHA1(6eb07cd5fab29f5536fd94aa88a2b09f28cc3494) )
ROM_END
ROM_START( gdariusb )
@@ -4240,6 +4197,9 @@ ROM_START( gdariusb )
ROM_REGION32_LE( 0x400000, "zsg2", 0 )
ROM_LOAD( "e39-04.27", 0x0000000, 0x400000, CRC(6ee35e68) SHA1(fdfe63203d8cecf84cb869039fb893d5b63cdd67) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt07", 0x000000, 0x000008, CRC(ccf2f332) SHA1(6eb07cd5fab29f5536fd94aa88a2b09f28cc3494) )
ROM_END
ROM_START( gdarius2 )
@@ -4257,6 +4217,9 @@ ROM_START( gdarius2 )
ROM_REGION32_LE( 0x400000, "zsg2", 0 )
ROM_LOAD( "e39-04.27", 0x0000000, 0x400000, CRC(6ee35e68) SHA1(fdfe63203d8cecf84cb869039fb893d5b63cdd67) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt07", 0x000000, 0x000008, CRC(ccf2f332) SHA1(6eb07cd5fab29f5536fd94aa88a2b09f28cc3494) )
ROM_END
ROM_START( mgcldate )
@@ -4275,6 +4238,9 @@ ROM_START( mgcldate )
ROM_REGION( 0x400000, "ymsnd", 0 )
ROM_LOAD( "e32-04.15", 0x0000000, 0x400000, CRC(c72f9eea) SHA1(7ab8b412a8ed00a42016acb7d13d3b074155780a) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt06", 0x000000, 0x000008, CRC(ce282fc9) SHA1(dfc1f679ec70f2ff32869cfeb452acf9ac154aef) )
ROM_END
ROM_START( mgcldtex )
@@ -4293,6 +4259,9 @@ ROM_START( mgcldtex )
ROM_REGION( 0x400000, "ymsnd", 0 )
ROM_LOAD( "e32-04.15", 0x0000000, 0x400000, CRC(c72f9eea) SHA1(7ab8b412a8ed00a42016acb7d13d3b074155780a) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt06", 0x000000, 0x000008, CRC(ce282fc9) SHA1(dfc1f679ec70f2ff32869cfeb452acf9ac154aef) )
ROM_END
ROM_START( psyforce )
@@ -4312,6 +4281,9 @@ ROM_START( psyforce )
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "e22-01.15", 0x000000, 0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt03", 0x000000, 0x000008, CRC(5799d8c9) SHA1(72cf1ed0958959d085ca5f8ab8b4f883ab1cd162) )
ROM_END
ROM_START( psyforcej )
@@ -4330,6 +4302,9 @@ ROM_START( psyforcej )
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "e22-01.15", 0x000000, 0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt03", 0x000000, 0x000008, CRC(5799d8c9) SHA1(72cf1ed0958959d085ca5f8ab8b4f883ab1cd162) )
ROM_END
ROM_START( psyforcex )
@@ -4348,8 +4323,10 @@ ROM_START( psyforcex )
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "e22-01.15", 0x000000, 0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) )
-ROM_END
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt03", 0x000000, 0x000008, CRC(5799d8c9) SHA1(72cf1ed0958959d085ca5f8ab8b4f883ab1cd162) )
+ROM_END
ROM_START( raystorm )
TAITOFX1_BIOS
@@ -4365,6 +4342,9 @@ ROM_START( raystorm )
ROM_REGION32_LE( 0x400000, "zsg2", 0 )
ROM_LOAD( "e24-04.27", 0x0000000, 0x400000, CRC(f403493a) SHA1(3e49fd2a060a3893e26f14cc3cf47c4ba91e17d4) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt04", 0x000000, 0x000008, CRC(013363df) SHA1(f04d04c7c858a8e2eaff0c51e782ad76d6ebbed1) )
ROM_END
ROM_START( raystormo )
@@ -4381,6 +4361,9 @@ ROM_START( raystormo )
ROM_REGION32_LE( 0x400000, "zsg2", 0 )
ROM_LOAD( "e24-04.27", 0x0000000, 0x400000, CRC(f403493a) SHA1(3e49fd2a060a3893e26f14cc3cf47c4ba91e17d4) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt04", 0x000000, 0x000008, CRC(013363df) SHA1(f04d04c7c858a8e2eaff0c51e782ad76d6ebbed1) )
ROM_END
ROM_START( raystormu )
@@ -4397,6 +4380,9 @@ ROM_START( raystormu )
ROM_REGION32_LE( 0x400000, "zsg2", 0 )
ROM_LOAD( "e24-04.27", 0x0000000, 0x400000, CRC(f403493a) SHA1(3e49fd2a060a3893e26f14cc3cf47c4ba91e17d4) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt04", 0x000000, 0x000008, CRC(013363df) SHA1(f04d04c7c858a8e2eaff0c51e782ad76d6ebbed1) )
ROM_END
ROM_START( raystormj )
@@ -4413,6 +4399,9 @@ ROM_START( raystormj )
ROM_REGION32_LE( 0x400000, "zsg2", 0 )
ROM_LOAD( "e24-04.27", 0x0000000, 0x400000, CRC(f403493a) SHA1(3e49fd2a060a3893e26f14cc3cf47c4ba91e17d4) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt04", 0x000000, 0x000008, CRC(013363df) SHA1(f04d04c7c858a8e2eaff0c51e782ad76d6ebbed1) )
ROM_END
ROM_START( sfchamp )
@@ -4432,6 +4421,9 @@ ROM_START( sfchamp )
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "e18-01.15", 0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt02", 0x000000, 0x000008, CRC(b1585ac7) SHA1(d967eea539de2dd7a8d13fa2785c3033065bed9c) )
ROM_END
ROM_START( sfchampo )
@@ -4451,6 +4443,9 @@ ROM_START( sfchampo )
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "e18-01.15", 0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt02", 0x000000, 0x000008, CRC(b1585ac7) SHA1(d967eea539de2dd7a8d13fa2785c3033065bed9c) )
ROM_END
ROM_START( sfchampu )
@@ -4470,6 +4465,9 @@ ROM_START( sfchampu )
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "e18-01.15", 0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt02", 0x000000, 0x000008, CRC(b1585ac7) SHA1(d967eea539de2dd7a8d13fa2785c3033065bed9c) )
ROM_END
ROM_START( sfchampj )
@@ -4489,21 +4487,28 @@ ROM_START( sfchampj )
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "e18-01.15", 0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tt02", 0x000000, 0x000008, CRC(b1585ac7) SHA1(d967eea539de2dd7a8d13fa2785c3033065bed9c) )
ROM_END
/* Eighting/Raizing */
#define PSARC95_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-1002e.353", 0x000000, 0x080000, CRC(910f3a8b) SHA1(cd68532967a25f476a6d73473ec6b6f4df2e1689) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "m27c402cz-54.ic353", 0x000000, 0x080000, CRC(910f3a8b) SHA1(cd68532967a25f476a6d73473ec6b6f4df2e1689) ) /* english */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "et01.ic652", 0x000000, 0x000008, CRC(a7dd922e) SHA1(1069c1d9015028a51a1b314cfacb014ea90aa425) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( psarc95 )
+ROM_START( coh1002e )
PSARC95_BIOS
+
ROM_REGION32_LE( 0x1800000, "bankedroms", ROMREGION_ERASE00 )
ROM_REGION( 0x080000, "audiocpu", ROMREGION_ERASE00 )
ROM_REGION( 0x400000, "ymf", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
ROM_START( beastrzr )
@@ -4523,6 +4528,9 @@ ROM_START( beastrzr )
ROM_REGION( 0x400000, "ymf", 0 )
ROM_LOAD( "ra-b.roar3_rom-3.u0326", 0x000000, 0x400000, CRC(b74cc4d1) SHA1(eb5485582a12959ae06927a2f1d8a7e63e0f956f) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et02", 0x000000, 0x000008, CRC(187ce61a) SHA1(521122b0f7b3f278dd2a2b1d73c252b952b5f55d) )
ROM_END
ROM_START( bldyroar )
@@ -4542,6 +4550,9 @@ ROM_START( bldyroar )
ROM_REGION( 0x400000, "ymf", 0 )
ROM_LOAD( "ra-b.roar3_rom-3.u0326", 0x000000, 0x400000, CRC(b74cc4d1) SHA1(eb5485582a12959ae06927a2f1d8a7e63e0f956f) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et02", 0x000000, 0x000008, CRC(187ce61a) SHA1(521122b0f7b3f278dd2a2b1d73c252b952b5f55d) )
ROM_END
ROM_START( beastrzrb ) /* bootleg board */
@@ -4562,6 +4573,9 @@ ROM_START( beastrzrb ) /* bootleg board */
ROM_LOAD( "27c4096.1", 0x000000, 0x080000, CRC(217734a1) SHA1(de4f519215123c09b3b5f27509b4d74604b5e03d) )
ROM_LOAD( "27c4096.2", 0x080000, 0x080000, CRC(d1f2a9b2) SHA1(d1475a453ce4e3b9f2ff59abedf0f57ba3c408fe) )
ROM_LOAD( "27c240.3", 0x100000, 0x080000, CRC(509cdc8b) SHA1(8b92b79be09de56e7d40c2d02fcbeca92bb60226) ) /* bad dump? (only contains 8k of data) */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et02", 0x000000, 0x000008, CRC(187ce61a) SHA1(521122b0f7b3f278dd2a2b1d73c252b952b5f55d) )
ROM_END
ROM_START( brvblade )
@@ -4581,6 +4595,9 @@ ROM_START( brvblade )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_world", 0x000, 0x800, CRC(fe7f7d34) SHA1(18f6ae14e57afa668b3eef821b4cf0a7599a21ac) ) /* preprogrammed mainboard flash for region */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg11", 0x000000, 0x000008, CRC(56d917de) SHA1(3c1cdbf552265dbff6051853d933ac34047bcdae) )
ROM_END
ROM_START( brvbladeu )
@@ -4600,6 +4617,9 @@ ROM_START( brvbladeu )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_usa", 0x000, 0x800, CRC(0a2c042f) SHA1(147651d2e55873a82295214b3b0bd6c46cdad239) ) /* preprogrammed mainboard flash for region */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg11", 0x000000, 0x000008, CRC(56d917de) SHA1(3c1cdbf552265dbff6051853d933ac34047bcdae) )
ROM_END
ROM_START( brvbladej )
@@ -4619,6 +4639,9 @@ ROM_START( brvbladej )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_japan", 0x000, 0x800, CRC(59e2d326) SHA1(53f48b6ad7243aa92b54863515f104a7a54b2810) ) /* preprogrammed mainboard flash for region */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg11", 0x000000, 0x000008, CRC(56d917de) SHA1(3c1cdbf552265dbff6051853d933ac34047bcdae) )
ROM_END
ROM_START( brvbladea )
@@ -4638,8 +4661,10 @@ ROM_START( brvbladea )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_asia", 0x000, 0x800, CRC(adb1aa3d) SHA1(118a17b8a15108666e4f9f2d1798031b3b893536) ) /* preprogrammed mainboard flash for region */
-ROM_END
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "mg11", 0x000000, 0x000008, CRC(56d917de) SHA1(3c1cdbf552265dbff6051853d933ac34047bcdae) )
+ROM_END
ROM_START( bldyror2 )
PSARC95_BIOS
@@ -4661,6 +4686,9 @@ ROM_START( bldyror2 )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_world", 0x0000000, 0x000800, CRC(01b42397) SHA1(853553a38e81e64a17c040173b29c7bfd6f79f31) ) /* preprogrammed mainboard flash for region */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et03", 0x000000, 0x000008, CRC(779b0bfd) SHA1(76a188c78083bbb2740379d53143e1efaf637b85) )
ROM_END
ROM_START( bldyror2u )
@@ -4683,6 +4711,9 @@ ROM_START( bldyror2u )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_usa", 0x0000000, 0x000800, CRC(b78d6fc3) SHA1(49d8b6f44c31d74f36cba981af7f4c7e23dd9007) ) /* preprogrammed mainboard flash for region */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et03", 0x000000, 0x000008, CRC(779b0bfd) SHA1(76a188c78083bbb2740379d53143e1efaf637b85) )
ROM_END
ROM_START( bldyror2j )
@@ -4705,6 +4736,9 @@ ROM_START( bldyror2j )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_japan", 0x0000000, 0x000800, CRC(6cb55630) SHA1(b840bc0339485dd82f7c9aa669faf90ae371218f) ) /* preprogrammed mainboard flash for region */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et03", 0x000000, 0x000008, CRC(779b0bfd) SHA1(76a188c78083bbb2740379d53143e1efaf637b85) )
ROM_END
ROM_START( bldyror2a )
@@ -4727,6 +4761,9 @@ ROM_START( bldyror2a )
ROM_REGION( 0x800, "at28c16", 0 ) /* at28c16 */
ROM_LOAD( "at28c16_asia", 0x0000000, 0x000800, CRC(da8c1a64) SHA1(14cbb751f498c96d9d8fce3eea3781ebc45f6291) ) /* preprogrammed mainboard flash for region */
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et03", 0x000000, 0x000008, CRC(779b0bfd) SHA1(76a188c78083bbb2740379d53143e1efaf637b85) )
ROM_END
ROM_START( bam2 )
@@ -4746,21 +4783,31 @@ ROM_START( bam2 )
ROM_LOAD( "mtr-bam-a09.u31", 0x2400000, 0x400000, CRC(e4bd7cec) SHA1(794d10b15a22aeed89082f4db2f3cb94aa7d807d) )
ROM_LOAD( "mtr-bam-a10.u32", 0x2800000, 0x400000, CRC(37fd1fa0) SHA1(afe846a817e499c405a5fd4ad83094270640faf3) )
+ ROM_REGION( 0x8000, "h83644", 0)
+ ROM_LOAD( "hd64f3644.u2", 0x00000, 0x8000, NO_DUMP )
+
DISK_REGION( "ata:0:hdd:image" )
DISK_IMAGE("bam2", 0, SHA1(634d9a745a82c567fc4d7ce48e3570d88326c5f9) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "et05", 0x000000, 0x000008, CRC(bb4a157c) SHA1(8ea729c3c2694bee12292b9654b86ff6a9e45f94) ) // matches mg09
ROM_END
/* Atari PSX */
#define TW_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-1000w.353", 0x000000, 0x080000, CRC(45e8a4b4) SHA1(815488d8563c85f97fbc3384ff21f08e4c88b7b7) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "msm27c402zb.ic353", 0x000000, 0x080000, CRC(45e8a4b4) SHA1(815488d8563c85f97fbc3384ff21f08e4c88b7b7) ) /* english */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "tw01.ic652", 0x000000, 0x000008, CRC(1cac067e) SHA1(8e87941bfb374172628c8a37647e3a66b7166aa8) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( atpsx )
+ROM_START( coh1000w )
TW_BIOS
+
ROM_REGION32_LE( 0x200000, "roms", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
ROM_START( primrag2 )
@@ -4774,21 +4821,27 @@ ROM_START( primrag2 )
DISK_REGION( "ide:0:hdd:image" )
DISK_IMAGE( "primrag2", 0, SHA1(bc615068ddf4fd967f770ee01c02f285c052c4c5) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "tw02", 0x000000, 0x000008, CRC(583e8e1c) SHA1(0af99e3feb3fa684883a5daefba2c38a442f3884) )
ROM_END
/* Acclaim PSX */
#define AC_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-1000a.353", 0x0000000, 0x080000, CRC(8d8d0764) SHA1(7ee83d317190bb1cef2f8f01c81eaaae47150ebb) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "m534002c-15.ic353", 0x0000000, 0x080000, CRC(8d8d0764) SHA1(7ee83d317190bb1cef2f8f01c81eaaae47150ebb) ) /* english */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "ac01.ic652", 0x000000, 0x000008, CRC(c425eaf5) SHA1(decf77ab50f7f58c641c3214a11647924f3a8998) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( acpsx )
+ROM_START( coh1000a )
AC_BIOS
- ROM_REGION32_LE( 0x2000000, "roms", ROMREGION_ERASE00 )
-ROM_END
+ ROM_REGION32_LE( 0x2000000, "roms", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
+ROM_END
ROM_START( nbajamex )
AC_BIOS
@@ -4819,8 +4872,10 @@ ROM_START( nbajamex )
ROM_REGION( 0x400000, "unknown", 0 )
ROM_LOAD( "sound0.u48", 0x000000, 0x200000, CRC(38873b67) SHA1(b2f8d32270ae604c099a1b9b71d2e06468c7d4a9) )
ROM_LOAD( "sound1.u49", 0x200000, 0x200000, CRC(57014589) SHA1(d360ff1c52424bd91a5a8d1a2a9c10bf7abb0602) )
-ROM_END
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "ac02", 0x000000, 0x000008, CRC(1412d475) SHA1(c2f62232a261870f58353d09dc0d6ce2ad17a729) )
+ROM_END
ROM_START( nbajamexa )
AC_BIOS
@@ -4850,6 +4905,9 @@ ROM_START( nbajamexa )
ROM_REGION( 0x400000, "unknown", 0 )
ROM_LOAD( "sound0.u48", 0x000000, 0x200000, CRC(38873b67) SHA1(b2f8d32270ae604c099a1b9b71d2e06468c7d4a9) )
ROM_LOAD( "sound1.u49", 0x200000, 0x200000, CRC(57014589) SHA1(d360ff1c52424bd91a5a8d1a2a9c10bf7abb0602) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "ac02", 0x000000, 0x000008, CRC(1412d475) SHA1(c2f62232a261870f58353d09dc0d6ce2ad17a729) )
ROM_END
ROM_START( jdredd )
@@ -4861,6 +4919,9 @@ ROM_START( jdredd )
DISK_REGION( "ata:0:hdd:image" )
DISK_IMAGE( "jdreddc", 0, SHA1(eee205f83e5f590f8baf36452c873d7063156bd0) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "ac02", 0x000000, 0x000008, CRC(1412d475) SHA1(c2f62232a261870f58353d09dc0d6ce2ad17a729) )
ROM_END
ROM_START( jdreddb )
@@ -4872,20 +4933,27 @@ ROM_START( jdreddb )
DISK_REGION( "ata:0:hdd:image" )
DISK_IMAGE( "jdreddb", 0, SHA1(20f696fa6e1fbf97793bac2a794631c5dd4fb39a) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "ac02", 0x000000, 0x000008, CRC(1412d475) SHA1(c2f62232a261870f58353d09dc0d6ce2ad17a729) )
ROM_END
/* Atlus */
#define ATLUS_BIOS \
ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
- ROM_LOAD( "coh-1001l.353", 0x000000, 0x080000, CRC(6721146b) SHA1(9511d24bfe25eb180fb2db0835b131cb4a12730e) ) \
- ROM_REGION( 0x2000, "mcu", 0 ) \
- ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */
+ ROM_LOAD( "m534002c-17.ic353", 0x000000, 0x080000, CRC(6721146b) SHA1(9511d24bfe25eb180fb2db0835b131cb4a12730e) ) /* english */ \
+ ROM_REGION( 0x8, "cat702_1", 0 ) \
+ ROM_LOAD( "at01.ic652", 0x000000, 0x000008, CRC(181668b3) SHA1(8d2fe1facb4473cc20b4b477aaf881f9280939cf) ) \
+ ROM_REGION( 0x2000, "upd78081", 0 ) \
+ ROM_LOAD( "78081g503.ic655", 0x0000, 0x2000, NO_DUMP )
-ROM_START( atluspsx )
+ROM_START( coh1001l )
ATLUS_BIOS
+
ROM_REGION32_LE( 0x02000000, "bankedroms", ROMREGION_ERASE00 )
ROM_REGION( 0x040000, "audiocpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8, "cat702_2", 0 ) ROM_COPY( "cat702_1", 0x0, 0x0, 0x8 )
ROM_END
ROM_START( hvnsgate )
@@ -4907,176 +4975,135 @@ ROM_START( hvnsgate )
ROM_REGION( 0x800000, "ymz", ROMREGION_ERASE00 ) /* YMZ280B Sound Samples */
ROM_LOAD( "athg-05.4136", 0x400000, 0x200000, CRC(74469a15) SHA1(0faa883900d7fd2e5240f486db33b3d868f1f05f) )
ROM_LOAD( "athg-06.4134", 0x600000, 0x200000, CRC(443ade73) SHA1(6ef6aa68c525b9749833125dcab929d1d65d3b90) )
+
+ ROM_REGION( 0x8, "cat702_2", 0 )
+ ROM_LOAD( "at02", 0x000000, 0x000008, CRC(55fe469e) SHA1(a99d41e21bd1df67b387558314763864eaae0265) )
ROM_END
/* Capcom ZN1 */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1000c.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1995, cpzn1, 0, coh1000c, zn, driver_device, 0, ROT0, "Capcom", "ZN1", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1995, ts2, cpzn1, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, ts2a, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124) Older", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, ts2j, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (Japan 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, starglad, cpzn1, starglad, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (USA 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, stargladj, starglad, starglad, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (Japan 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, glpracr, cpzn1, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (English Ver 10.17.K)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, glpracrj, glpracr, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (Japanese Ver 9.01.12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, sfex, cpzn1, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Euro 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, sfexu, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (USA 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, sfexa, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Asia 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, sfexj, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Japan 961130)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, sfexp, cpzn1, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, sfexpu1, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, sfexpj, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, sfexpj1, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, coh1000c, 0, coh1000c, zn, driver_device, 0, ROT0, "Capcom", "ZN1", MACHINE_IS_BIOS_ROOT )
+GAME( 1995, ts2, coh1000c, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, ts2a, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124) Older", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, ts2j, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (Japan 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, starglad, coh1000c, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (USA 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, stargladj, starglad, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (Japan 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, glpracr, coh1000c, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (English Ver 10.17.K)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, glpracrj, glpracr, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (Japanese Ver 9.01.12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, sfex, coh1000c, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Euro 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, sfexu, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (USA 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, sfexa, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Asia 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, sfexj, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Japan 961130)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, sfexp, coh1000c, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, sfexpu1, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, sfexpj, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, sfexpj1, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
/* Capcom ZN2 */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-3002c.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1997, cpzn2, 0, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "ZN2", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1997, rvschool, cpzn2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Euro 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, rvschoolu, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (USA 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, rvschoola, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Asia 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, jgakuen, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Shiritsu Justice Gakuen: Legion of Heroes (Japan 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, sfex2, cpzn2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980526)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, sfex2a, sfex2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Asia 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, sfex2h, sfex2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Hispanic 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, sfex2j, sfex2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Japan 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, plsmaswd, cpzn2, plsmaswd, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (USA 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, plsmaswda, plsmaswd, plsmaswd, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (Asia 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, stargld2, plsmaswd, plsmaswd, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator 2: Nightmare of Bilstein (Japan 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, tgmj, cpzn2, tgmj, zn4w, driver_device, 0, ROT0, "Arika / Capcom", "Tetris The Grand Master (Japan 980710)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, techromn, cpzn2, techromn, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (Euro 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, techromnu, techromn, techromn, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (USA 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, kikaioh, techromn, techromn, zn6b, driver_device, 0, ROT0, "Capcom", "Choukou Senki Kikaioh (Japan 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, sfex2p, cpzn2, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (USA 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, sfex2pa, sfex2p, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Asia 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, sfex2ph, sfex2p, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Hispanic 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, sfex2pj, sfex2p, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Japan 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, strider2, cpzn2, strider2, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (USA 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // random hangs / crashes
-GAME( 1999, strider2a, strider2, strider2, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (Asia 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1999, shiryu2, strider2, strider2, zn, driver_device, 0, ROT0, "Capcom", "Strider Hiryu 2 (Japan 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1997, coh3002c, 0, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "ZN2", MACHINE_IS_BIOS_ROOT )
+GAME( 1997, rvschool, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Euro 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, rvschoolu, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (USA 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, rvschoola, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Asia 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, jgakuen, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Shiritsu Justice Gakuen: Legion of Heroes (Japan 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, sfex2, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980526)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, sfex2a, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Asia 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, sfex2h, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Hispanic 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, sfex2j, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Japan 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, plsmaswd, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (USA 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, plsmaswda, plsmaswd, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (Asia 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, stargld2, plsmaswd, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator 2: Nightmare of Bilstein (Japan 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, tgmj, coh3002c, coh3002c, zn4w, driver_device, 0, ROT0, "Arika / Capcom", "Tetris The Grand Master (Japan 980710)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, techromn, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (Euro 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, techromnu, techromn, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (USA 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, kikaioh, techromn, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Choukou Senki Kikaioh (Japan 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, sfex2p, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (USA 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, sfex2pa, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Asia 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, sfex2ph, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Hispanic 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, sfex2pj, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Japan 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, strider2, coh3002c, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (USA 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // random hangs / crashes
+GAME( 1999, strider2a, strider2, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (Asia 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1999, shiryu2, strider2, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider Hiryu 2 (Japan 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
/* Atari */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1000w.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1996, atpsx, 0, coh1000w, zn, driver_device, 0, ROT0, "Atari", "Atari PSX", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1996, primrag2, atpsx, coh1000w, primrag2, driver_device, 0, ROT0, "Atari", "Primal Rage 2 (Ver 0.36a)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // locks up when starting a game
+GAME( 1996, coh1000w, 0, coh1000w, zn, driver_device, 0, ROT0, "Atari", "Atari PSX", MACHINE_IS_BIOS_ROOT )
+GAME( 1996, primrag2, coh1000w, coh1000w, primrag2, driver_device, 0, ROT0, "Atari", "Primal Rage 2 (Ver 0.36a)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // locks up when starting a game
/* Acclaim */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1000a.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1995, acpsx, 0, coh1000a, zn, driver_device, 0, ROT0, "Acclaim", "Acclaim PSX", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1996, nbajamex, acpsx, nbajamex, zn, driver_device, 0, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.10I)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, nbajamexa,nbajamex, nbajamex, zn, driver_device, 0, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, jdredd, acpsx, jdredd, jdredd, driver_device, 0, ROT0, "Acclaim", "Judge Dredd (Rev C Dec. 17 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, jdreddb, jdredd, jdredd, jdredd, driver_device, 0, ROT0, "Acclaim", "Judge Dredd (Rev B Nov. 26 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, coh1000a, 0, coh1000a, zn, driver_device, 0, ROT0, "Acclaim", "Acclaim PSX", MACHINE_IS_BIOS_ROOT )
+GAME( 1996, nbajamex, coh1000a, nbajamex, zn, driver_device, 0, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.10I)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, nbajamexa, nbajamex, nbajamex, zn, driver_device, 0, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, jdredd, coh1000a, jdredd, jdredd, driver_device, 0, ROT0, "Acclaim", "Judge Dredd (Rev C Dec. 17 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, jdreddb, jdredd, jdredd, jdredd, driver_device, 0, ROT0, "Acclaim", "Judge Dredd (Rev B Nov. 26 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
/* Tecmo */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1002m.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1997, tps, 0, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "TPS", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1997, glpracr2, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // locks up when starting a game/entering test mode
-GAME( 1997, glpracr2j, glpracr2, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1997, glpracr2l, glpracr2, coh1002ml, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 Link HW (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1998, doapp, tps, doapp, zn, driver_device, 0, ROT0, "Tecmo", "Dead Or Alive ++ (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, cbaj, tps, coh1002msnd, zn, driver_device, 0, ROT0, "UEP Systems", "Cool Boarders Arcade Jam", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, shngmtkb, tps, shngmtkb, zn, driver_device, 0, ROT0, "Sunsoft / Activision", "Shanghai Matekibuyuu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, tondemo, tps, tondemo, zn, driver_device, 0, ROT0, "Tecmo", "Tondemo Crisis (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, glpracr3, tps, glpracr3, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, glpracr3j, glpracr3, glpracr3, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, flamegun, tps, flamegun, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, flamegunj, flamegun, flamegun, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, lpadv, tps, lpadv, zn, driver_device, 0, ROT0, "Amuse World", "Logic Pro Adventure (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 2000, tblkkuzu, tps, tblkkuzu, zn, driver_device, 0, ROT0, "Tamsoft / D3 Publisher", "The Block Kuzushi (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 2000, 1on1gov, tps, 1on1gov, zn, driver_device, 0, ROT0, "Tecmo", "1 on 1 Government (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 2000, tecmowcm, tps, tecmowcm, zn, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup Millennium (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 2001, mfjump, tps, mfjump, zn, driver_device, 0, ROT0, "Tecmo", "Monster Farm Jump (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, coh1002m, 0, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "TPS", MACHINE_IS_BIOS_ROOT )
+GAME( 1997, glpracr2, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // locks up when starting a game/entering test mode
+GAME( 1997, glpracr2j, glpracr2, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1997, glpracr2l, glpracr2, coh1002ml, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 Link HW (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1998, doapp, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Dead Or Alive ++ (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, cbaj, coh1002m, coh1002msnd, zn, driver_device, 0, ROT0, "UEP Systems", "Cool Boarders Arcade Jam", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, shngmtkb, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Sunsoft / Activision", "Shanghai Matekibuyuu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, tondemo, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Tondemo Crisis (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, glpracr3, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, glpracr3j, glpracr3, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, flamegun, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, flamegunj, flamegun, coh1002m, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, lpadv, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Amuse World", "Logic Pro Adventure (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2000, tblkkuzu, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tamsoft / D3 Publisher", "The Block Kuzushi (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2000, 1on1gov, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "1 on 1 Government (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2000, tecmowcm, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup Millennium (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2001, mfjump, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Monster Farm Jump (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
/* Video System */
+GAME( 1996, coh1002v, 0, coh1002v, zn, driver_device, 0, ROT0, "Video System Co.", "Video System PSX", MACHINE_IS_BIOS_ROOT )
+GAME( 1996, aerofgts, coh1002v, coh1002v, zn, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters Special (Taiwan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, sncwgltd, aerofgts, coh1002v, zn, driver_device, 0, ROT270, "Video System Co.", "Sonic Wings Limited (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1002v.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1996, vspsx, 0, coh1002v, zn, driver_device, 0, ROT0, "Video System Co.", "Video System PSX", MACHINE_IS_BIOS_ROOT )
+/* Taito FX-1A */
+GAME( 1995, coh1000t, 0, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Taito FX1", MACHINE_IS_BIOS_ROOT )
+GAME( 1995, sfchamp, coh1000t, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.5O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, sfchampo, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, sfchampu, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, sfchampj, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, psyforce, coh1000t, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, psyforcej, psyforce, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, psyforcex, psyforce, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Psychic Force EX (Ver 2.0J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, mgcldate, mgcldtex, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, mgcldtex, coh1000t, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Magical Date EX / Magical Date - sotsugyou kokuhaku daisakusen (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, aerofgts, vspsx, coh1002v, zn, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters Special (Taiwan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, sncwgltd, aerofgts, coh1002v, zn, driver_device, 0, ROT270, "Video System Co.", "Sonic Wings Limited (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-/* Taito */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1000t.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1995, taitofx1, 0, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Taito FX1", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1995, sfchamp, taitofx1, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.5O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, sfchampo, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, sfchampu, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, sfchampj, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, psyforce, taitofx1, psyforce, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, psyforcej, psyforce, psyforce, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1995, psyforcex, psyforce, psyforce, zn, driver_device, 0, ROT0, "Taito", "Psychic Force EX (Ver 2.0J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, mgcldate, mgcldtex, mgcldate, zn, driver_device, 0, ROT0, "Taito", "Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, mgcldtex, taitofx1, mgcldate, zn, driver_device, 0, ROT0, "Taito", "Magical Date EX / Magical Date - sotsugyou kokuhaku daisakusen (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1996, raystorm, taitofx1, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.06A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, raystormo, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, raystormu, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, raystormj, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, ftimpact, ftimpcta, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, ftimpactu, ftimpcta, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, ftimpactj, ftimpcta, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, ftimpcta, taitofx1, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact A (Ver 2.00J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, gdarius, gdarius2, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, gdariusb, gdarius2, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, gdarius2, taitofx1, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius Ver.2 (Ver 2.03J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+/* Taito FX-1B */
+GAME( 1996, raystorm, coh1000t, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.06A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, raystormo, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, raystormu, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, raystormj, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, ftimpact, ftimpcta, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, ftimpactu, ftimpcta, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, ftimpactj, ftimpcta, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, ftimpcta, coh1000t, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact A (Ver 2.00J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, gdarius, gdarius2, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, gdariusb, gdarius2, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, gdarius2, coh1000t, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius Ver.2 (Ver 2.03J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
/* Eighting / Raizing */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1002e.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1997, psarc95, 0, coh1002e, zn, driver_device, 0, ROT0, "Eighting / Raizing", "PS Arcade 95", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1997, beastrzr, psarc95, coh1002e, zn, driver_device, 0, ROT0, "Eighting / Raizing", "Beastorizer (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, bldyroar, beastrzr, coh1002e, zn, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, beastrzrb, beastrzr, coh1002e, zn, driver_device, 0, ROT0, "bootleg", "Beastorizer (USA bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1997, coh1002e, 0, coh1002e, zn, driver_device, 0, ROT0, "Eighting / Raizing", "PS Arcade 95", MACHINE_IS_BIOS_ROOT )
+GAME( 1997, beastrzr, coh1002e, coh1002e, zn, driver_device, 0, ROT0, "Eighting / Raizing", "Beastorizer (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, bldyroar, beastrzr, coh1002e, zn, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, beastrzrb, beastrzr, coh1002e, zn, driver_device, 0, ROT0, "bootleg", "Beastorizer (USA bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
/* The region on these is determined from the NVRAM, it can't be changed from the test menu, it's pre-programmed */
-GAME( 1998, bldyror2, psarc95, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, bldyror2u, bldyror2, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, bldyror2a, bldyror2, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, bldyror2j, bldyror2, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, bldyror2, coh1002e, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, bldyror2u, bldyror2, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, bldyror2a, bldyror2, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, bldyror2j, bldyror2, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
/* The region on these is determined from the NVRAM, it can't be changed from the test menu, it's pre-programmed */
-GAME( 2000, brvblade, tps, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 2000, brvbladeu, brvblade, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 2000, brvbladea, brvblade, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 2000, brvbladej, brvblade, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2000, brvblade, coh1002m, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2000, brvbladeu, brvblade, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2000, brvbladea, brvblade, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 2000, brvbladej, brvblade, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
/* Bust a Move 2 uses the PSARC95 bios and ET series security but the top board is completely different */
-GAME( 1999, bam2, psarc95, bam2, zn, driver_device, 0, ROT0, "Metro / Enix / Namco", "Bust a Move 2 (Japanese ROM ver. 1999/07/17 10:00:00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1999, bam2, coh1002e, bam2, zn, driver_device, 0, ROT0, "Metro / Enix / Namco", "Bust a Move 2 (Japanese ROM ver. 1999/07/17 10:00:00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
/* Atlus */
-
-/* A dummy driver, so that the bios can be debugged, and to serve as */
-/* parent for the coh-1002l.353 file, so that we do not have to include */
-/* it in every zip file */
-GAME( 1996, atluspsx, 0, coh1001l, zn, driver_device, 0, ROT0, "Atlus", "Atlus PSX", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1996, hvnsgate, atluspsx, coh1001l, zn, driver_device, 0, ROT0, "Racdym / Atlus", "Heaven's Gate", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, coh1001l, 0, coh1001l, zn, driver_device, 0, ROT0, "Atlus", "Atlus PSX", MACHINE_IS_BIOS_ROOT )
+GAME( 1996, hvnsgate, coh1001l, coh1001l, zn, driver_device, 0, ROT0, "Racdym / Atlus", "Heaven's Gate", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/includes/saturn.h b/src/mame/includes/saturn.h
index 4a3ef780071..ab7e88bf9ad 100644
--- a/src/mame/includes/saturn.h
+++ b/src/mame/includes/saturn.h
@@ -16,6 +16,10 @@
#include "machine/315-5881_crypt.h"
#include "machine/315-5838_317-0229_comp.h"
+#include "debug/debugcon.h"
+#include "debug/debugcmd.h"
+#include "debugger.h"
+
#define MAX_FILTERS (24)
#define MAX_BLOCKS (200)
#define MAX_DIR_SIZE (256*1024)
@@ -685,6 +689,11 @@ public:
DECLARE_READ8_MEMBER( stv_SMPC_r );
DECLARE_WRITE8_MEMBER( stv_SMPC_w );
+ void debug_scudma_command(int ref, int params, const char **param);
+ void debug_scuirq_command(int ref, int params, const char **param);
+ void debug_help_command(int ref, int params, const char **param);
+ void debug_commands(int ref, int params, const char **param);
+
};
diff --git a/src/mame/includes/taitosj.h b/src/mame/includes/taitosj.h
index 5ce51b8e0f3..a387d8677d5 100644
--- a/src/mame/includes/taitosj.h
+++ b/src/mame/includes/taitosj.h
@@ -34,7 +34,6 @@ public:
typedef void (taitosj_state::*copy_layer_func_t)(bitmap_ind16 &,
const rectangle &, int, int *, rectangle *);
- UINT8 m_sndnmi_disable;
UINT8 m_input_port_4_f0;
UINT8 m_kikstart_gears[2];
INT8 m_dac_out;
@@ -63,8 +62,9 @@ public:
UINT8 m_spacecr_prot_value;
UINT8 m_protection_value;
UINT32 m_address;
- bool m_sound_cmd_ack;
- bool m_sound_semaphore;
+ bool m_sndnmi_disable; // AKA "CIOB0" on schematic, bit 0 of AY-3-8910 @ IC50 Port B
+ bool m_sound_cmd_written; // 74ls74 1/2 @ GAME BOARD IC42
+ bool m_sound_semaphore; // 74ls74 2/2 @ GAME BOARD IC42
bitmap_ind16 m_layer_bitmap[3];
bitmap_ind16 m_sprite_sprite_collbitmap1;
bitmap_ind16 m_sprite_sprite_collbitmap2;
@@ -75,7 +75,7 @@ public:
DECLARE_WRITE8_MEMBER(sound_command_w);
DECLARE_READ8_MEMBER(sound_command_r);
DECLARE_READ8_MEMBER(sound_status_r);
- DECLARE_WRITE8_MEMBER(sound_semaphore_assert_w);
+ DECLARE_WRITE8_MEMBER(sound_semaphore_w);
DECLARE_WRITE8_MEMBER(sound_semaphore_clear_w);
DECLARE_WRITE8_MEMBER(taitosj_bankswitch_w);
DECLARE_READ8_MEMBER(taitosj_fake_data_r);
diff --git a/src/mame/layout/goldnpkr.lay b/src/mame/layout/goldnpkr.lay
index 66d119834f9..8de80d76c65 100644
--- a/src/mame/layout/goldnpkr.lay
+++ b/src/mame/layout/goldnpkr.lay
@@ -108,41 +108,41 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/src/mame/layout/h2hboxing.lay b/src/mame/layout/h2hboxing.lay
new file mode 100644
index 00000000000..4a52f536bee
--- /dev/null
+++ b/src/mame/layout/h2hboxing.lay
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/matchnum.lay b/src/mame/layout/matchnum.lay
new file mode 100644
index 00000000000..60cca2e7dd0
--- /dev/null
+++ b/src/mame/layout/matchnum.lay
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/md6802.lay b/src/mame/layout/md6802.lay
index 140cc19c138..acfdf1db0e2 100755
--- a/src/mame/layout/md6802.lay
+++ b/src/mame/layout/md6802.lay
@@ -1,23 +1,47 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
@@ -46,80 +70,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/mp68a.lay b/src/mame/layout/mp68a.lay
index ff9d29e09e3..01da245ef1b 100755
--- a/src/mame/layout/mp68a.lay
+++ b/src/mame/layout/mp68a.lay
@@ -1,18 +1,55 @@
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
@@ -35,82 +72,117 @@
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
+
+
diff --git a/src/mame/layout/stopthie.lay b/src/mame/layout/stopthief.lay
similarity index 100%
rename from src/mame/layout/stopthie.lay
rename to src/mame/layout/stopthief.lay
diff --git a/src/mame/layout/tcfball.lay b/src/mame/layout/tcfball.lay
new file mode 100644
index 00000000000..f0d2b2ae7c4
--- /dev/null
+++ b/src/mame/layout/tcfball.lay
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/machine/cat702.cpp b/src/mame/machine/cat702.cpp
index 70c8398befb..8811ac3e4a5 100644
--- a/src/mame/machine/cat702.cpp
+++ b/src/mame/machine/cat702.cpp
@@ -90,13 +90,28 @@ const device_type CAT702 = &device_creator;
cat702_device::cat702_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, CAT702, "CAT702", tag, owner, clock, "cat702", __FILE__),
- m_transform(nullptr),
+ m_region(*this, DEVICE_SELF),
m_dataout_handler(*this)
{
}
void cat702_device::device_start()
{
+ memset(m_transform, 0xff, sizeof(m_transform));
+
+ if (!m_region.found())
+ {
+ logerror("cat702(%s):region not found\n", tag());
+ }
+ else if (m_region->bytes() != sizeof(m_transform))
+ {
+ logerror("cat702(%s):region length 0x%x expected 0x%x\n", tag(), m_region->bytes(), sizeof(m_transform));
+ }
+ else
+ {
+ memcpy(m_transform, m_region->base(), sizeof(m_transform));
+ }
+
m_dataout_handler.resolve_safe();
save_item(NAME(m_select));
@@ -160,11 +175,6 @@ void cat702_device::apply_sbox(const UINT8 *sbox)
m_state = r;
}
-void cat702_device::static_set_transform_table(device_t &device, const UINT8 *transform)
-{
- downcast(device).m_transform = transform;
-}
-
WRITE_LINE_MEMBER(cat702_device::write_select)
{
if (m_select != state)
@@ -215,9 +225,3 @@ WRITE_LINE_MEMBER(cat702_device::write_datain)
{
m_datain = state;
}
-
-void cat702_device::device_validity_check(validity_checker &valid) const
-{
- if (m_transform == nullptr)
- osd_printf_error("No transform table provided\n");
-}
diff --git a/src/mame/machine/cat702.h b/src/mame/machine/cat702.h
index a116283b1b1..3ec6b57485a 100644
--- a/src/mame/machine/cat702.h
+++ b/src/mame/machine/cat702.h
@@ -14,11 +14,6 @@ extern const device_type CAT702;
#define MCFG_CAT702_DATAOUT_HANDLER(_devcb) \
devcb = &cat702_device::set_dataout_handler(*device, DEVCB_##_devcb);
-#define MCFG_CAT702_TRANSFORM_TABLE(_table) \
- cat702_device::static_set_transform_table(*device, _table);
-
-class validity_checker;
-
class cat702_device : public device_t
{
public:
@@ -26,7 +21,6 @@ public:
// static configuration helpers
template static devcb_base &set_dataout_handler(device_t &device, _Object object) { return downcast(device).m_dataout_handler.set_callback(object); }
- static void static_set_transform_table(device_t &device, const UINT8 *transform); // TODO: region
DECLARE_WRITE_LINE_MEMBER(write_select);
DECLARE_WRITE_LINE_MEMBER(write_datain);
@@ -34,14 +28,15 @@ public:
protected:
virtual void device_start() override;
- virtual void device_validity_check(validity_checker &valid) const override;
private:
UINT8 compute_sbox_coef(int sel, int bit);
void apply_bit_sbox(int sel);
void apply_sbox(const UINT8 *sbox);
- const UINT8 *m_transform;
+ optional_memory_region m_region;
+ UINT8 m_transform[8];
+
int m_select;
int m_clock;
int m_datain;
diff --git a/src/mame/machine/cps2crypt.cpp b/src/mame/machine/cps2crypt.cpp
index 7893b94bcaf..0171570fbd9 100644
--- a/src/mame/machine/cps2crypt.cpp
+++ b/src/mame/machine/cps2crypt.cpp
@@ -704,17 +704,18 @@ static void cps2_decrypt(running_machine &machine, UINT16 *rom, UINT16 *dec, int
// decrypt the opcodes
- for (a = i; a < length/2 && a < upper_limit/2; a += 0x10000)
+ for (a = i; a < length/2; a += 0x10000)
{
- dec[a] = feistel(rom[a], fn2_groupA, fn2_groupB,
- &sboxes2[0*4], &sboxes2[1*4], &sboxes2[2*4], &sboxes2[3*4],
- key2[0], key2[1], key2[2], key2[3]);
- }
- // copy the unencrypted part
- while (a < length/2)
- {
- dec[a] = rom[a];
- a += 0x10000;
+ if (a >= lower_limit && a <= upper_limit)
+ {
+ dec[a] = feistel(rom[a], fn2_groupA, fn2_groupB,
+ &sboxes2[0 * 4], &sboxes2[1 * 4], &sboxes2[2 * 4], &sboxes2[3 * 4],
+ key2[0], key2[1], key2[2], key2[3]);
+ }
+ else
+ {
+ dec[a] = rom[a];
+ }
}
}
}
@@ -767,25 +768,25 @@ DRIVER_INIT_MEMBER(cps_state,cps2crypt)
// decoded[4] == watchdog instruction third word
// decoded[5] == watchdog instruction second word
// decoded[6] == watchdog instruction first word
- // decoded[7] == 0x4000
+ // decoded[7] == 0x4000 (bits 8 to 23 of CPS2 object output address)
// decoded[8] == 0x0900
if (decoded[9] == 0xffff)
{
// On a dead board, the only encrypted range is actually FF0000-FFFFFF.
// It doesn't start from 0, and it's the upper half of a 128kB bank.
- upper = 0xffffffff;
+ upper = 0xffffff;
lower = 0xff0000;
}
else
{
- // This matches two thirds of the old values
- upper = (((decoded[9] ^ 0x3f0) << 14) | 0x3ffff) + 1;
+ upper = (((~decoded[9] & 0x3ff) << 14) | 0x3fff) + 1;
lower = 0;
}
+ logerror("cps2 decrypt 0x%08x,0x%08x,0x%08x,0x%08x\n", key[0], key[1], lower, upper);
+
// we have a proper key so use it to decrypt
- if (lower != 0xff0000) // don't run the decrypt on 'dead key' games for now
- cps2_decrypt(machine(), (UINT16 *)memregion("maincpu")->base(), m_decrypted_opcodes, memregion("maincpu")->bytes(), key, lower, upper);
+ cps2_decrypt(machine(), (UINT16 *)memregion("maincpu")->base(), m_decrypted_opcodes, memregion("maincpu")->bytes(), key, lower / 2, upper / 2);
}
}
diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp
index 94fb9533ec0..5a27acf421d 100644
--- a/src/mame/machine/dec_lk201.cpp
+++ b/src/mame/machine/dec_lk201.cpp
@@ -184,7 +184,9 @@ ROM_START( lk201 )
// 23-001s9-00.bin is for the newer LK201 version (green LEDs, Motorola 6805)
ROM_LOAD( "23-001s9-00.bin", 0x0000, 0x2000, CRC(be293c51) SHA1(a11ae004d2d6055d7279da3560c3e56610a19fdb) )
-// 23-004M1 or 23-004M2 are in the older LK201 keyboard with red LEDs (8051)
+// 23-004M1 or 23-004M2 are in the older LK201 keyboard with red LEDs (8051 or 8051H respectively, same code on both?)
+ ROM_REGION( 0x1000, "i8051cpu", 0 )
+ ROM_LOAD( "23-004m2.8051h.e1", 0x0000, 0x1000, CRC(35dd04c6) SHA1(9744c561d76fe85afaccc7a2485ce2865236873a) )
ROM_END
@@ -207,11 +209,11 @@ ADDRESS_MAP_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( lk201 )
- MCFG_CPU_ADD(LK201_CPU_TAG, M68HC05EG, 4000000) // actually 68HC05C4, clock verified by Lord_Nightmare
+ MCFG_CPU_ADD(LK201_CPU_TAG, M68HC05EG, XTAL_4MHz) // actually 68HC05C4, clock verified by Lord_Nightmare
MCFG_CPU_PROGRAM_MAP(lk201_map)
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(LK201_SPK_TAG, BEEP, 2000)
+ MCFG_SOUND_ADD(LK201_SPK_TAG, BEEP, 2000) // clocked by a 555 timer at E8, the volume of the beep is controllable by: (8051 model) P2.0 thru P2.3, or (6805 model) the upper 4 bits of the LED data latch
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
@@ -266,7 +268,49 @@ const tiny_rom_entry *lk201_device::device_rom_region() const
INPUT_PORTS_START( lk201 )
- PORT_START("KBD0")
+/*
+Actual membrane part number (from later 6805-based LK201 keyboard): 54-15172
+
+Matrix Rows to bit translation, from schematic page 20 ( http://bitsavers.trailing-edge.com/pdf/dec/terminal/lk201/MP01395_LK201_Schematic_Oct83.pdf )
+Bit D0 - Column P3-3
+ D1 - Column P3-7
+ D2 - Column P3-8
+ D3 - Column P3-12
+ D4 - Column P2-8
+ D5 - Column P1-2
+ D6 - Column P3-11
+ D7 - Column P1-3
+
+Keyboard Matrix
+---------------
+Row select
+| Columns SwitchID by bit Columns Key by bit
+| D5 D7 D4 D0 D1 D2 D3 D6 D5 D7 D4 D0 D1 D2 D3 D6
+V V V V V V V V V V V V V V V V V
+P1-6 --- E99 E00 B01 C01 D01 E01 D99 --- N/C ` Z A Q 1 N/C
+P1-7 --- G99 D00 B00 B02 C02 D02 E02 --- F1 TAB <> X S W 2
+P1-9 --- --- G01 B03 C03 D03 E03 G00 --- --- F3 C D E 3 F2
+P1-10 A99 C99 A10 --- --- --- --- C00 COMP CTRL N/C --- --- --- --- CAPS
+P1-11 --- G02 E04 A0406 B04 C04 D04 G03 --- F4 4 SPACE V F R F5
+P2-2 --- --- G05 B05 C05 D05 E05 G04 --- --- F6 B G T 5 N/C
+P2-3 --- --- G06 B06 C06 D06 E06 G07 --- --- F7 N H Y 6 F8
+P2-4 --- --- G09 B07 C07 D07 E07 G08 --- --- F10 M J U 7 F9
+P2-5 --- B9911 --- --- --- --- --- --- --- SHFT --- --- --- --- --- ---
+P2-6 --- --- G10 B08 C08 D08 E08 G11 --- --- N/C , K I 8 F11
+P2-9 --- --- G13 B09 C09 D09 E09 G12 --- --- F13 . L O 9 F12
+P2-10 --- G14 E10 B10 C10 D13 D10 E13 --- F14 0 / ; N/C P BKSP(DEL)
+P2-11 G15 E16 D16 C12 B16 C13 D12 E12 HELP FIND SLCT \ LEFT RETN ] =
+P3-2 G16 E17 D17 A17 B13 C11 D11 E11 DO INST PREV N/C N/C ' [ -
+P3-4 E18 E20 C17 A20 B20 C20 D20 D18 RMVE PF1 UP k0 k1 k4 k7 NEXT
+P3-5 --- G20 D21 A21 B21 B18 C21 E21 --- F17 k8 N/C k2 RGHT k5 PF2
+P3-6 --- G21 D22 A22 B22 C22 B17 E22 --- F18 k9 k. k3 k6 DOWN PF3
+P3-9 --- --- G23 A23 C23 D23 E23 G22 --- --- F20 kRTN k, k- PF4 F19
+
+--- = No matrix switch at all
+N/C = switch present, but officially unused?
+ */
+
+ PORT_START("KBD0") // Row P2-5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -274,176 +318,176 @@ INPUT_PORTS_START( lk201 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) // B99 and B11
- PORT_START("KBD1")
+ PORT_START("KBD1") // Row P1-10
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Compose") PORT_CODE(KEYCODE_LALT)
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK)
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) // A10, exists but no key above this position (right compose?)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Compose") PORT_CODE(KEYCODE_LALT) // A99
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) // C00, does not toggle/physically lock
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) // C99
- PORT_START("KBD2")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1") PORT_CODE(KEYCODE_1)
+ PORT_START("KBD2") // Row P1-6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) // B01
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) // C01
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) // D01
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1") PORT_CODE(KEYCODE_1) // E01
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tilde") PORT_CODE(KEYCODE_TILDE) // E00
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) // D99, exists but no key above this position
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) // E99, exists but no key above this position
- PORT_START("KBD3")
+ PORT_START("KBD3") // Row P1-7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("<") PORT_CODE(KEYCODE_BACKSLASH2) // B00
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) // B02
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S) // C02
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) // D02
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) // D00
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2") PORT_CODE(KEYCODE_2)
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Hold Screen (F1)") PORT_CODE(KEYCODE_F1)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2") PORT_CODE(KEYCODE_2) // E02
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Hold Screen (F1)") PORT_CODE(KEYCODE_F1) // G99
- PORT_START("KBD4")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3") PORT_CODE(KEYCODE_3)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Setup (F3)") PORT_CODE(KEYCODE_PAUSE) // SET UP = Pause on PC
+ PORT_START("KBD4") // Row P1-9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) // B03
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) // C03
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) // D03
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3") PORT_CODE(KEYCODE_3) // E03
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Setup (F3)") PORT_CODE(KEYCODE_F3) // G01
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Print Screen (F2)") PORT_CODE(KEYCODE_F2)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Print Screen (F2)") PORT_CODE(KEYCODE_F2) // G00
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("KBD5")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4") PORT_CODE(KEYCODE_4)
+ PORT_START("KBD5") // Row P1-11
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) // A04 and A06
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) // B04
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) // C04
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) // D04
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4") PORT_CODE(KEYCODE_4) // E04
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break (F5)") PORT_CODE(KEYCODE_F5)
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Data / Talk (F4)") PORT_CODE(KEYCODE_F4)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break (F5)") PORT_CODE(KEYCODE_F5) // G03
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Data / Talk (F4)") PORT_CODE(KEYCODE_F4) // G02
- PORT_START("KBD6")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5") PORT_CODE(KEYCODE_5)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Interrupt (F6) [X]") PORT_CODE(KEYCODE_F6)
+ PORT_START("KBD6") // Row P2-2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) // B05
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) // C05
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) // D05
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5") PORT_CODE(KEYCODE_5) // E05
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Interrupt (F6) [X]") PORT_CODE(KEYCODE_F6) // G05
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) // G04, exists but no key above this position (between F5 and F6)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("KBD7")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6") PORT_CODE(KEYCODE_6)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Resume (F7) [Fortsetzen]") PORT_CODE(KEYCODE_F7)
+ PORT_START("KBD7") // Row P2-3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) // B06
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) // C06
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) // D06
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6") PORT_CODE(KEYCODE_6) // E06
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Resume (F7) [Fortsetzen]") PORT_CODE(KEYCODE_F7) // G06
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Cancel (F8) [Zuruecknehmen]") PORT_CODE(KEYCODE_F8)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Cancel (F8) [Zuruecknehmen]") PORT_CODE(KEYCODE_F8) // G07
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("KBD8")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7") PORT_CODE(KEYCODE_7)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Exit (F10) [Fertig]") PORT_CODE(KEYCODE_F10)
+ PORT_START("KBD8") // Row P2-4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) // B07
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) // C07
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) // D07
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7") PORT_CODE(KEYCODE_7) // E07
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Exit (F10) [Fertig]") PORT_CODE(KEYCODE_F10) // G09
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Main Screen (F9) [Hauptbild]") PORT_CODE(KEYCODE_F9)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Main Screen (F9) [Hauptbild]") PORT_CODE(KEYCODE_F9) // G08
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("KBD9")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8") PORT_CODE(KEYCODE_8)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_START("KBD9") // Row P2-6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) // B08
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K) // C08
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) // D08
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8") PORT_CODE(KEYCODE_8) // E08
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) // G10, exists but no key above this position (between F10 and F11)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ESC (F11)") PORT_CODE(KEYCODE_F11)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ESC (F11)") PORT_CODE(KEYCODE_F11) // G11
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("KBD10")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(".") PORT_CODE(KEYCODE_STOP)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9") PORT_CODE(KEYCODE_9)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("LF (F13)") PORT_CODE(KEYCODE_F13)
+ PORT_START("KBD10") // Row P2-9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) // B09
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L) // C09
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) // D09
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9") PORT_CODE(KEYCODE_9) // E09
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("LF (F13)") PORT_CODE(KEYCODE_F13) // G13
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BS (F12)") PORT_CODE(KEYCODE_F12)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BS (F12)") PORT_CODE(KEYCODE_F12) // G12
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("KBD11")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(";") PORT_CODE(KEYCODE_COLON)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // FIXME - duplicate "Return"
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0)
+ PORT_START("KBD11") // Row P2-10
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH) // B10
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) // C10
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // D13, exists but no key(?) above this position (under the upper half of the 'Return' key), DOES register as return; NOT LISTED on older schematic but definitely appears on the physical membrane of the later 6805 keyboard!
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) // D10
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0) // E10
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete ;
-constexpr device_type GAMSHARA_DECRYPTER = &device_creator;
-constexpr device_type GJSPACE_DECRYPTER = &device_creator;
-constexpr device_type KNPUZZLE_DECRYPTER = &device_creator;
-constexpr device_type KONOTAKO_DECRYPTER = &device_creator;
-constexpr device_type MRDRILR2_DECRYPTER = &device_creator;
-constexpr device_type NFLCLSFB_DECRYPTER = &device_creator;
-constexpr device_type STARTRGN_DECRYPTER = &device_creator;
+const device_type CHOCOVDR_DECRYPTER = &device_creator;
+const device_type GAMSHARA_DECRYPTER = &device_creator;
+const device_type GJSPACE_DECRYPTER = &device_creator;
+const device_type KNPUZZLE_DECRYPTER = &device_creator;
+const device_type KONOTAKO_DECRYPTER = &device_creator;
+const device_type MRDRILR2_DECRYPTER = &device_creator;
+const device_type NFLCLSFB_DECRYPTER = &device_creator;
+const device_type STARTRGN_DECRYPTER = &device_creator;
// base class
@@ -161,7 +161,7 @@ ns10_decrypter_device::~ns10_decrypter_device()
constexpr int UNKNOWN {16};
constexpr int U {UNKNOWN};
// this could perfectly be part of the per-game logic but, with only one known type-1 game, we cannot say anything definitive
-constexpr int ns10_type1_decrypter_device::initSbox[16] {U,U,U,0,4,9,U,U,U,8,U,1,U,9,U,5};
+const int ns10_type1_decrypter_device::initSbox[16] {U,U,U,0,4,9,U,U,U,8,U,1,U,9,U,5};
ns10_type1_decrypter_device::ns10_type1_decrypter_device(device_type type, const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: ns10_decrypter_device(type, mconfig, tag, owner, clock)
@@ -211,7 +211,7 @@ void ns10_type1_decrypter_device::device_start()
// type-2 decrypter
// this could perfectly be part of the per-game logic; by now, only gamshara seems to use it, so we keep it global
-constexpr int ns10_type2_decrypter_device::initSbox[16] {0,12,13,6,2,4,9,8,11,1,7,15,10,5,14,3};
+const int ns10_type2_decrypter_device::initSbox[16] {0,12,13,6,2,4,9,8,11,1,7,15,10,5,14,3};
ns10_type2_decrypter_device::ns10_type2_decrypter_device(device_type type, const ns10_crypto_logic &logic, const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: ns10_decrypter_device(type, mconfig, tag, owner, clock)
diff --git a/src/mame/machine/octo_kbd.cpp b/src/mame/machine/octo_kbd.cpp
new file mode 100644
index 00000000000..f1867ac77bc
--- /dev/null
+++ b/src/mame/machine/octo_kbd.cpp
@@ -0,0 +1,264 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+
+#include "machine/octo_kbd.h"
+#include "machine/keyboard.ipp"
+
+
+octopus_keyboard_device::octopus_keyboard_device(const machine_config& mconfig, const char* tag, device_t* owner, UINT32 clock)
+ : buffered_rs232_device(mconfig, OCTOPUS_KEYBOARD, "Octopus Keyboard", tag, owner, 0, "octopus_kb", __FILE__)
+ , device_matrix_keyboard_interface(mconfig, *this, "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8", "LINE9", "LINEA", "LINEB", "LINEC", "LINED", "LINEE", "LINEF")
+{
+}
+
+
+void octopus_keyboard_device::received_byte(UINT8 data)
+{
+ // TODO: figure out received data format (used for Shift Lock and Caps Lock LEDs)
+ printf("KBD: Received byte %02x\n",data);
+}
+
+void octopus_keyboard_device::key_make(UINT8 row, UINT8 column)
+{
+ if (row != 0x0eU)
+ typematic_start(row, column, attotime::from_msec(m_delay), attotime::from_msec(m_repeat));
+ else
+ typematic_restart(attotime::from_msec(m_delay), attotime::from_msec(m_repeat));
+
+ transmit_byte((row << 3) | column);
+}
+
+void octopus_keyboard_device::key_repeat(UINT8 row, UINT8 column)
+{
+ transmit_byte((row << 3) | column);
+}
+
+void octopus_keyboard_device::key_break(UINT8 row, UINT8 column)
+{
+ device_matrix_keyboard_interface::key_break(row, column);
+ transmit_byte(0x80U | (row << 3) | column);
+}
+
+static INPUT_PORTS_START( octopus_keyboard )
+
+ // 0x00
+ PORT_START("LINE0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 \'") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n')
+
+ PORT_START("LINE1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \"") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F22") //PORT_CODE(KEYCODE_SPACE)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F25")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z')
+
+ // 0x10
+ PORT_START("LINE2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("^ ~") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F13")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F30")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F28")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_2)
+
+ PORT_START("LINE3")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F23")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F26")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+
+ // 0x20
+ PORT_START("LINE4")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F31")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F29")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+
+ PORT_START("LINE5")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift Lock") PORT_CODE(KEYCODE_LALT)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Cntrl") PORT_CODE(KEYCODE_LCONTROL)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F24")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F27")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
+
+ // 0x30
+ PORT_START("LINE6")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": *") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@ \\") PORT_CHAR('@') PORT_CHAR('\\')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- =") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Home") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
+
+ PORT_START("LINE7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 (") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F9") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m')
+
+ // 0x40
+ PORT_START("LINE8")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Line Feed") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(10)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F15")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 0") PORT_CODE(KEYCODE_0_PAD)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 1") PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 4") PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F32")
+
+ PORT_START("LINE9")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F19")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 8") PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v')
+
+ // 0x50
+ PORT_START("LINEA")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F16")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F17")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 2") PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 5") PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("LINEB")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F20")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 9") PORT_CODE(KEYCODE_9_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c')
+
+ // 0x60
+ PORT_START("LINEC")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Del") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_") PORT_CHAR('_')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F14")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad .") PORT_CODE(KEYCODE_DEL_PAD)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 3") PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 6") PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Rep")
+
+ PORT_START("LINED")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 \xE2\x82\xA4") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F21")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x')
+
+ // 0x70
+ PORT_START("LINEE")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 )") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+
+ PORT_START("LINEF")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F18")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 7") PORT_CODE(KEYCODE_7_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b')
+
+INPUT_PORTS_END
+
+ioport_constructor octopus_keyboard_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME(octopus_keyboard);
+}
+
+void octopus_keyboard_device::device_start()
+{
+ buffered_rs232_device::device_start();
+
+ save_item(NAME(m_delay));
+ save_item(NAME(m_repeat));
+ save_item(NAME(m_enabled));
+}
+
+void octopus_keyboard_device::device_reset()
+{
+ buffered_rs232_device::device_reset();
+
+ set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1);
+ set_rcv_rate(1200);
+ set_tra_rate(9600);
+ receive_register_reset();
+ transmit_register_reset();
+
+ m_enabled = 0;
+ m_delay = 500; // 3*100+200
+ m_repeat = 110; // 4^2*5+30
+
+ stop_processing();
+ reset_key_state();
+ typematic_stop();
+ clear_fifo();
+
+ output_dcd(0);
+ output_dsr(0);
+ output_cts(0);
+ output_rxd(1);
+
+ start_processing(attotime::from_hz(9600));
+}
+
+void octopus_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ device_matrix_keyboard_interface::device_timer(timer, id, param, ptr);
+ buffered_rs232_device::device_timer(timer, id, param, ptr);
+}
+
+
+const device_type OCTOPUS_KEYBOARD = &device_creator;
+
+
diff --git a/src/mame/machine/octo_kbd.h b/src/mame/machine/octo_kbd.h
new file mode 100644
index 00000000000..b7ec54aff82
--- /dev/null
+++ b/src/mame/machine/octo_kbd.h
@@ -0,0 +1,32 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+#ifndef OCTO_KBD_H
+#define OCTO_KBD_H
+
+#include "bus/rs232/keyboard.h"
+
+class octopus_keyboard_device : public buffered_rs232_device<16U>, protected device_matrix_keyboard_interface<16U>
+{
+public:
+ octopus_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void key_make(UINT8 row, UINT8 column) override;
+ virtual void key_repeat(UINT8 row, UINT8 column) override;
+ virtual void key_break(UINT8 row, UINT8 column) override;
+
+private:
+ virtual void received_byte(UINT8 data) override;
+
+ int m_delay; // keypress delay after initial press
+ int m_repeat; // keypress repeat rate
+ UINT8 m_enabled; // keyboard enabled?
+};
+
+extern const device_type OCTOPUS_KEYBOARD;
+
+#endif // OCTO_KBD_H
diff --git a/src/mame/machine/stfight.cpp b/src/mame/machine/stfight.cpp
index 0f88a0801ec..6e74dc39078 100644
--- a/src/mame/machine/stfight.cpp
+++ b/src/mame/machine/stfight.cpp
@@ -75,6 +75,9 @@ DRIVER_INIT_MEMBER(stfight_state,cshooter)
void stfight_state::machine_start()
{
+ membank("mainbank")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000);
+ membank("mainbank")->set_entry(0);
+
save_item(NAME(m_fm_data));
save_item(NAME(m_cpu_to_mcu_data));
save_item(NAME(m_cpu_to_mcu_empty));
@@ -102,27 +105,21 @@ void stfight_state::machine_reset()
// Coin signals are active low
m_coin_state = 3;
-
- // initialise ROM bank
- stfight_bank_w(m_maincpu->space(AS_PROGRAM), 0, 0);
}
// It's entirely possible that this bank is never switched out
// - in fact I don't even know how/where it's switched in!
WRITE8_MEMBER(stfight_state::stfight_bank_w)
{
- UINT8 *ROM2 = memregion("maincpu")->base() + 0x10000;
- UINT16 bank_num;
-
- bank_num = 0;
+ UINT8 bank_num = 0;
if(data & 0x80)
- bank_num |= 0x8000;
+ bank_num |= 2;
if(data & 0x04)
- bank_num |= 0x4000;
+ bank_num |= 1;
- membank("bank1")->set_base(&ROM2[bank_num]);
+ membank("mainbank")->set_entry(bank_num);
}
/*
diff --git a/src/mame/machine/xbox.cpp b/src/mame/machine/xbox.cpp
index 9b15cbab1ae..77523ea6a7c 100644
--- a/src/mame/machine/xbox.cpp
+++ b/src/mame/machine/xbox.cpp
@@ -23,80 +23,87 @@
void xbox_base_state::dump_string_command(int ref, int params, const char **param)
{
+ debugger_cpu &cpu = machine().debugger().cpu();
+ debugger_console &con = machine().debugger().console();
address_space &space = m_maincpu->space();
+ UINT64 addr;
+ offs_t address;
if (params < 1)
return;
- UINT64 addr;
if (!machine().debugger().commands().validate_number_parameter(param[0], &addr))
return;
- offs_t address = (offs_t)addr;
+ address = (offs_t)addr;
if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
{
- machine().debugger().console().printf("Address is unmapped.\n");
+ con.printf("Address is unmapped.\n");
return;
}
+ address = (offs_t)addr;
- UINT32 length = space.read_word_unaligned(address);
- UINT32 maximumlength = space.read_word_unaligned(address + 2);
- offs_t buffer = space.read_dword_unaligned(address + 4);
- machine().debugger().console().printf("Length %d word\n", length);
- machine().debugger().console().printf("MaximumLength %d word\n", maximumlength);
- machine().debugger().console().printf("Buffer %08X byte* ", buffer);
- if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, buffer))
- {
- machine().debugger().console().printf("\nBuffer is unmapped.\n");
- return;
- }
+ UINT32 length = cpu.read_word(space, address, true);
+ UINT32 maximumlength = cpu.read_word(space, address + 2, true);
+ offs_t buffer = cpu.read_dword(space, address + 4, true);
+ con.printf("Length %d word\n", length);
+ con.printf("MaximumLength %d word\n", maximumlength);
+ con.printf("Buffer %08X byte* ", buffer);
if (length > 256)
length = 256;
for (int a = 0; a < length; a++)
{
- UINT8 c = space.read_byte(buffer + a);
- machine().debugger().console().printf("%c", c);
+ UINT8 c = cpu.read_byte(space, buffer + a, true);
+ con.printf("%c", c);
}
- machine().debugger().console().printf("\n");
+ con.printf("\n");
}
void xbox_base_state::dump_process_command(int ref, int params, const char **param)
{
+ debugger_cpu &cpu = machine().debugger().cpu();
+ debugger_console &con = machine().debugger().console();
address_space &space = m_maincpu->space();
+ UINT64 addr;
+ offs_t address;
if (params < 1)
return;
- UINT64 addr;
if (!machine().debugger().commands().validate_number_parameter(param[0], &addr))
return;
- offs_t address = (offs_t)addr;
+ address = (offs_t)addr;
if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
{
- machine().debugger().console().printf("Address is unmapped.\n");
+ con.printf("Address is unmapped.\n");
return;
}
- machine().debugger().console().printf("ReadyListHead {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address), space.read_dword_unaligned(address + 4));
- machine().debugger().console().printf("ThreadListHead {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 8), space.read_dword_unaligned(address + 12));
- machine().debugger().console().printf("StackCount %d dword\n", space.read_dword_unaligned(address + 16));
- machine().debugger().console().printf("ThreadQuantum %d dword\n", space.read_dword_unaligned(address + 20));
- machine().debugger().console().printf("BasePriority %d byte\n", space.read_byte(address + 24));
- machine().debugger().console().printf("DisableBoost %d byte\n", space.read_byte(address + 25));
- machine().debugger().console().printf("DisableQuantum %d byte\n", space.read_byte(address + 26));
- machine().debugger().console().printf("_padding %d byte\n", space.read_byte(address + 27));
+ address = (offs_t)addr;
+
+ con.printf("ReadyListHead {%08X,%08X} _LIST_ENTRY\n", cpu.read_dword(space, address, true), cpu.read_dword(space, address + 4, true));
+ con.printf("ThreadListHead {%08X,%08X} _LIST_ENTRY\n", cpu.read_dword(space, address + 8, true), cpu.read_dword(space, address + 12, true));
+ con.printf("StackCount %d dword\n", cpu.read_dword(space, address + 16, true));
+ con.printf("ThreadQuantum %d dword\n", cpu.read_dword(space, address + 20, true));
+ con.printf("BasePriority %d byte\n", cpu.read_byte(space, address + 24, true));
+ con.printf("DisableBoost %d byte\n", cpu.read_byte(space, address + 25, true));
+ con.printf("DisableQuantum %d byte\n", cpu.read_byte(space, address + 26, true));
+ con.printf("_padding %d byte\n", cpu.read_byte(space, address + 27, true));
}
void xbox_base_state::dump_list_command(int ref, int params, const char **param)
{
+ debugger_cpu &cpu = machine().debugger().cpu();
+ debugger_console &con = machine().debugger().console();
address_space &space = m_maincpu->space();
+ UINT64 addr;
+ offs_t address;
if (params < 1)
return;
- UINT64 addr;
if (!machine().debugger().commands().validate_number_parameter(param[0], &addr))
return;
@@ -110,26 +117,27 @@ void xbox_base_state::dump_list_command(int ref, int params, const char **param)
}
UINT64 start = addr;
- offs_t address = (offs_t)addr;
+ address = (offs_t)addr;
if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
{
- machine().debugger().console().printf("Address is unmapped.\n");
+ con.printf("Address is unmapped.\n");
return;
}
+ address = (offs_t)addr;
if (params >= 2)
- machine().debugger().console().printf("Entry Object\n");
+ con.printf("Entry Object\n");
else
- machine().debugger().console().printf("Entry\n");
+ con.printf("Entry\n");
UINT64 old;
for (int num = 0; num < 32; num++)
{
if (params >= 2)
- machine().debugger().console().printf("%08X %08X\n", (UINT32)addr, (offs_t)addr - offset);
+ con.printf("%08X %08X\n", (UINT32)addr, (offs_t)addr - offset);
else
- machine().debugger().console().printf("%08X\n", (UINT32)addr);
+ con.printf("%08X\n", (UINT32)addr);
old = addr;
- addr = space.read_dword_unaligned(address);
+ addr = cpu.read_dword(space, address, true);
if (addr == start)
break;
if (addr == old)
@@ -137,99 +145,102 @@ void xbox_base_state::dump_list_command(int ref, int params, const char **param)
address = (offs_t)addr;
if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
break;
+ address = (offs_t)addr;
}
}
void xbox_base_state::dump_dpc_command(int ref, int params, const char **param)
{
+ debugger_cpu &cpu = machine().debugger().cpu();
+ debugger_console &con = machine().debugger().console();
address_space &space = m_maincpu->space();
+ UINT64 addr;
+ offs_t address;
if (params < 1)
return;
- UINT64 addr;
if (!machine().debugger().commands().validate_number_parameter(param[0], &addr))
return;
- offs_t address = (offs_t)addr;
+ address = (offs_t)addr;
if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
{
- machine().debugger().console().printf("Address is unmapped.\n");
+ con.printf("Address is unmapped.\n");
return;
}
- machine().debugger().console().printf("Type %d word\n", space.read_word_unaligned(address));
- machine().debugger().console().printf("Inserted %d byte\n", space.read_byte(address + 2));
- machine().debugger().console().printf("Padding %d byte\n", space.read_byte(address + 3));
- machine().debugger().console().printf("DpcListEntry {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 4), space.read_dword_unaligned(address + 8));
- machine().debugger().console().printf("DeferredRoutine %08X dword\n", space.read_dword_unaligned(address + 12));
- machine().debugger().console().printf("DeferredContext %08X dword\n", space.read_dword_unaligned(address + 16));
- machine().debugger().console().printf("SystemArgument1 %08X dword\n", space.read_dword_unaligned(address + 20));
- machine().debugger().console().printf("SystemArgument2 %08X dword\n", space.read_dword_unaligned(address + 24));
+ address = (offs_t)addr;
+ con.printf("Type %d word\n", cpu.read_word(space, address, true));
+ con.printf("Inserted %d byte\n", cpu.read_byte(space, address + 2, true));
+ con.printf("Padding %d byte\n", cpu.read_byte(space, address + 3, true));
+ con.printf("DpcListEntry {%08X,%08X} _LIST_ENTRY\n", cpu.read_dword(space, address + 4, true), cpu.read_dword(space, address + 8, true));
+ con.printf("DeferredRoutine %08X dword\n", cpu.read_dword(space, address + 12, true));
+ con.printf("DeferredContext %08X dword\n", cpu.read_dword(space, address + 16, true));
+ con.printf("SystemArgument1 %08X dword\n", cpu.read_dword(space, address + 20, true));
+ con.printf("SystemArgument2 %08X dword\n", cpu.read_dword(space, address + 24, true));
}
void xbox_base_state::dump_timer_command(int ref, int params, const char **param)
{
+ debugger_cpu &cpu = machine().debugger().cpu();
+ debugger_console &con = machine().debugger().console();
address_space &space = m_maincpu->space();
+ UINT64 addr;
+ offs_t address;
if (params < 1)
return;
- UINT64 addr;
if (!machine().debugger().commands().validate_number_parameter(param[0], &addr))
return;
- offs_t address = (offs_t)addr;
+ address = (offs_t)addr;
if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
{
- machine().debugger().console().printf("Address is unmapped.\n");
+ con.printf("Address is unmapped.\n");
return;
}
- machine().debugger().console().printf("Header.Type %d byte\n", space.read_byte(address));
- machine().debugger().console().printf("Header.Absolute %d byte\n", space.read_byte(address + 1));
- machine().debugger().console().printf("Header.Size %d byte\n", space.read_byte(address + 2));
- machine().debugger().console().printf("Header.Inserted %d byte\n", space.read_byte(address + 3));
- machine().debugger().console().printf("Header.SignalState %08X dword\n", space.read_dword_unaligned(address + 4));
- machine().debugger().console().printf("Header.WaitListEntry {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 8), space.read_dword_unaligned(address + 12));
- machine().debugger().console().printf("%s", string_format("DueTime %I64x qword\n", (INT64)space.read_qword_unaligned(address + 16)).c_str());
- machine().debugger().console().printf("TimerListEntry {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 24), space.read_dword_unaligned(address + 28));
- machine().debugger().console().printf("Dpc %08X dword\n", space.read_dword_unaligned(address + 32));
- machine().debugger().console().printf("Period %d dword\n", space.read_dword_unaligned(address + 36));
+ address = (offs_t)addr;
+ con.printf("Header.Type %d byte\n", cpu.read_byte(space, address, true));
+ con.printf("Header.Absolute %d byte\n", cpu.read_byte(space, address + 1, true));
+ con.printf("Header.Size %d byte\n", cpu.read_byte(space, address + 2, true));
+ con.printf("Header.Inserted %d byte\n", cpu.read_byte(space, address + 3, true));
+ con.printf("Header.SignalState %08X dword\n", cpu.read_dword(space, address + 4, true));
+ con.printf("Header.WaitListEntry {%08X,%08X} _LIST_ENTRY\n", cpu.read_dword(space, address + 8, true), cpu.read_dword(space, address + 12, true));
+ con.printf("%s", string_format("DueTime %I64x qword\n", (INT64)cpu.read_qword(space, address + 16, true)).c_str());
+ con.printf("TimerListEntry {%08X,%08X} _LIST_ENTRY\n", cpu.read_dword(space, address + 24, true), cpu.read_dword(space, address + 28, true));
+ con.printf("Dpc %08X dword\n", cpu.read_dword(space, address + 32, true));
+ con.printf("Period %d dword\n", cpu.read_dword(space, address + 36, true));
}
void xbox_base_state::curthread_command(int ref, int params, const char **param)
{
+ debugger_cpu &cpu = machine().debugger().cpu();
+ debugger_console &con = machine().debugger().console();
address_space &space = m_maincpu->space();
+ offs_t address;
- UINT64 fsbase = m_maincpu->state_int(44);
- offs_t address = (offs_t)fsbase + 0x28;
+ UINT64 fsbase = m_maincpu->state_int(44); // base of FS register
+ address = (offs_t)fsbase + 0x28;
if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
{
- machine().debugger().console().printf("Address is unmapped.\n");
+ con.printf("Address is unmapped.\n");
return;
}
+ address = (offs_t)fsbase + 0x28;
- UINT32 kthrd = space.read_dword_unaligned(address);
- machine().debugger().console().printf("Current thread is %08X\n", kthrd);
-
+ UINT32 kthrd = cpu.read_dword(space, address, true);
+ con.printf("Current thread is %08X\n", kthrd);
address = (offs_t)kthrd + 0x1c;
- if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
- return;
-
- UINT32 topstack = space.read_dword_unaligned(address);
- machine().debugger().console().printf("Current thread stack top is %08X\n", topstack);
-
+ UINT32 topstack = cpu.read_dword(space, address, true);
+ con.printf("Current thread stack top is %08X\n", topstack);
address = (offs_t)kthrd + 0x28;
- if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
- return;
-
- UINT32 tlsdata = space.read_dword_unaligned(address);
+ UINT32 tlsdata = cpu.read_dword(space, address, true);
if (tlsdata == 0)
address = (offs_t)topstack - 0x210 - 8;
else
address = (offs_t)tlsdata - 8;
- if (!m_maincpu->translate(AS_PROGRAM, TRANSLATE_READ_DEBUG, address))
- return;
- machine().debugger().console().printf("Current thread function is %08X\n", space.read_dword_unaligned(address));
+ con.printf("Current thread function is %08X\n", cpu.read_dword(space, address, true));
}
void xbox_base_state::generate_irq_command(int ref, int params, const char **param)
@@ -249,20 +260,22 @@ void xbox_base_state::generate_irq_command(int ref, int params, const char **par
void xbox_base_state::nv2a_combiners_command(int ref, int params, const char **param)
{
+ debugger_console &con = machine().debugger().console();
int en = nvidia_nv2a->toggle_register_combiners_usage();
if (en != 0)
- machine().debugger().console().printf("Register combiners enabled\n");
+ con.printf("Register combiners enabled\n");
else
- machine().debugger().console().printf("Register combiners disabled\n");
+ con.printf("Register combiners disabled\n");
}
void xbox_base_state::waitvblank_command(int ref, int params, const char **param)
{
+ debugger_console &con = machine().debugger().console();
int en = nvidia_nv2a->toggle_wait_vblank_support();
if (en != 0)
- machine().debugger().console().printf("Vblank method enabled\n");
+ con.printf("Vblank method enabled\n");
else
- machine().debugger().console().printf("Vblank method disabled\n");
+ con.printf("Vblank method disabled\n");
}
void xbox_base_state::grab_texture_command(int ref, int params, const char **param)
@@ -350,20 +363,22 @@ void xbox_base_state::vprogdis_command(int ref, int params, const char **param)
void xbox_base_state::help_command(int ref, int params, const char **param)
{
- machine().debugger().console().printf("Available Xbox commands:\n");
- machine().debugger().console().printf(" xbox dump_string, -- Dump _STRING object at \n");
- machine().debugger().console().printf(" xbox dump_process, -- Dump _PROCESS object at \n");
- machine().debugger().console().printf(" xbox dump_list,[,] -- Dump _LIST_ENTRY chain starting at \n");
- machine().debugger().console().printf(" xbox dump_dpc, -- Dump _KDPC object at \n");
- machine().debugger().console().printf(" xbox dump_timer, -- Dump _KTIMER object at \n");
- machine().debugger().console().printf(" xbox curthread -- Print information about current thread\n");
- machine().debugger().console().printf(" xbox irq, -- Generate interrupt with irq number 0-15\n");
- machine().debugger().console().printf(" xbox nv2a_combiners -- Toggle use of register combiners\n");
- machine().debugger().console().printf(" xbox waitvblank -- Toggle support for wait vblank method\n");
- machine().debugger().console().printf(" xbox grab_texture,, -- Save to the next used texture of type \n");
- machine().debugger().console().printf(" xbox grab_vprog, -- save current vertex program instruction slots to \n");
- machine().debugger().console().printf(" xbox vprogdis,,[,] -- disassemble vertex program instructions at of \n");
- machine().debugger().console().printf(" xbox help -- this list\n");
+ debugger_console &con = machine().debugger().console();
+
+ con.printf("Available Xbox commands:\n");
+ con.printf(" xbox dump_string, -- Dump _STRING object at \n");
+ con.printf(" xbox dump_process, -- Dump _PROCESS object at \n");
+ con.printf(" xbox dump_list,[,] -- Dump _LIST_ENTRY chain starting at \n");
+ con.printf(" xbox dump_dpc, -- Dump _KDPC object at \n");
+ con.printf(" xbox dump_timer, -- Dump _KTIMER object at \n");
+ con.printf(" xbox curthread -- Print information about current thread\n");
+ con.printf(" xbox irq, -- Generate interrupt with irq number 0-15\n");
+ con.printf(" xbox nv2a_combiners -- Toggle use of register combiners\n");
+ con.printf(" xbox waitvblank -- Toggle support for wait vblank method\n");
+ con.printf(" xbox grab_texture,, -- Save to the next used texture of type \n");
+ con.printf(" xbox grab_vprog, -- save current vertex program instruction slots to \n");
+ con.printf(" xbox vprogdis,,[,] -- disassemble vertex program instructions at of \n");
+ con.printf(" xbox help -- this list\n");
}
void xbox_base_state::xbox_debug_commands(int ref, int params, const char **param)
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index ded821502bd..5618ddd90d6 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -936,6 +936,9 @@ hr16b //
mmt8 //
sr16 //
+@source:alesis_qs.cpp
+alesqs7 //
+
@source:alg.cpp
alg_bios //
aplatoon // (c) 199? Nova?
@@ -11015,6 +11018,7 @@ hmcompmx // GX858 (c) 1999
popn1 // GX803 (c) 1998 (Asia)
popn2 // GX831 (c) 1998 (Japan)
popn3 // GX980 (c) 1999 (Japan)
+popnstage // GQ970 (c) 1999 (Japan)
@source:dkong.cpp
8ballact // (c) 1984 Seatongrove Ltd (Magic Eletronics USA license)
@@ -14164,8 +14168,10 @@ fxmcr165 // Gakken
gjackpot // Gakken
gpoker // Gakken
h2hbaseb // Coleco
+h2hboxing // Coleco
h2hfootb // Coleco
lostreas // Parker Bros
+matchnum // A-One
mathmagi // APF
mdndclab // Mattel
merlin // Parker Bros
@@ -14179,11 +14185,12 @@ ssimon // Milton Bradley
ssports4 // US Games
starwbc // Kenner
starwbcp // Kenner (patent)
-stopthie // Parker Bros
-stopthiep // Parker Bros (patent)
+stopthief // Parker Bros
+stopthiefp // Parker Bros (patent)
tandy12 // Tandy Radio Shack
tbreakup // Tomy
tc4 // Coleco
+tcfball // Tandy Radio Shack
zodiac // Coleco
@source:hh_ucom4.cpp
@@ -20466,6 +20473,7 @@ swtrilgy // 1998.11 Star Wars Trilogy Arcade
swtrilgya //
vf3 // 1996.09 Virtua Fighter 3
vf3a //
+vf3c //
vf3tb // 1997.10 Virtua Fighter 3tb
von2 // 1998.03 Dennou Senki Virtual-On Oratorio Tangram
von254g // 1999.05 Dennou Senki Virtual-On Oratorio Tangram ver.5.4
@@ -33549,6 +33557,7 @@ fantasyu // (c) 1981 Rock-Ola
nibbler // (c) 1982 Rock-ola (version 9)
nibbler6 // (c) 1982 Rock-ola (vresion 6)
nibbler8 // (c) 1982 Rock-ola (version 8)
+nibblera // (c) 1982 Rock-ola (version ?)
nibblero // (c) 1983 Olympia/Rock-Ola (version 8)
nibblerp // (c) 1982 Rock-ola (pballoon conversion)
pballoon // (c) 1982 SNK
@@ -34872,6 +34881,7 @@ topland // B62 (c) 1988 Taito Corporation Japan (World)
@source:taitogn.cpp
chaoshea // 1998.10 Chaos Heat (V2.09O)
chaosheaj // 1998.10 Chaos Heat (V2.08J)
+coh3002t //
flipmaze // 1999.09 Flip Maze (V2.04J)
gobyrc // 1999.?? Go By RC (V2.03O)
kollon // 2003.11 Kollon (V2.04J)
@@ -34892,7 +34902,6 @@ sianniv // 2003.10 Space Invaders Anniversary (V2.02J)
soutenry // 2001.02 Soutenryu (V2.07J)
spuzbobl // 1999.?? Super Puzzle Bobble (V2.05O)
spuzboblj // 1999.03 Super Puzzle Bobble (Japan)
-taitogn //
usagi // 2001.12 Usagi (V2.02J)
xiistag // 2002.07 XII Stag (V2.01J)
zokuoten // 2000.12 Zoku Otenamihaiken (V2.03J)
@@ -37587,10 +37596,7 @@ zexall // zexall z80 test suite with kevtris' preloader
@source:zn.cpp
1on1gov // 1 on 1 Government (JAPAN)
-acpsx //
aerofgts // Aero Fighters Special (TAIWAN)
-atluspsx //
-atpsx //
bam2 // Bust a Move 2 (JAPANESE ROM ver. 1999/07/17 10:00:00)
beastrzr // Beastorizer (USA)
beastrzrb // Beastorizer (USA Bootleg)
@@ -37604,8 +37610,15 @@ brvbladea // Brave Blade (ASIA)
brvbladej // Brave Blade (JAPAN)
brvbladeu // Brave Blade (USA)
cbaj // Cool Boaders Arcade Jam
-cpzn1 //
-cpzn2 //
+coh1000a //
+coh1000c //
+coh1000t //
+coh1000w //
+coh1001l //
+coh1002v //
+coh1002e //
+coh1002m //
+coh3002c //
doapp // Dead Or Alive ++ (JAPAN)
flamegun // Flame Gunner (USA)
flamegunj // Flame Gunner (JAPAN)
@@ -37632,12 +37645,11 @@ lpadv // Logic Pro Adventure (JAPAN)
mfjump // Monster Farm Jump (JAPAN)
mgcldate // Magical Date (JAPAN Ver 2.02J)
mgcldtex // Magical Date EX (JAPAN Ver 2.01J)
-nbajamex // NBA Jam Extreme
-nbajamexa //
+nbajamex // NBA Jam Extreme (ver. 1.10I)
+nbajamexa // NBA Jam Extreme (ver. 1.04)
plsmaswd // Plasma Sword (USA 980316)
plsmaswda // Plasma Sword (ASIA 980316)
primrag2 // Primal Rage 2
-psarc95 //
psyforce // Psychic Force (Ver 2.4O)
psyforcej // Psychic Force (Ver 2.4J)
psyforcex // Psychic Force EX (Ver 2.0J)
@@ -37676,18 +37688,15 @@ stargladj // Star Gladiator (JAPAN 960627)
stargld2 // Star Gladiator 2 (JAPAN 980316)
strider2 // Strider 2 (USA 991213)
strider2a // Strider 2 (ASIA 991213)
-taitofx1 //
tblkkuzu // The Block Kuzushi (JAPAN)
techromn // Tech Romancer (EURO 980914)
techromnu // Tech Romancer (USA 980914)
tecmowcm // Tecmo World Cup Millennium (JAPAN)
tgmj // Tetris The Grand Master (JAPAN 980710)
tondemo // Tondemo Crisis (JAPAN)
-tps //
ts2 // Battle Arena Toshinden 2 (USA 951124)
ts2a // Battle Arena Toshinden 2 (USA 951124)
ts2j // Battle Arena Toshinden 2 (JAPAN 951124)
-vspsx //
@source:zodiack.cpp
bounty // (c) 1982 Orca