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