From e2777bf3f068e55ae1481de7104945f03e7d1567 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sun, 17 May 2020 21:59:26 +0200 Subject: [PATCH] New machines marked as NOT_WORKING ---------------------------------- Black Hole (EFG Sanremo) [f205v] --- src/mame/drivers/headonb.cpp | 92 ++++++++++++++++++++++++++++++++---- src/mame/mame.lst | 3 +- 2 files changed, 86 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/headonb.cpp b/src/mame/drivers/headonb.cpp index 445850f3405..e290f237c9d 100644 --- a/src/mame/drivers/headonb.cpp +++ b/src/mame/drivers/headonb.cpp @@ -3,8 +3,7 @@ /*************************************************************************** Italian bootleg of Head On, by EFG Sanremo (late 70s to early 80s). - The game title is unknown. Someone wrote FOOL RACE on a piece of tape - on the pcb, but that's not really credible. + The game title is Fool Race, confirmed by one of the programmers. It's on much cheaper hardware than the original: 8080 instead of Z80, and less RAM needed with the gfx tiles being on ROM. @@ -14,6 +13,7 @@ TODO: - wrong coin handling, it writes to port $01 to reset coin status? - other unknown writes - dipswitch settings + - blackhol: GFX don't seem 100% correct, missing button 1 Sounds: - Port 0,20 dot (can use invaders hit sound) @@ -46,6 +46,10 @@ public: { } void headonb(machine_config &config); + void blackhol(machine_config &config); + +protected: + virtual void video_start() override; private: required_device m_maincpu; @@ -55,15 +59,15 @@ private: tilemap_t *m_tilemap; - DECLARE_WRITE8_MEMBER(video_ram_w); - - virtual void video_start() override; + void video_ram_w(offs_t offset, u8 data); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TILE_GET_INFO_MEMBER(get_tile_info); void headonb_io_map(address_map &map); void headonb_map(address_map &map); + void blackhol_map(address_map &map); + void blackhol_io_map(address_map &map); }; @@ -97,7 +101,7 @@ uint32_t headonb_state::screen_update(screen_device &screen, bitmap_ind16 &bitma ***************************************************************************/ -WRITE8_MEMBER(headonb_state::video_ram_w) +void headonb_state::video_ram_w(offs_t offset, u8 data) { m_video_ram[offset] = data; m_tilemap->mark_tile_dirty(offset); @@ -116,6 +120,19 @@ void headonb_state::headonb_io_map(address_map &map) map(0x04, 0x04).portr("IN1"); } +void headonb_state::blackhol_map(address_map &map) +{ + headonb_map(map); + + map(0xfc00, 0xffff).ram(); +} + +void headonb_state::blackhol_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN0").nopw(); + map(0x02, 0x02).portr("IN1").nopw(); + map(0x04, 0x04).portr("IN2"); +} /*************************************************************************** @@ -145,6 +162,43 @@ static INPUT_PORTS_START( headonb ) PORT_DIPUNKNOWN( 0x80, 0x80 ) INPUT_PORTS_END +static INPUT_PORTS_START( blackhol ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN2") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x01, "2" ) + PORT_DIPSETTING( 0x02, "3" ) + PORT_DIPSETTING( 0x03, "4" ) + PORT_DIPUNKNOWN( 0x04, 0x04 ) + PORT_DIPUNKNOWN( 0x08, 0x08 ) + PORT_DIPNAME( 0x30, 0x10, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x10, "A 1C/1C B 1C/5C" ) // actually coin B increases the more coins you insert, wrong emulation? + PORT_DIPSETTING( 0x00, "A 1C/2C B 1C/10C" )// " + PORT_DIPSETTING( 0x30, "A 1C/3C B 1C/5C" ) // " + PORT_DIPSETTING( 0x20, "A 1C/6C B 1C/10C" )// " + PORT_DIPUNKNOWN( 0x40, 0x40 ) + PORT_DIPUNKNOWN( 0x80, 0x80 ) +INPUT_PORTS_END /*************************************************************************** @@ -191,6 +245,13 @@ void headonb_state::headonb(machine_config &config) // TODO } +void headonb_state::blackhol(machine_config &config) +{ + headonb(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &headonb_state::blackhol_map); + m_maincpu->set_addrmap(AS_IO, &headonb_state::blackhol_io_map); +} /*************************************************************************** @@ -198,7 +259,7 @@ void headonb_state::headonb(machine_config &config) ***************************************************************************/ -ROM_START( headonb ) +ROM_START( foolrace ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.bin", 0x0000, 0x0400, CRC(11586f44) SHA1(95426bbae19e152c103ac589e62e5f7c803a9bd0) ) // sldh ROM_LOAD( "2.bin", 0x0400, 0x0400, CRC(c3449b99) SHA1(68f0af22c9f3ca971ac7fd5909bb7991d3a0474a) ) // sldh @@ -214,5 +275,20 @@ ROM_START( headonb ) ROM_LOAD( "9.bin", 0x0400, 0x0400, CRC(2b4d3afe) SHA1(f5f49c6b1b9b44f8922825cbbc563549c8eab97b) ) ROM_END +ROM_START( blackhol ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "1.1", 0x0000, 0x0800, CRC(2a3d9d68) SHA1(5f7d9c81de706609d6e1e1ed931104d9cc0748bc) ) + ROM_LOAD( "2.2", 0x0800, 0x0800, CRC(8c680f5b) SHA1(c9f77927cfd1189594b3acd0607193dbdd85fa93) ) + ROM_LOAD( "3.3", 0x1000, 0x0800, CRC(57d9f35e) SHA1(b9aca604a3e49cf06673e3ebd48fc67ae94ac406) ) + ROM_LOAD( "4.4", 0x1800, 0x0800, CRC(0c9a1ec7) SHA1(733a2f1c72d0ff81eb479c9fb6b0247ad316315e) ) + ROM_LOAD( "5.5", 0x2000, 0x0800, CRC(b4bfe5ce) SHA1(54ad49f7bd73cd534ced194daa393d9401eb87b6) ) + ROM_LOAD( "6.6", 0x2800, 0x0800, CRC(14c185ea) SHA1(29a9606661b08fa3f3ffd598a728df7e4cda6c20) ) -GAME( 1979, headonb, headon, headonb, headonb, headonb_state, empty_init, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) + ROM_REGION( 0x1800, "gfx1", 0 ) + ROM_LOAD( "9", 0x0000, 0x0800, CRC(bc38b467) SHA1(a79196a913e1dd1e17299a7d2a32c1bfee599892) ) + ROM_LOAD( "10", 0x0800, 0x0800, CRC(3374c6b2) SHA1(0e212cb490a3c3e12f78684ac8019dfd0ecbae66) ) + ROM_LOAD( "11", 0x1000, 0x0800, CRC(354fd3d2) SHA1(1d93095ed45845e018a0f8fcfa4878b23d7c4b7a) ) +ROM_END + +GAME( 1979, foolrace, headon, headonb, headonb, headonb_state, empty_init, ROT0, "bootleg (EFG Sanremo)", "Fool Race (bootleg on dedicated hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 198?, blackhol, 0, blackhol, blackhol, headonb_state, empty_init, ROT270, "EFG Sanremo", "Black Hole (EFG Sanremo)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // no button 1, player legs are black? diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b98775dae34..c338428afe4 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15753,7 +15753,8 @@ hcastlee // GX768 (c) 1988 hcastlek // GX768 (c) 1988 @source:headonb.cpp -headonb // bootleg, headonb.cpp +blackhol +foolrace // bootleg @source:hec2hrp.cpp hec2hr //