From 4520b3847a3bedacddee07067741bdbf1314fb2c Mon Sep 17 00:00:00 2001 From: Aeternal Date: Sat, 17 Sep 2016 03:18:04 +0200 Subject: [PATCH 01/55] Removed dupes from psx.xml; shortnames consistency fixes The removed discs are identical to their redump.org counterparts, they've just been dumped with different offsets. --- hash/psx.xml | 105 ++++----------------------------------------------- 1 file changed, 7 insertions(+), 98 deletions(-) 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 - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/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/mame.lst b/src/mame/mame.lst index c73ca3816cb..e53313e5ebc 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14168,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 @@ -14183,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 From 05a63c3e042ba5fc201bcde0e8f865d69cd7c9ff Mon Sep 17 00:00:00 2001 From: smf- Date: Sun, 18 Sep 2016 20:04:19 +0100 Subject: [PATCH 26/55] Renamed ZN1/ZN2 bios roms based on the label (where known), renamed the bios sets after the board, moved cat702 to files [smf, Guru] --- src/mame/drivers/taitogn.cpp | 61 ++- src/mame/drivers/zn.cpp | 905 ++++++++++++++++++----------------- src/mame/machine/cat702.cpp | 28 +- src/mame/machine/cat702.h | 11 +- src/mame/mame.lst | 24 +- 5 files changed, 527 insertions(+), 502 deletions(-) diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp index da9d37c0de2..598c76565d5 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 ) +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/zn.cpp b/src/mame/drivers/zn.cpp index 215df0a5dfd..90a0d739afe 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( "coh-1002e.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( "hd64X3644X", 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( "coh-1001l.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/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/mame.lst b/src/mame/mame.lst index e53313e5ebc..617ce0955da 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34875,6 +34875,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) @@ -34895,7 +34896,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) @@ -37590,10 +37590,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) @@ -37607,8 +37604,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) @@ -37635,12 +37639,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) @@ -37679,18 +37682,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 From 1376b3497c5bdbe421485df4fe88a971357dbcca Mon Sep 17 00:00:00 2001 From: dankan1890 Date: Mon, 19 Sep 2016 02:48:46 +0200 Subject: [PATCH 27/55] removed enable_dats() option, no longer needed after the switch to lua plugin. (nw) fixed the failure to select the last used machine if quit with the focus in another part of the main menu. (nw) --- src/frontend/mame/ui/mainmenu.cpp | 2 +- src/frontend/mame/ui/moptions.cpp | 1 - src/frontend/mame/ui/moptions.h | 2 -- src/frontend/mame/ui/selgame.cpp | 13 ++++++++----- src/frontend/mame/ui/selsoft.cpp | 2 +- src/frontend/mame/ui/submenu.cpp | 1 - 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/frontend/mame/ui/mainmenu.cpp b/src/frontend/mame/ui/mainmenu.cpp index a70ae892387..b3b54891168 100644 --- a/src/frontend/mame/ui/mainmenu.cpp +++ b/src/frontend/mame/ui/mainmenu.cpp @@ -129,7 +129,7 @@ void menu_main::populate() item_append(_("Plugin Options"), "", 0, (void *)PLUGINS); // add dats menu - if (ui().options().enabled_dats() && mame_machine_manager::instance()->lua()->call_plugin("", "data_list")) + if (mame_machine_manager::instance()->lua()->call_plugin("", "data_list")) item_append(_("External DAT View"), "", 0, (void *)EXTERNAL_DATS); item_append(menu_item_type::SEPARATOR); diff --git a/src/frontend/mame/ui/moptions.cpp b/src/frontend/mame/ui/moptions.cpp index 6a95a737301..50cc0bcd14f 100644 --- a/src/frontend/mame/ui/moptions.cpp +++ b/src/frontend/mame/ui/moptions.cpp @@ -44,7 +44,6 @@ const options_entry ui_options::s_option_entries[] = // misc options { nullptr, nullptr, OPTION_HEADER, "UI MISC OPTIONS" }, - { OPTION_DATS_ENABLED, "1", OPTION_BOOLEAN, "enable DATs support" }, { OPTION_REMEMBER_LAST, "1", OPTION_BOOLEAN, "reselect in main menu last played game" }, { OPTION_ENLARGE_SNAPS, "1", OPTION_BOOLEAN, "enlarge arts (snapshot, title, etc...) in right panel (keeping aspect ratio)" }, { OPTION_FORCED4X3, "1", OPTION_BOOLEAN, "force the appearance of the snapshot in the list software to 4:3" }, diff --git a/src/frontend/mame/ui/moptions.h b/src/frontend/mame/ui/moptions.h index 766f15c38c5..71f42211755 100644 --- a/src/frontend/mame/ui/moptions.h +++ b/src/frontend/mame/ui/moptions.h @@ -38,7 +38,6 @@ #define OPTION_UI_PATH "ui_path" // core misc options -#define OPTION_DATS_ENABLED "dats_enabled" #define OPTION_REMEMBER_LAST "remember_last" #define OPTION_ENLARGE_SNAPS "enlarge_snaps" #define OPTION_FORCED4X3 "forced4x3" @@ -102,7 +101,6 @@ public: const char *ui_path() const { return value(OPTION_UI_PATH); } // Misc options - bool enabled_dats() const { return bool_value(OPTION_DATS_ENABLED); } bool remember_last() const { return bool_value(OPTION_REMEMBER_LAST); } bool enlarge_snaps() const { return bool_value(OPTION_ENLARGE_SNAPS); } bool forced_4x3_snapshot() const { return bool_value(OPTION_FORCED4X3); } diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 43fbf912d25..b138a310881 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -139,11 +139,15 @@ menu_select_game::~menu_select_game() game_driver const *const driver(isfavorite() ? nullptr : reinterpret_cast(get_selection_ref())); ui_software_info *const swinfo(isfavorite() ? reinterpret_cast(get_selection_ref()) : nullptr); - if ((FPTR)driver > skip_main_items) + if (reinterpret_cast(driver) > skip_main_items) last_driver = driver->name; + else if (driver && m_prev_selected) + last_driver = reinterpret_cast(m_prev_selected)->name; - if ((FPTR)swinfo > skip_main_items) + if (reinterpret_cast(swinfo) > skip_main_items) last_driver = swinfo->shortname; + else if (swinfo && m_prev_selected) + last_driver = reinterpret_cast(m_prev_selected)->shortname; std::string filter(main_filters::text[main_filters::actual]); if (main_filters::actual == FILTER_MANUFACTURER) @@ -168,7 +172,6 @@ void menu_select_game::handle() m_prev_selected = item[0].ref; bool check_filter = false; - bool enabled_dats = ui().options().enabled_dats(); // if i have to load datfile, performe an hard reset if (ui_globals::reset) @@ -339,7 +342,7 @@ void menu_select_game::handle() m_search[0] = '\0'; reset(reset_options::SELECT_FIRST); } - else if (menu_event->iptkey == IPT_UI_DATS && enabled_dats) + else if (menu_event->iptkey == IPT_UI_DATS && mame_machine_manager::instance()->lua()->call_plugin("", "data_list")) { // handle UI_DATS if (!isfavorite()) @@ -501,7 +504,7 @@ void menu_select_game::populate() if (!isfavorite()) { // if search is not empty, find approximate matches - if (m_search[0] != 0 && !isfavorite()) + if (m_search[0] != 0) populate_search(); else { diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp index 127b6c0ce54..b78a8926adb 100644 --- a/src/frontend/mame/ui/selsoft.cpp +++ b/src/frontend/mame/ui/selsoft.cpp @@ -242,7 +242,7 @@ void menu_select_software::handle() // handle UI_DOWN_FILTER highlight++; } - else if (menu_event->iptkey == IPT_UI_DATS && ui().options().enabled_dats()) + else if (menu_event->iptkey == IPT_UI_DATS && mame_machine_manager::instance()->lua()->call_plugin("", "data_list")) { // handle UI_DATS ui_software_info *ui_swinfo = (ui_software_info *)menu_event->itemref; diff --git a/src/frontend/mame/ui/submenu.cpp b/src/frontend/mame/ui/submenu.cpp index 3d0b866618a..9b4b85331a8 100644 --- a/src/frontend/mame/ui/submenu.cpp +++ b/src/frontend/mame/ui/submenu.cpp @@ -22,7 +22,6 @@ std::vector const submenu::misc_options = { { submenu::option_type::HEAD, __("Miscellaneous Options") }, { submenu::option_type::UI, __("Re-select last machine played"), OPTION_REMEMBER_LAST }, { submenu::option_type::UI, __("Enlarge images in the right panel"), OPTION_ENLARGE_SNAPS }, - { submenu::option_type::UI, __("DATs info"), OPTION_DATS_ENABLED }, { submenu::option_type::EMU, __("Cheats"), OPTION_CHEAT }, { submenu::option_type::EMU, __("Show mouse pointer"), OPTION_UI_MOUSE }, { submenu::option_type::EMU, __("Confirm quit from machines"), OPTION_CONFIRM_QUIT }, From 873fc1805edd9000558f383d0fa772925c38bee5 Mon Sep 17 00:00:00 2001 From: mahlemiut Date: Mon, 19 Sep 2016 15:53:59 +1200 Subject: [PATCH 28/55] octopus: made a start at switching between the 8088 and Z80 CPUs. TESTUNE.COM on the diagnostic disk is a good test for CPU switching (might want to keep the volume down a bit). --- src/mame/drivers/octopus.cpp | 78 +++++++++++++++++++++++++++++++----- 1 file changed, 69 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp index 9684a533eb4..a613bb352b3 100644 --- a/src/mame/drivers/octopus.cpp +++ b/src/mame/drivers/octopus.cpp @@ -121,6 +121,8 @@ Its BIOS performs POST and halts as there's no keyboard. #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 { @@ -143,9 +145,12 @@ public: 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_beep_active(false), + m_z80_active(false) { } virtual void machine_reset() override; @@ -169,6 +174,9 @@ 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); @@ -208,6 +216,8 @@ private: 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 @@ -220,14 +230,14 @@ private: 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 @@ -268,11 +278,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 ) @@ -360,6 +371,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; } @@ -373,7 +385,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) @@ -387,6 +407,20 @@ READ8_MEMBER(octopus_state::system_r) 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 @@ -509,16 +543,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() @@ -558,7 +608,7 @@ static MACHINE_CONFIG_START( octopus, octopus_state ) 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) @@ -631,8 +681,8 @@ static MACHINE_CONFIG_START( octopus, octopus_state ) MCFG_FLOPPY_DRIVE_ADD("fdc:1", octopus_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_DEVICE_ADD("pit", PIT8253, 0) - MCFG_PIT8253_CLK0(2457500) // DART channel A - MCFG_PIT8253_CLK1(2457500) // DART channel B + 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)) @@ -662,6 +712,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 */ From a96e3c17122ccb7b9bd170899a05136c7bd452fc Mon Sep 17 00:00:00 2001 From: smf- Date: Mon, 19 Sep 2016 10:02:41 +0100 Subject: [PATCH 29/55] another couple of rom names from Guru, previous comment covers it so..... (nw) --- src/mame/drivers/zn.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp index 90a0d739afe..3fa76ad6851 100644 --- a/src/mame/drivers/zn.cpp +++ b/src/mame/drivers/zn.cpp @@ -4496,7 +4496,7 @@ ROM_END #define PSARC95_BIOS \ ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \ - ROM_LOAD( "coh-1002e.ic353", 0x000000, 0x080000, CRC(910f3a8b) SHA1(cd68532967a25f476a6d73473ec6b6f4df2e1689) ) /* english */ \ + 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 ) \ @@ -4784,7 +4784,7 @@ ROM_START( bam2 ) ROM_LOAD( "mtr-bam-a10.u32", 0x2800000, 0x400000, CRC(37fd1fa0) SHA1(afe846a817e499c405a5fd4ad83094270640faf3) ) ROM_REGION( 0x8000, "h83644", 0) - ROM_LOAD( "hd64X3644X", 0x00000, 0x8000, NO_DUMP ) + ROM_LOAD( "hd64f3644.u2", 0x00000, 0x8000, NO_DUMP ) DISK_REGION( "ata:0:hdd:image" ) DISK_IMAGE("bam2", 0, SHA1(634d9a745a82c567fc4d7ce48e3570d88326c5f9) ) From ea15eb91112bff6dc9976d192bf2527b1fe8c37a Mon Sep 17 00:00:00 2001 From: smf- Date: Mon, 19 Sep 2016 11:28:02 +0100 Subject: [PATCH 30/55] small step towards getting rid of the cps2_dead machine config. (nw) --- src/mame/drivers/cps2.cpp | 1 - src/mame/machine/cps2crypt.cpp | 31 ++++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp index ce4c99cd13b..25f53779d88 100644 --- a/src/mame/drivers/cps2.cpp +++ b/src/mame/drivers/cps2.cpp @@ -1342,7 +1342,6 @@ static MACHINE_CONFIG_DERIVED( dead_cps2, cps2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(dead_cps2_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gigaman2, cps2 ) diff --git a/src/mame/machine/cps2crypt.cpp b/src/mame/machine/cps2crypt.cpp index 8b9f1f7616a..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]; + } } } } @@ -774,18 +775,18 @@ DRIVER_INIT_MEMBER(cps_state,cps2crypt) { // 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); } } From e8c651e3436e791a2b12ac2a1560ba8bcced04b3 Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Mon, 19 Sep 2016 08:29:27 -0400 Subject: [PATCH 31/55] pce_tourvision.xml: Added Barunba and Power Tennis (Not Working) [system11] pce.xml : Updated status on a non-working game (nw) tourvis.cpp: Updated information for new card images added [system11] --- hash/pce.xml | 2 +- hash/pce_tourvision.xml | 28 ++++++++++++++++++++++++++++ src/mame/drivers/tourvis.cpp | 6 ++++-- 3 files changed, 33 insertions(+), 3 deletions(-) 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..7be1343294f 100644 --- a/hash/pce_tourvision.xml +++ b/hash/pce_tourvision.xml @@ -126,6 +126,20 @@ + + + Barnuba (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/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) From 3cb56626ec5c286ba3b7adfb27628aeec58e6840 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Mon, 19 Sep 2016 14:35:19 +0200 Subject: [PATCH 32/55] ti99: Improve performance by stopping GROM clock in idle state --- src/devices/bus/ti99x/998board.cpp | 85 +++++++++++++++++++----------- src/devices/bus/ti99x/998board.h | 26 +++++---- src/devices/bus/ti99x/datamux.cpp | 16 +++++- src/devices/bus/ti99x/datamux.h | 3 ++ src/devices/bus/ti99x/gromport.cpp | 66 ++++++++++++++++++++++- src/devices/bus/ti99x/gromport.h | 14 ++++- src/devices/machine/tmc0430.cpp | 2 +- src/devices/machine/tmc0430.h | 3 ++ 8 files changed, 163 insertions(+), 52 deletions(-) diff --git a/src/devices/bus/ti99x/998board.cpp b/src/devices/bus/ti99x/998board.cpp index 89d7224fc98..d99c509f08a 100644 --- a/src/devices/bus/ti99x/998board.cpp +++ b/src/devices/bus/ti99x/998board.cpp @@ -137,7 +137,16 @@ mainboard8_device::mainboard8_device(const machine_config &mconfig, const char * m_vaquerro(*this, VAQUERRO_TAG), m_mofetta(*this, MOFETTA_TAG), m_amigo(*this, AMIGO_TAG), - m_oso(*this, OSO_TAG) + m_oso(*this, OSO_TAG), + m_video(*owner, VDP_TAG), // subdevice of main class + m_sound(*owner, TISOUNDCHIP_TAG), + m_speech(*owner, SPEECHSYN_TAG), + m_gromport(*owner, GROMPORT_TAG), + m_peb(*owner, PERIBOX_TAG), + m_sgrom_idle(true), + m_tsgrom_idle(true), + m_p8grom_idle(true), + m_p3grom_idle(true) { } @@ -252,17 +261,33 @@ WRITE_LINE_MEMBER( mainboard8_device::clock_in ) if (gromclk != m_gromclk) // when it changed, propagate to the GROMs { m_gromclk = gromclk; - for (int i=0; i < 8; i++) + + // Get some more performance. We only propagate the clock line to + // those GROMs that are not idle. + // Yields about 25% in bench (hoped for more, but well) + if (!m_sgrom_idle) { - if (i < 3) - { - m_sgrom[i]->gclock_in(gromclk); - m_p3grom[i]->gclock_in(gromclk); - } - m_tsgrom[i]->gclock_in(gromclk); - m_p8grom[i]->gclock_in(gromclk); + for (int i=0; i < 3; i++) m_sgrom[i]->gclock_in(gromclk); + m_gromport->gclock_in(gromclk); + m_sgrom_idle = m_sgrom[0]->idle(); + } + + if (!m_tsgrom_idle) + { + for (int i=0; i < 8; i++) m_tsgrom[i]->gclock_in(gromclk); + m_tsgrom_idle = m_tsgrom[0]->idle(); + } + if (!m_p8grom_idle) + { + for (int i=0; i < 8; i++) m_p8grom[i]->gclock_in(gromclk); + m_p8grom_idle = m_p8grom[0]->idle(); + } + + if (!m_p3grom_idle) + { + for (int i=0; i < 3; i++) m_p3grom[i]->gclock_in(gromclk); + m_p3grom_idle = m_p3grom[0]->idle(); } - m_gromport->gclock_in(gromclk); } // Check video for writing @@ -338,16 +363,23 @@ void mainboard8_device::select_groms() int lines = (m_dbin_level==ASSERT_LINE)? GROM_M_LINE : 0; if (m_A14_set) lines |= GROM_MO_LINE; + if (select & SGMSEL) m_sgrom_idle = false; + if (select & TSGSEL) m_tsgrom_idle = false; + if (select & P8GSEL) m_p8grom_idle = false; + if (select & P3GSEL) m_p3grom_idle = false; + + for (int i=0; i < 3; i++) + m_sgrom[i]->set_lines(*m_space, lines, select & SGMSEL); + for (int i=0; i < 8; i++) - { - if (i < 3) - { - m_sgrom[i]->set_lines(*m_space, lines, select & SGMSEL); - m_p3grom[i]->set_lines(*m_space, lines, select & P3GSEL); - } m_tsgrom[i]->set_lines(*m_space, lines, select & TSGSEL); + + for (int i=0; i < 8; i++) m_p8grom[i]->set_lines(*m_space, lines, select & P8GSEL); - } + + for (int i=0; i < 3; i++) + m_p3grom[i]->set_lines(*m_space, lines, select & P3GSEL); + // Write to the cartridge port. The GROMs on cartridges are accesses as system GROMs if (select & SGMSEL) m_gromport->romgq_line(CLEAR_LINE); m_gromport->set_gromlines(*m_space, lines, select & SGMSEL); @@ -476,6 +508,7 @@ READ8_MEMBER( mainboard8_device::read ) switch (m_vaquerro->gromcs_out()) { case SGMSEL: + m_sgrom_idle = false; for (int i=0; i < 3; i++) { m_sgrom[i]->readz(space, 0, &value); @@ -486,6 +519,7 @@ READ8_MEMBER( mainboard8_device::read ) goto readdone; case TSGSEL: + m_tsgrom_idle = false; for (int i=0; i < 8; i++) { m_tsgrom[i]->readz(space, 0, &value); @@ -495,6 +529,7 @@ READ8_MEMBER( mainboard8_device::read ) goto readdone; case P8GSEL: + m_p8grom_idle = false; for (int i=0; i < 8; i++) { m_p8grom[i]->readz(space, 0, &value); @@ -504,6 +539,7 @@ READ8_MEMBER( mainboard8_device::read ) goto readdone; case P3GSEL: + m_p3grom_idle = false; for (int i=0; i < 3; i++) { m_p3grom[i]->readz(space, 0, &value); @@ -751,21 +787,6 @@ void mainboard8_device::device_start() m_p8grom[i] = downcast(machine().device(glib2[i])); } - // Link to speech synthesizer - m_speech = downcast(machine().device(SPEECHSYN_TAG)); - - // Link to sound chip - m_sound = downcast(machine().device(TISOUNDCHIP_TAG)); - - // Link to video - m_video = downcast(machine().device(VDP_TAG)); - - // Link to cartridge port - m_gromport = downcast(machine().device(GROMPORT_TAG)); - - // Link to PEB - m_peb = downcast(machine().device(PERIBOX_TAG)); - // Configure RAM and AMIGO m_sram = std::make_unique(SRAM_SIZE); m_dram = std::make_unique(DRAM_SIZE); diff --git a/src/devices/bus/ti99x/998board.h b/src/devices/bus/ti99x/998board.h index e0ed6b397fa..a743f61d44b 100644 --- a/src/devices/bus/ti99x/998board.h +++ b/src/devices/bus/ti99x/998board.h @@ -505,18 +505,16 @@ private: required_device m_amigo; required_device m_oso; + // More devices + required_device m_video; + required_device m_sound; + required_device m_speech; + required_device m_gromport; + required_device m_peb; + // Debugging line_state m_last_ready; - // Video processor - tms9118_device* m_video; - - // Sound generator - sn76496_base_device* m_sound; - - // Speech processor - cd2501ecd_device* m_speech; - // System GROM library tmc0430_device* m_sgrom[3]; @@ -529,11 +527,11 @@ private: // Pascal 3 GROM library tmc0430_device* m_p3grom[3]; - // Gromport (cartridge port) - gromport_device* m_gromport; - - // Peripheral box - peribox_device* m_peb; + // Idle flags for GROMs + bool m_sgrom_idle; + bool m_tsgrom_idle; + bool m_p8grom_idle; + bool m_p3grom_idle; // Memory std::unique_ptr m_sram; diff --git a/src/devices/bus/ti99x/datamux.cpp b/src/devices/bus/ti99x/datamux.cpp index 1df66bc5c1e..470814b4d9a 100644 --- a/src/devices/bus/ti99x/datamux.cpp +++ b/src/devices/bus/ti99x/datamux.cpp @@ -87,7 +87,8 @@ ti99_datamux_device::ti99_datamux_device(const machine_config &mconfig, const ch m_ram16b(nullptr), m_use32k(false), m_base32k(0), - m_console_groms_present(false) + m_console_groms_present(false), + m_grom_idle(true) { } #define TRACE_READY 0 @@ -119,6 +120,7 @@ void ti99_datamux_device::read_all(address_space& space, UINT16 addr, UINT8 *val } // GROMport (GROMs) m_gromport->readz(space, addr, value); + m_grom_idle = false; } // Video @@ -149,6 +151,7 @@ void ti99_datamux_device::write_all(address_space& space, UINT16 addr, UINT8 val } // GROMport m_gromport->write(space, addr, value); + m_grom_idle = false; } // Cartridge port and sound @@ -190,6 +193,8 @@ void ti99_datamux_device::setaddress_all(address_space& space, UINT16 addr) if (a14==ASSERT_LINE) lines |= 2; line_state select = isgrom? ASSERT_LINE : CLEAR_LINE; + if (select) m_grom_idle = false; + if (m_console_groms_present) for (int i=0; i < 3; i++) m_grom[i]->set_lines(space, lines, select); @@ -519,14 +524,23 @@ WRITE_LINE_MEMBER( ti99_datamux_device::ready_line ) ready_join(); } +/* Called from VDP via console. */ WRITE_LINE_MEMBER( ti99_datamux_device::gromclk_in ) { + // Don't propagate the clock in idle phase + if (m_grom_idle) return; + // Propagate to the GROMs if (m_console_groms_present) { for (int i=0; i < 3; i++) m_grom[i]->gclock_in(state); + m_grom_idle = m_grom[0]->idle(); } m_gromport->gclock_in(state); + + // Only ask the gromport when we don't have GROMs in the console + if (!m_console_groms_present) + m_grom_idle = m_gromport->is_grom_idle(); } /*************************************************************************** diff --git a/src/devices/bus/ti99x/datamux.h b/src/devices/bus/ti99x/datamux.h index 27908d403c6..f95bb67de23 100644 --- a/src/devices/bus/ti99x/datamux.h +++ b/src/devices/bus/ti99x/datamux.h @@ -126,6 +126,9 @@ private: // Console GROMs are available (the HSGPL expects them to be removed) bool m_console_groms_present; + + // GROMs are idle, no need to propagate the clock + bool m_grom_idle; }; /******************************************************************************/ diff --git a/src/devices/bus/ti99x/gromport.cpp b/src/devices/bus/ti99x/gromport.cpp index b0539a7ad8f..cb2b2f869ca 100644 --- a/src/devices/bus/ti99x/gromport.cpp +++ b/src/devices/bus/ti99x/gromport.cpp @@ -234,6 +234,18 @@ void gromport_device::cartridge_inserted() } } +/* + Find out whether the GROMs in the cartridge are idle. In that case, + cut the clock line. +*/ +bool gromport_device::is_grom_idle() +{ + if (m_connector != nullptr) + return m_connector->is_grom_idle(); + else + return false; +} + void gromport_device::device_config_complete() { m_connector = static_cast(subdevices().first()); @@ -347,6 +359,14 @@ WRITE_LINE_MEMBER(single_conn_device::gclock_in) m_cartridge->gclock_in(state); } +/* + Check whether the GROMs are idle. +*/ +bool single_conn_device::is_grom_idle() +{ + return m_cartridge->is_grom_idle(); +} + void single_conn_device::device_start() { m_cartridge = static_cast(subdevices().first()); @@ -619,6 +639,22 @@ WRITE8_MEMBER(multi_conn_device::cruwrite) } } +/* + Check whether the GROMs are idle. Just ask the currently + active cartridge. +*/ +bool multi_conn_device::is_grom_idle() +{ + /* Sanity check. Higher slots are always empty. */ + if (m_active_slot >= NUMBER_OF_CARTRIDGE_SLOTS) + return false; + + if (m_cartridge[m_active_slot] != nullptr) + return m_cartridge[m_active_slot]->is_grom_idle(); + + return false; +} + void multi_conn_device::device_start() { m_next_free_slot = 0; @@ -818,6 +854,14 @@ WRITE_LINE_MEMBER(gkracker_device::gclock_in) if (m_cartridge != nullptr) m_cartridge->gclock_in(state); } +/* + Check whether the GROMs are idle. +*/ +bool gkracker_device::is_grom_idle() +{ + return (m_cartridge != nullptr)? m_cartridge->is_grom_idle() : false; +} + READ8Z_MEMBER(gkracker_device::readz) { if (m_grom_selected) @@ -1466,6 +1510,11 @@ WRITE_LINE_MEMBER(ti99_cartridge_device::gclock_in) if (m_pcb != nullptr) m_pcb->gclock_in(state); } +bool ti99_cartridge_device::is_grom_idle() +{ + return (m_pcb != nullptr)? m_pcb->is_grom_idle() : false; +} + void ti99_cartridge_device::device_config_complete() { update_names(); @@ -1527,6 +1576,7 @@ const device_type TI99CART = &device_creator; ti99_cartridge_pcb::ti99_cartridge_pcb() : m_cart(nullptr), + m_grom_idle(false), m_grom_size(0), m_rom_size(0), m_ram_size(0), @@ -1629,13 +1679,25 @@ WRITE_LINE_MEMBER( ti99_cartridge_pcb::romgq_line ) WRITE8_MEMBER(ti99_cartridge_pcb::set_gromlines) { for (auto& elem : m_grom) - if (elem != nullptr) elem->set_lines(space, offset, data); + { + if (elem != nullptr) + { + elem->set_lines(space, offset, data); + if (data==ASSERT_LINE) m_grom_idle = false; + } + } } WRITE_LINE_MEMBER(ti99_cartridge_pcb::gclock_in) { for (auto& elem : m_grom) - if (elem != nullptr) elem->gclock_in(state); + { + if (elem != nullptr) + { + elem->gclock_in(state); + m_grom_idle = elem->idle(); + } + } } diff --git a/src/devices/bus/ti99x/gromport.h b/src/devices/bus/ti99x/gromport.h index d21497d9d55..694ffb04f3d 100644 --- a/src/devices/bus/ti99x/gromport.h +++ b/src/devices/bus/ti99x/gromport.h @@ -42,6 +42,7 @@ public: template static devcb_base &static_set_reset_callback(device_t &device, _Object object) { return downcast(device).m_console_reset.set_callback(object); } void cartridge_inserted(); + bool is_grom_idle(); protected: virtual void device_start() override; @@ -100,6 +101,7 @@ public: bool is_available() { return m_pcb != nullptr; } void set_slot(int i); + bool is_grom_idle(); protected: virtual void device_start() override { }; @@ -159,8 +161,7 @@ public: virtual void insert(int index, ti99_cartridge_device* cart) { m_gromport->cartridge_inserted(); }; virtual void remove(int index) { }; - // UINT16 grom_base(); - // UINT16 grom_mask(); + virtual bool is_grom_idle() =0; protected: ti99_cartridge_connector_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); @@ -186,6 +187,8 @@ public: DECLARE_WRITE8_MEMBER(set_gromlines) override; DECLARE_WRITE_LINE_MEMBER(gclock_in) override; + bool is_grom_idle(); + protected: virtual void device_start() override; virtual void device_reset() override; @@ -221,6 +224,8 @@ public: void remove(int index) override; DECLARE_INPUT_CHANGED_MEMBER( switch_changed ); + bool is_grom_idle(); + protected: virtual void device_start() override; virtual void device_reset() override; @@ -258,6 +263,9 @@ public: void remove(int index) override; DECLARE_INPUT_CHANGED_MEMBER( gk_changed ); + // We may have a cartridge plugged into the GK + bool is_grom_idle(); + protected: virtual void device_start() override; virtual void device_reset() override; @@ -317,9 +325,11 @@ protected: void set_cartridge(ti99_cartridge_device *cart); const char* tag() { return m_tag; } void set_tag(const char* tag) { m_tag = tag; } + bool is_grom_idle() { return m_grom_idle; } ti99_cartridge_device* m_cart; tmc0430_device* m_grom[5]; + bool m_grom_idle; int m_grom_size; int m_rom_size; int m_ram_size; diff --git a/src/devices/machine/tmc0430.cpp b/src/devices/machine/tmc0430.cpp index 31fe699347e..7a5e2b39c3d 100644 --- a/src/devices/machine/tmc0430.cpp +++ b/src/devices/machine/tmc0430.cpp @@ -211,7 +211,7 @@ WRITE_LINE_MEMBER( tmc0430_device::gclock_in ) if ((m_current_clock_level==CLEAR_LINE) || (oldlevel==ASSERT_LINE)) return; - if (TRACE_CLOCK) logerror("GROMCLK in, phase=%d, m_add=%d\n", m_phase, m_address); + if (TRACE_CLOCK) logerror("GROMCLK in, phase=%d, m_add=%04x\n", m_phase, m_address); switch (m_phase) { diff --git a/src/devices/machine/tmc0430.h b/src/devices/machine/tmc0430.h index 6dcf44c3ec0..615dfb9063d 100644 --- a/src/devices/machine/tmc0430.h +++ b/src/devices/machine/tmc0430.h @@ -53,6 +53,9 @@ public: int debug_get_address(); + // Allow for checking the state of the GROM so we can turn off the clock + bool idle() { return m_phase == 0; } + protected: void device_start(void) override; void device_reset(void) override; From 57fdec7d18c324f6ee47d98a4e919389167c1352 Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Mon, 19 Sep 2016 08:46:06 -0400 Subject: [PATCH 33/55] fixed typo (nw) --- hash/pce_tourvision.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hash/pce_tourvision.xml b/hash/pce_tourvision.xml index 7be1343294f..93a108f87be 100644 --- a/hash/pce_tourvision.xml +++ b/hash/pce_tourvision.xml @@ -128,7 +128,7 @@ - Barnuba (Tourvision PCE bootleg) + Barunba (Tourvision PCE bootleg) 1989 bootleg (Tourvision) / Zap / Namcot From e39f3ca1c857c0a827ae5b9a17d819deb598065d Mon Sep 17 00:00:00 2001 From: Joakim Larsson Edstrom Date: Mon, 19 Sep 2016 16:15:25 +0200 Subject: [PATCH 34/55] Simplified internal layouts which removed dependencies on external artwork --- src/mame/drivers/didact.cpp | 1 + src/mame/layout/md6802.lay | 56 ++++++++++++++-- src/mame/layout/mp68a.lay | 126 ++++++++++++++++++++++++++++-------- 3 files changed, 149 insertions(+), 34 deletions(-) diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp index d5a5555880a..5333a6e92d2 100644 --- a/src/mame/drivers/didact.cpp +++ b/src/mame/drivers/didact.cpp @@ -989,6 +989,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS_END #endif +// TODO: Fix shift led for mp68a correctly, workaround doesn't work anymore! Shift works though... TIMER_DEVICE_CALLBACK_MEMBER(didact_state::scan_artwork) { // LOG(("--->%s()\n", FUNCNAME)); 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 @@ - + + + - + + + - + + + - + + + - + + + - + + + - + + + - + + + - + + + - + + + - + + + - + + + - + + + - + + - + + + - + + + - + + + - + + + From e54e7a45635a2c749adc34159e2c482b46cbe92f Mon Sep 17 00:00:00 2001 From: angelosa Date: Mon, 19 Sep 2016 16:49:48 +0200 Subject: [PATCH 35/55] Mark Usagi as IMPERFECT GFXs, nw --- src/mame/drivers/taitogn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp index 598c76565d5..7683377424f 100644 --- a/src/mame/drivers/taitogn.cpp +++ b/src/mame/drivers/taitogn.cpp @@ -1095,7 +1095,7 @@ GAME( 2000, zokuoten, coh3002t, coh3002t, coh3002t, taitogn_state, coh3002 GAME( 2004, zooo, coh3002t, coh3002t, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zooo (V2.01J)", 0 ) 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 ) +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 ) From 1d4f92b9063f42f4f98b1f959c80b63618139b02 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Mon, 19 Sep 2016 17:51:29 +0200 Subject: [PATCH 36/55] Added override modifier (nw) --- src/devices/bus/ti99x/gromport.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/bus/ti99x/gromport.h b/src/devices/bus/ti99x/gromport.h index 694ffb04f3d..309a7d76558 100644 --- a/src/devices/bus/ti99x/gromport.h +++ b/src/devices/bus/ti99x/gromport.h @@ -187,7 +187,7 @@ public: DECLARE_WRITE8_MEMBER(set_gromlines) override; DECLARE_WRITE_LINE_MEMBER(gclock_in) override; - bool is_grom_idle(); + bool is_grom_idle() override; protected: virtual void device_start() override; @@ -224,7 +224,7 @@ public: void remove(int index) override; DECLARE_INPUT_CHANGED_MEMBER( switch_changed ); - bool is_grom_idle(); + bool is_grom_idle() override; protected: virtual void device_start() override; @@ -264,7 +264,7 @@ public: DECLARE_INPUT_CHANGED_MEMBER( gk_changed ); // We may have a cartridge plugged into the GK - bool is_grom_idle(); + bool is_grom_idle() override; protected: virtual void device_start() override; From 6c66854f7e7907a66fb7b1d459188b9c047f7a87 Mon Sep 17 00:00:00 2001 From: angelosa Date: Mon, 19 Sep 2016 18:18:37 +0200 Subject: [PATCH 37/55] Add NO_DUMP for missing title screen in Puzzle Club, nw --- src/mame/drivers/namcos1.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 From b07bedcc4ea7333628aa5e94734eeac81ce844ee Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 19 Sep 2016 18:38:54 +0200 Subject: [PATCH 38/55] stfight.cpp: switched to configured bankins, fixes save state problem with cshootert (nw) --- src/mame/drivers/stfight.cpp | 2 +- src/mame/machine/stfight.cpp | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) 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/machine/stfight.cpp b/src/mame/machine/stfight.cpp index 0f88a0801ec..0b10d2bc43e 100644 --- a/src/mame/machine/stfight.cpp +++ b/src/mame/machine/stfight.cpp @@ -75,6 +75,8 @@ DRIVER_INIT_MEMBER(stfight_state,cshooter) void stfight_state::machine_start() { + membank("mainbank")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000); + save_item(NAME(m_fm_data)); save_item(NAME(m_cpu_to_mcu_data)); save_item(NAME(m_cpu_to_mcu_empty)); @@ -102,27 +104,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); } /* From 74115791b18cd1a34bc5dffdb1b37ee861901288 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 19 Sep 2016 19:08:01 +0200 Subject: [PATCH 39/55] overdriv.cpp: fixed save state problem (nw) --- src/mame/drivers/overdriv.cpp | 1 + 1 file changed, 1 insertion(+) 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() From 3c772ce3cbee4883fca156fa4a03cbd7b4479e3d Mon Sep 17 00:00:00 2001 From: angelosa Date: Mon, 19 Sep 2016 19:40:35 +0200 Subject: [PATCH 40/55] Some work towards flower.cpp, nw --- src/mame/drivers/flower.cpp | 175 ++++++++++++++++++++++++++++++++---- 1 file changed, 156 insertions(+), 19 deletions(-) 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) ) From 99c3b32acad42438845a80aa0c0b64126888ea09 Mon Sep 17 00:00:00 2001 From: dankan1890 Date: Mon, 19 Sep 2016 20:47:12 +0200 Subject: [PATCH 41/55] Partial fix for MT06383 --- src/frontend/mame/ui/selgame.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index b138a310881..2afcd9e1188 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -397,7 +397,7 @@ void menu_select_game::handle() } } } - else if (menu_event->iptkey == IPT_UI_EXPORT && !isfavorite()) + else if (menu_event->iptkey == IPT_UI_EXPORT) { // handle UI_EXPORT inkey_export(); @@ -1355,8 +1355,21 @@ void menu_select_game::inkey_export() } else { + if (isfavorite()) + { + // iterate over favorites + for (auto & favmap : mame_machine_manager::instance()->favorite().m_list) + { + if (favmap.second.startempty == 1) + list.push_back(favmap.second.driver); + else + return; + } + } + else list = m_displaylist; } + menu::stack_push(ui(), container(), std::move(list)); } From e9473830a3c96c23d892f3ec33ac4322ae8331f1 Mon Sep 17 00:00:00 2001 From: smf- Date: Mon, 19 Sep 2016 21:20:03 +0100 Subject: [PATCH 42/55] Bios label from heavens gate from Guru. (nw) --- src/mame/drivers/zn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp index 3fa76ad6851..c4ad04c3914 100644 --- a/src/mame/drivers/zn.cpp +++ b/src/mame/drivers/zn.cpp @@ -4942,7 +4942,7 @@ ROM_END #define ATLUS_BIOS \ ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \ - ROM_LOAD( "coh-1001l.ic353", 0x000000, 0x080000, CRC(6721146b) SHA1(9511d24bfe25eb180fb2db0835b131cb4a12730e) ) /* english */ \ + 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 ) \ From a7781904e4ddfe6b69af8d81960d0ddd46779c5e Mon Sep 17 00:00:00 2001 From: smf- Date: Mon, 19 Sep 2016 21:21:57 +0100 Subject: [PATCH 43/55] Swap non playable primal rage 2 for playable judge dredd for now. Fixes mametesters #06138 [smf] --- src/devices/machine/idehd.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/devices/machine/idehd.cpp b/src/devices/machine/idehd.cpp index d0207a46f17..f56c6f68558 100644 --- a/src/devices/machine/idehd.cpp +++ b/src/devices/machine/idehd.cpp @@ -13,8 +13,6 @@ #define LOGPRINT(x) do { if (VERBOSE) logerror x; if (PRINTF_IDE_COMMANDS) osd_printf_debug x; } while (0) #define TIME_PER_SECTOR_WRITE (attotime::from_usec(100)) -/* read time <2 breaks primrag2, ==100 breaks bm1stmix */ -#define TIME_PER_SECTOR_READ (attotime::from_usec(2)) #define TIME_PER_ROTATION (attotime::from_hz(5400/60)) #define TIME_BETWEEN_SECTORS (attotime::from_nsec(400)) @@ -415,7 +413,7 @@ void ata_mass_storage_device::fill_buffer() if (m_sector_count > 0) { set_dasp(ASSERT_LINE); - start_busy(TIME_PER_SECTOR_READ, PARAM_COMMAND); + start_busy(TIME_BETWEEN_SECTORS, PARAM_COMMAND); } break; } From 7e754253c7733d92eee5ef0484fb8fc24d0d8708 Mon Sep 17 00:00:00 2001 From: mahlemiut Date: Tue, 20 Sep 2016 11:54:43 +1200 Subject: [PATCH 44/55] octopus: fix mapping of graphics PROM. Now detected on boot. --- src/mame/drivers/octopus.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp index a613bb352b3..0f7c50cafb4 100644 --- a/src/mame/drivers/octopus.cpp +++ b/src/mame/drivers/octopus.cpp @@ -244,9 +244,8 @@ static ADDRESS_MAP_START( octopus_mem, AS_PROGRAM, 8, octopus_state ) 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 From 9b721d075800b0c0a5dcedf882bf420b5d7619aa Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Mon, 19 Sep 2016 22:42:55 -0400 Subject: [PATCH 45/55] dec_lk201.cpp: Add key matrix, documented the switch IDs for each key. Fixed Setup(F3)->F3 and PF1->NumLock mapping. [Lord Nightmare] --- src/mame/machine/dec_lk201.cpp | 303 +++++++++++++++++++-------------- 1 file changed, 172 insertions(+), 131 deletions(-) diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp index 94fb9533ec0..a627a2bcc33 100644 --- a/src/mame/machine/dec_lk201.cpp +++ b/src/mame/machine/dec_lk201.cpp @@ -207,11 +207,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 +266,48 @@ const tiny_rom_entry *lk201_device::device_rom_region() const INPUT_PORTS_START( lk201 ) - PORT_START("KBD0") + /* + 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 V 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 *** D10 E13 --- F14 0 / ; *** 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? +*** = No matrix switch, but registers as a key regardless (registers as RETURN or LF?) + */ + + 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 +315,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 ) // Interestingly, the mcu responds to return(?or line feed?) on this matrix location, but according to the schematic the membrane has no sensor at this location, would likely be A11 next to the unpopulated A10 key, and may be dedicated line feed. FIXME - duplicate "Return" + 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 Date: Mon, 19 Sep 2016 22:04:03 -0500 Subject: [PATCH 46/55] scn2674: make octopus look better (nw) --- src/devices/video/scn2674.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/devices/video/scn2674.cpp b/src/devices/video/scn2674.cpp index d58a04d91d2..7257f1685d4 100644 --- a/src/devices/video/scn2674.cpp +++ b/src/devices/video/scn2674.cpp @@ -483,6 +483,16 @@ void scn2674_device::write_command(UINT8 data) /* read from cursor address to pointer address */ LOG2674(("DELAYED read from cursor address to pointer address %02x\n",data)); break; + + case 0xbf: + /* write from cursor address to pointer address TODO: transfer only during blank*/ + for(i = m_cursor_l | (m_cursor_h << 8); i != (m_IR10_display_pointer_address_lower | (m_IR11_display_pointer_address_upper << 8)); i = ((i + 1) & 0xffff)) + space().write_byte(i, m_buffer); + space().write_byte(i, m_buffer); // get the last + m_cursor_l = m_IR10_display_pointer_address_lower; + m_cursor_h = m_IR11_display_pointer_address_upper; + LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data)); + break; } } From a8adc562ac2389b6515f9b612f995462c39f6098 Mon Sep 17 00:00:00 2001 From: MASHinfo Date: Tue, 20 Sep 2016 06:07:26 +0200 Subject: [PATCH 47/55] New Nibbler clone --- src/mame/drivers/snk6502.cpp | 27 +++++++++++++++++++++++++++ src/mame/mame.lst | 1 + 2 files changed, 28 insertions(+) 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/mame.lst b/src/mame/mame.lst index 617ce0955da..cbf89fb38e3 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -33552,6 +33552,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 From e96f752a2514ee374a1d444aea7ab6c2c1fa77cf Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Tue, 20 Sep 2016 01:43:23 -0400 Subject: [PATCH 48/55] typo fix (n/w) --- src/mame/machine/dec_lk201.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp index a627a2bcc33..017fbaca71a 100644 --- a/src/mame/machine/dec_lk201.cpp +++ b/src/mame/machine/dec_lk201.cpp @@ -290,7 +290,7 @@ P1-10 A99 C99 A10 --- --- --- --- C00 COMP CTRL N/C --- --- -- 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 V 7 F9 +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 From ab54470468f5f59d58bdce1248f45c3cea4ff217 Mon Sep 17 00:00:00 2001 From: dankan1890 Date: Tue, 20 Sep 2016 10:03:24 +0200 Subject: [PATCH 49/55] Hoping to have understood the request. (nw) --- src/frontend/mame/ui/selgame.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 2afcd9e1188..c2e62d2e73f 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -1367,7 +1367,9 @@ void menu_select_game::inkey_export() } } else + { list = m_displaylist; + } } menu::stack_push(ui(), container(), std::move(list)); From 7841819418718529545191d0141b513962bb2922 Mon Sep 17 00:00:00 2001 From: dankan1890 Date: Tue, 20 Sep 2016 10:48:35 +0200 Subject: [PATCH 50/55] fixed. --- src/frontend/mame/ui/selgame.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index c2e62d2e73f..efafa606e31 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -1368,7 +1368,7 @@ void menu_select_game::inkey_export() } else { - list = m_displaylist; + list = m_displaylist; } } From c56cd675f241ae1ff1451deb0c974341e9dd7322 Mon Sep 17 00:00:00 2001 From: smf- Date: Tue, 20 Sep 2016 13:28:39 +0100 Subject: [PATCH 51/55] Fixed trace command access a parameter beyond the list supplied, added an error message if you provide an invalid boolean, allow boolean to be case-insensitive and skip empty strings when parsing booleans. [smf] --- src/emu/debug/debugcmd.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index cba9368dbf4..99cdefb3b36 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -387,15 +387,18 @@ bool debugger_commands::validate_number_parameter(const char *param, UINT64 *res bool debugger_commands::validate_boolean_parameter(const char *param, bool *result) { /* nullptr parameter does nothing and returns no error */ - if (param == nullptr) + if (param == nullptr || strlen(param) == 0) return true; /* evaluate the expression; success if no error */ - bool is_true = (strcmp(param, "true") == 0 || strcmp(param, "TRUE") == 0 || strcmp(param, "1") == 0); - bool is_false = (strcmp(param, "false") == 0 || strcmp(param, "FALSE") == 0 || strcmp(param, "0") == 0); + bool is_true = (core_stricmp(param, "true") == 0 || strcmp(param, "1") == 0); + bool is_false = (core_stricmp(param, "false") == 0 || strcmp(param, "0") == 0); if (!is_true && !is_false) + { + m_console.printf("Invalid boolean '%s'\n", param); return false; + } *result = is_true; @@ -2482,7 +2485,7 @@ void debugger_commands::execute_trace_internal(int ref, int params, const char * return; if (!validate_boolean_parameter((params > 2) ? param[2] : nullptr, &detect_loops)) return; - if (!debug_command_parameter_command(action = param[3])) + if (!debug_command_parameter_command(action = (params > 3) ? param[3] : nullptr)) return; /* open the file */ From e687ac2ee1209138adcca2593ebe4197065716e1 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 20 Sep 2016 18:03:27 +0200 Subject: [PATCH 52/55] stfight.cpp: fixed regression. Sorry for this. (nw) --- src/mame/machine/stfight.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mame/machine/stfight.cpp b/src/mame/machine/stfight.cpp index 0b10d2bc43e..6e74dc39078 100644 --- a/src/mame/machine/stfight.cpp +++ b/src/mame/machine/stfight.cpp @@ -76,6 +76,7 @@ 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)); From d6a09b9f116b5a7cb20b1d4dc15869c18a8f6442 Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Tue, 20 Sep 2016 12:57:32 -0400 Subject: [PATCH 53/55] dec_lk201.cpp: Add 8051 version rom, not used yet. Corrected note about contact D13, which is completely omitted from the schematic, but definitely appears on the physical keyboard membrane, and functions. [Lord Nightmare] --- src/mame/machine/dec_lk201.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp index 017fbaca71a..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 @@ -266,17 +268,19 @@ const tiny_rom_entry *lk201_device::device_rom_region() const INPUT_PORTS_START( lk201 ) - /* - 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 - +/* +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 @@ -294,7 +298,7 @@ P2-4 --- --- G09 B07 C07 D07 E07 G08 --- --- F10 M J U 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 *** D10 E13 --- F14 0 / ; *** P BKSP(DEL) +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 @@ -304,7 +308,6 @@ P3-9 --- --- G23 A23 C23 D23 E23 G22 --- --- F20 kRTN k, k- --- = No matrix switch at all N/C = switch present, but officially unused? -*** = No matrix switch, but registers as a key regardless (registers as RETURN or LF?) */ PORT_START("KBD0") // Row P2-5 @@ -420,7 +423,7 @@ N/C = switch present, but officially unused? 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 ) // Interestingly, the mcu responds to return(?or line feed?) on this matrix location, but according to the schematic the membrane has no sensor at this location, would likely be A11 next to the unpopulated A10 key, and may be dedicated line feed. FIXME - duplicate "Return" + 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 ) From d270f8c0ec2895eb3db0ebb539cbd3ac0135bea5 Mon Sep 17 00:00:00 2001 From: yz70s Date: Tue, 20 Sep 2016 18:52:26 +0200 Subject: [PATCH 54/55] xbox.cpp/chihiro.cpp: small refactoring --- src/mame/drivers/chihiro.cpp | 59 +++++----- src/mame/machine/xbox.cpp | 209 +++++++++++++++++++---------------- 2 files changed, 143 insertions(+), 125 deletions(-) diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp index 5a96b478cb4..ac84ac32471 100644 --- a/src/mame/drivers/chihiro.cpp +++ b/src/mame/drivers/chihiro.cpp @@ -585,21 +585,23 @@ St. Instr. Comment /* jamtable disassembler */ void chihiro_state::jamtable_disasm(address_space &space, UINT32 address, UINT32 size) // 0xff000080 == fff00080 { + debugger_cpu &cpu = machine().debugger().cpu(); + debugger_console &con = machine().debugger().console(); offs_t addr = (offs_t)address; if (!space.device().memory().translate(space.spacenum(), TRANSLATE_READ_DEBUG, addr)) { - machine().debugger().console().printf("Address is unmapped.\n"); + con.printf("Address is unmapped.\n"); return; } while (1) { offs_t base = addr; - UINT32 opcode = space.read_byte(addr); + UINT32 opcode = cpu.read_byte(space, address, true); addr++; - UINT32 op1 = space.read_dword_unaligned(addr); + UINT32 op1 = cpu.read_dword(space, address, true); addr += 4; - UINT32 op2 = space.read_dword_unaligned(addr); + UINT32 op2 = cpu.read_dword(space, address, true); addr += 4; char sop1[16]; @@ -620,7 +622,7 @@ void chihiro_state::jamtable_disasm(address_space &space, UINT32 address, UINT32 sprintf(sop1, "%08X", op1); sprintf(pcrel, "%08X", base + 9 + op1); } - machine().debugger().console().printf("%08X ", base); + con.printf("%08X ", base); // dl=instr ebx=par1 eax=par2 switch (opcode) { @@ -635,39 +637,39 @@ void chihiro_state::jamtable_disasm(address_space &space, UINT32 address, UINT32 // | | Reserved | Bus Number | Device Number | Function Number | Register Number |0|0| // +-+----------+------------+---------------+-----------------+-----------------+-+-+ // 31 - Enable bit - machine().debugger().console().printf("POKEPCI PCICONF[%s]=%s\n", sop2, sop1); + con.printf("POKEPCI PCICONF[%s]=%s\n", sop2, sop1); break; case 0x02: - machine().debugger().console().printf("OUTB PORT[%s]=%s\n", sop2, sop1); + con.printf("OUTB PORT[%s]=%s\n", sop2, sop1); break; case 0x03: - machine().debugger().console().printf("POKE MEM[%s]=%s\n", sop2, sop1); + con.printf("POKE MEM[%s]=%s\n", sop2, sop1); break; case 0x04: - machine().debugger().console().printf("BNE IF ACC != %s THEN PC=%s\n", sop2, pcrel); + con.printf("BNE IF ACC != %s THEN PC=%s\n", sop2, pcrel); break; case 0x05: // out cf8,op2 // in acc,cfc - machine().debugger().console().printf("PEEKPCI ACC=PCICONF[%s]\n", sop2); + con.printf("PEEKPCI ACC=PCICONF[%s]\n", sop2); break; case 0x06: - machine().debugger().console().printf("AND/OR ACC=(ACC & %s) | %s\n", sop2, sop1); + con.printf("AND/OR ACC=(ACC & %s) | %s\n", sop2, sop1); break; case 0x07: - machine().debugger().console().printf("BRA PC=%s\n", pcrel); + con.printf("BRA PC=%s\n", pcrel); break; case 0x08: - machine().debugger().console().printf("INB ACC=PORT[%s]\n", sop2); + con.printf("INB ACC=PORT[%s]\n", sop2); break; case 0x09: - machine().debugger().console().printf("PEEK ACC=MEM[%s]\n", sop2); + con.printf("PEEK ACC=MEM[%s]\n", sop2); break; case 0xee: - machine().debugger().console().printf("END\n"); + con.printf("END\n"); break; default: - machine().debugger().console().printf("NOP ????\n"); + con.printf("NOP ????\n"); break; } if (opcode == 0xee) @@ -696,34 +698,35 @@ void chihiro_state::threadlist_command(int ref, int params, const char **param) { const UINT32 thlists = 0x8003aae0; // magic address address_space &space = m_maincpu->space(); - debugger_console con = machine().debugger().console(); + debugger_cpu &cpu = machine().debugger().cpu(); + debugger_console &con = machine().debugger().console(); con.printf("Pri. _KTHREAD Stack Function\n"); con.printf("-------------------------------\n"); for (int pri=0;pri < 16;pri++) { UINT32 curr = thlists + pri * 8; - UINT32 next = machine().debugger().cpu().read_dword(space, curr, true); + UINT32 next = cpu.read_dword(space, curr, true); while (next != curr) { UINT32 kthrd = next - 0x5c; - UINT32 topstack = machine().debugger().cpu().read_dword(space, kthrd + 0x1c, true); - UINT32 tlsdata = machine().debugger().cpu().read_dword(space, kthrd + 0x28, true); + UINT32 topstack = cpu.read_dword(space, kthrd + 0x1c, true); + UINT32 tlsdata = cpu.read_dword(space, kthrd + 0x28, true); UINT32 function; if (tlsdata == 0) - function = machine().debugger().cpu().read_dword(space, topstack - 0x210 - 8, true); + function = cpu.read_dword(space, topstack - 0x210 - 8, true); else - function = machine().debugger().cpu().read_dword(space, tlsdata - 8, true); + function = cpu.read_dword(space, tlsdata - 8, true); con.printf(" %02d %08x %08x %08x\n", pri, kthrd, topstack, function); - next = machine().debugger().cpu().read_dword(space, next, true); + next = cpu.read_dword(space, next, true); } } } void chihiro_state::chihiro_help_command(int ref, int params, const char **param) { - debugger_console con = machine().debugger().console(); + debugger_console &con = machine().debugger().console(); con.printf("Available Chihiro commands:\n"); con.printf(" chihiro jamdis,, -- Disassemble bytes of JamTable instructions starting at \n"); @@ -746,10 +749,10 @@ void chihiro_state::debug_commands(int ref, int params, const char **param) void chihiro_state::hack_eeprom() { // 8003b744,3b744=0x90 0x90 - m_maincpu->space(0).write_byte(0x3b744, 0x90); - m_maincpu->space(0).write_byte(0x3b745, 0x90); - m_maincpu->space(0).write_byte(0x3b766, 0xc9); - m_maincpu->space(0).write_byte(0x3b767, 0xc3); + m_maincpu->space(AS_PROGRAM).write_byte(0x3b744, 0x90); + m_maincpu->space(AS_PROGRAM).write_byte(0x3b745, 0x90); + m_maincpu->space(AS_PROGRAM).write_byte(0x3b766, 0xc9); + m_maincpu->space(AS_PROGRAM).write_byte(0x3b767, 0xc3); } #define HACK_ITEMS 5 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) From 276bb677551ba24a8475bc43b2c878851e53940d Mon Sep 17 00:00:00 2001 From: angelosa Date: Tue, 20 Sep 2016 20:15:11 +0200 Subject: [PATCH 55/55] Initial work towards debug command hookups for Sega Saturn [Angelo Salese] Usage: saturn inside debugger console. saturn help for a list of currently available commands. (out of whatsnew: going to create a src/mame/debug folder for these?) --- src/mame/drivers/saturn.cpp | 55 +++++++++++++++++++++++++++++++++++++ src/mame/includes/saturn.h | 9 ++++++ 2 files changed, 64 insertions(+) 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/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); + };