From a2f54c32e8f16008bcb6ae1ce3b4037aa5395ed2 Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 6 Oct 2018 18:57:01 +0200 Subject: New machines marked as NOT_WORKING ---------------------------------- Super Derby (satellite board) [Chris Buehler] --- src/mame/drivers/sderby.cpp | 4 +-- src/mame/drivers/sg1000a.cpp | 68 ++++++++++++++++++++++++++++---------------- src/mame/mame.lst | 1 + 3 files changed, 46 insertions(+), 27 deletions(-) diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp index 05050f26ffb..1c28ae4a10f 100644 --- a/src/mame/drivers/sderby.cpp +++ b/src/mame/drivers/sderby.cpp @@ -1042,8 +1042,8 @@ ROM_END ******************************/ // YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT -GAMEL( 1996, sderby, 0, sderby, sderby, sderby_state, empty_init, ROT0, "Playmark", "Super Derby (v.07.03)", 0, layout_sderby ) -GAMEL( 1996, sderbya, sderby, sderbya, sderbya, sderby_state, empty_init, ROT0, "Playmark", "Super Derby (v.10.04)", 0, layout_sderby ) +GAMEL( 1996, sderby, 0, sderby, sderby, sderby_state, empty_init, ROT0, "Playmark", "Super Derby (Playmark, v.07.03)", 0, layout_sderby ) +GAMEL( 1996, sderbya, sderby, sderbya, sderbya, sderby_state, empty_init, ROT0, "Playmark", "Super Derby (Playmark, v.10.04)", 0, layout_sderby ) GAMEL( 1996, spacewin, 0, spacewin, spacewin, sderby_state, empty_init, ROT0, "Playmark", "Scacco Matto / Space Win", 0, layout_spacewin ) GAME( 1996, shinygld, 0, shinygld, shinygld, sderby_state, empty_init, ROT0, "Playmark", "Shiny Golds", 0 ) GAMEL( 1997, croupier, 0, pmroulet, pmroulet, sderby_state, empty_init, ROT0, "Playmark", "Croupier (Playmark Roulette v.20.05)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_pmroulet ) diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp index 58bac477532..b85ddcef14f 100644 --- a/src/mame/drivers/sg1000a.cpp +++ b/src/mame/drivers/sg1000a.cpp @@ -286,11 +286,11 @@ public: m_maincpu(*this, "maincpu"), m_decrypted_opcodes(*this, "decrypted_opcodes") { } - void sderby2s(machine_config &config); + void sderbys(machine_config &config); void sg1000ax(machine_config &config); void sg1000a(machine_config &config); - void init_sg1000a(); + void init_sderby(); private: DECLARE_WRITE8_MEMBER(sg1000a_coin_counter_w); @@ -299,7 +299,7 @@ private: void decrypted_opcodes_map(address_map &map); void io_map(address_map &map); void program_map(address_map &map); - void sderby2_io_map(address_map &map); + void sderby_io_map(address_map &map); }; @@ -330,14 +330,14 @@ void sg1000a_state::io_map(address_map &map) map(0xdc, 0xdf).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); } -void sg1000a_state::sderby2_io_map(address_map &map) +void sg1000a_state::sderby_io_map(address_map &map) { map.global_mask(0xff); - map(0x7f, 0x7f).w("snsnd", FUNC(sn76489a_device::command_w)); - map(0xbe, 0xbe).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w)); - map(0xbf, 0xbf).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w)); - // AM_RANGE(0xc0, 0xc1) NEC D8251AC UART - map(0xc8, 0xcb).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // NEC D8255AC-2 + map(0x40, 0x40).mirror(0x3f).w("snsnd", FUNC(sn76489a_device::command_w)); + map(0x80, 0x80).mirror(0x3e).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w)); + map(0x81, 0x81).mirror(0x3e).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w)); +// map(0xc0, 0xc1).mirror(0x06) NEC D8251AC UART + map(0xc8, 0xcb).mirror(0x04).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // NEC D8255AC-2 } /************************************* @@ -426,7 +426,7 @@ static INPUT_PORTS_START( dokidoki ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static INPUT_PORTS_START( sderby2s ) +static INPUT_PORTS_START( sderbys ) PORT_INCLUDE( sg1000 ) PORT_MODIFY("DSW") @@ -503,11 +503,11 @@ MACHINE_CONFIG_START(sg1000a_state::sg1000ax) MCFG_SEGACRPT_SET_DECRYPTED_TAG(":decrypted_opcodes") MACHINE_CONFIG_END -MACHINE_CONFIG_START(sg1000a_state::sderby2s) +MACHINE_CONFIG_START(sg1000a_state::sderbys) sg1000a(config); MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(XTAL(10'738'635) / 3) - MCFG_DEVICE_IO_MAP(sderby2_io_map) + MCFG_DEVICE_IO_MAP(sderby_io_map) // Actually uses a Sega 315-5066 chip, which is a TMS9918 and SN76489 in the same package but with RGB output MACHINE_CONFIG_END @@ -520,9 +520,9 @@ MACHINE_CONFIG_END ROM_START( chwrestl ) ROM_REGION( 2*0x10000, "maincpu", 0 ) - ROM_LOAD( "5732", 0x0000, 0x4000, CRC(a4e44370) SHA1(a9dbf60e77327dd2bec6816f3142b42ad9ca4d09) ) /* encrypted */ - ROM_LOAD( "5733", 0x4000, 0x4000, CRC(4f493538) SHA1(467862fe9337497e3cdebb29bf28f6cfe3066ccd) ) /* encrypted */ - ROM_LOAD( "5734", 0x8000, 0x4000, CRC(d99b6301) SHA1(5e762ed45cde08d5223828c6b1d3569b2240462c) ) + ROM_LOAD( "5732", 0x0000, 0x4000, CRC(a4e44370) SHA1(a9dbf60e77327dd2bec6816f3142b42ad9ca4d09) ) /* encrypted */ + ROM_LOAD( "5733", 0x4000, 0x4000, CRC(4f493538) SHA1(467862fe9337497e3cdebb29bf28f6cfe3066ccd) ) /* encrypted */ + ROM_LOAD( "5734", 0x8000, 0x4000, CRC(d99b6301) SHA1(5e762ed45cde08d5223828c6b1d3569b2240462c) ) ROM_END ROM_START( chboxing ) @@ -534,25 +534,39 @@ ROM_END ROM_START( dokidoki ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "epr-7356.ic1", 0x0000, 0x4000, CRC(95658c31) SHA1(f7b5638ab1b8b244b189317d954eb37b51923791) ) - ROM_LOAD( "epr-7357.ic2", 0x4000, 0x4000, CRC(e8dbad85) SHA1(9f13dafacee370d6e4720d8e27cf889053e79eb3) ) - ROM_LOAD( "epr-7358.ic3", 0x8000, 0x4000, CRC(c6f26b0b) SHA1(3753e05b6e77159832dbe88562ba7a818120d1a3) ) + ROM_LOAD( "epr-7356.ic1", 0x0000, 0x4000, CRC(95658c31) SHA1(f7b5638ab1b8b244b189317d954eb37b51923791) ) + ROM_LOAD( "epr-7357.ic2", 0x4000, 0x4000, CRC(e8dbad85) SHA1(9f13dafacee370d6e4720d8e27cf889053e79eb3) ) + ROM_LOAD( "epr-7358.ic3", 0x8000, 0x4000, CRC(c6f26b0b) SHA1(3753e05b6e77159832dbe88562ba7a818120d1a3) ) +ROM_END + +ROM_START( sderbys ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "v1.2.ic10", 0x0000, 0x4000, CRC(cf29b579) SHA1(e695da9c61167d1d30b32bd70d342ac23b29f087) ) ROM_END ROM_START( sderby2s ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "epr-6450d.ic10", 0x0000, 0x4000, CRC(e56986d3) SHA1(a2dbdc95128cc94a1492e080aeea402f2d4b89fe) ) - ROM_LOAD( "epr-6504d.ic11", 0x4000, 0x4000, CRC(7bb364b9) SHA1(9f93572b6d999422d93ad5f7a251b4695565651f) ) + ROM_LOAD( "epr-6450d.ic10", 0x0000, 0x4000, CRC(e56986d3) SHA1(a2dbdc95128cc94a1492e080aeea402f2d4b89fe) ) + ROM_LOAD( "epr-6504d.ic11", 0x4000, 0x4000, CRC(7bb364b9) SHA1(9f93572b6d999422d93ad5f7a251b4695565651f) ) ROM_END + /************************************* * * Driver initialization * *************************************/ -void sg1000a_state::init_sg1000a() +void sg1000a_state::init_sderby() { + // mini daughterboard in ic10 socket, with TI 27C128 rom and unknown ic(label scraped off) + u8 *rom = machine().root_device().memregion("maincpu")->base(); + const u32 len = memregion("maincpu")->bytes(); + + for (int i = 0; i < len; i++) + rom[i] = bitswap<8>(rom[i],3,7,4,6,5,2,1,0); + + // TODO: decryption is unfinished } @@ -563,7 +577,11 @@ void sg1000a_state::init_sg1000a() * *************************************/ -GAME( 1984, chboxing, 0, sg1000a, chboxing, sg1000a_state, init_sg1000a, ROT0, "Sega", "Champion Boxing", 0 ) -GAME( 1985, chwrestl, 0, sg1000ax, chwrestl, sg1000a_state, init_sg1000a, ROT0, "Sega", "Champion Pro Wrestling", 0 ) -GAME( 1985, dokidoki, 0, sg1000a, dokidoki, sg1000a_state, init_sg1000a, ROT0, "Sega", "Doki Doki Penguin Land", 0 ) -GAME( 1985, sderby2s, 0, sderby2s, sderby2s, sg1000a_state, init_sg1000a, ROT0, "Sega", "Super Derby II (Satellite board)", MACHINE_NOT_WORKING ) // inputs aren't hooked up, probably needs to be connected to the main board anyway +GAME( 1984, chboxing, 0, sg1000a, chboxing, sg1000a_state, empty_init, ROT0, "Sega", "Champion Boxing", 0 ) +GAME( 1985, chwrestl, 0, sg1000ax, chwrestl, sg1000a_state, empty_init, ROT0, "Sega", "Champion Pro Wrestling", 0 ) +GAME( 1985, dokidoki, 0, sg1000a, dokidoki, sg1000a_state, empty_init, ROT0, "Sega", "Doki Doki Penguin Land", 0 ) + +// inputs aren't hooked up, probably needs to be connected to the main board anyway +// TODO: move these guys over to sderby2.cpp +GAME( 1984, sderbys, 0, sderbys, sderbys, sg1000a_state, init_sderby, ROT0, "Sega", "Super Derby (satellite board)", MACHINE_NOT_WORKING ) +GAME( 1985, sderby2s, 0, sderbys, sderbys, sg1000a_state, empty_init, ROT0, "Sega", "Super Derby II (satellite board)", MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d53066cacc4..874a2c660ec 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34943,6 +34943,7 @@ sg1000m2 // Sega SG-1000 Mark II (Japan) chboxing // (c) 1984 chwrestl // (c) 1985 dokidoki // (c) 1985 +sderbys // (c) 1984 sderby2s // (c) 1985 @source:sh4robot.cpp -- cgit v1.2.3