From fbfe732ddfdc33c43e378337450779ce5cf9446b Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 14 Jan 2021 18:43:31 +0100 Subject: New clones marked as NOT_WORKING -------------------------------- New Draw 8 Lines (Version 2.1) [Ioannis Bampoulas] --- src/mame/drivers/goldstar.cpp | 162 ++++++++++++++++++++++++++++++++++++++++++ src/mame/includes/goldstar.h | 4 ++ src/mame/mame.lst | 1 + 3 files changed, 167 insertions(+) diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index fda8cf356b3..878ea297217 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -989,6 +989,29 @@ void goldstar_state::lucky8_map(address_map &map) map(0xf800, 0xffff).ram(); } +void wingco_state::nd8lines_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("nvram"); + map(0x8800, 0x8fff).ram().w(FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0x9000, 0x97ff).ram().w(FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram"); + map(0x9800, 0x99ff).ram().w(FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xa000, 0xa1ff).ram().w(FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xa800, 0xa9ff).ram().w(FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xb040, 0xb07f).ram().share("reel1_scroll"); + map(0xb080, 0xb0bf).ram().share("reel2_scroll"); + map(0xb100, 0xb17f).ram().share("reel3_scroll"); + map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb820, 0xb820).w(FUNC(wingco_state::system_outputc_w)); + map(0xb830, 0xb830).portr("DSW1"); + map(0xb840, 0xb840).portr("DSW3"); + map(0xb850, 0xb850).w(FUNC(goldstar_state::p1_lamps_w)); + map(0xb860, 0xb860).w(FUNC(goldstar_state::p2_lamps_w)); + map(0xb870, 0xb870).w("snsnd", FUNC(sn76489a_device::write)); // seems to write with swapped nibbles if compared to lucky8 + map(0xf800, 0xffff).ram(); +} + void goldstar_state::common_decrypted_opcodes_map(address_map &map) { map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); @@ -3663,6 +3686,90 @@ static INPUT_PORTS_START( ns8linew ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( nd8lines ) // TODO: need to be done once palette is figured out and effects can be verified + PORT_START("IN0") // b800 + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Odds table") // Only works with coins inserted + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) + 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("IN1") // b801 + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + 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") // b802 + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + 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("IN3") // b810 + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings / Test Mode") PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_IMPULSE(2) // should be coins, PORT_IMPULSE needed or the game laments 'coin jam' + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_IMPULSE(2) // should be coins, PORT_IMPULSE needed or the game laments 'coin jam' + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_IMPULSE(2) // should be coins, PORT_IMPULSE needed or the game laments 'coin jam' + + PORT_START("DSW1") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "DSW1:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "DSW1:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "DSW1:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSW1:4") + PORT_DIPNAME( 0x10, 0x10, "Double Up Game Pay Rate" ) PORT_DIPLOCATION("DSW1:5") // ok + PORT_DIPSETTING( 0x10, "80%" ) + PORT_DIPSETTING( 0x00, "90%" ) + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "DSW1:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "DSW1:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "DSW1:8") + + PORT_START("DSW2") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "DSW2:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "DSW2:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "DSW2:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSW2:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "DSW2:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "DSW2:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "DSW2:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "DSW2:8") + + PORT_START("DSW3") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "DSW3:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "DSW3:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "DSW3:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSW3:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "DSW3:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "DSW3:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "DSW3:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "DSW3:8") + + PORT_START("DSW4") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "DSW4:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "DSW4:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "DSW4:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSW4:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "DSW4:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "DSW4:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "DSW4:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "DSW4:8") +INPUT_PORTS_END + static INPUT_PORTS_START( ns8linwa ) PORT_START("IN0") /* b800 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -9052,6 +9159,23 @@ void wingco_state::lucky8(machine_config &config) aysnd.add_route(ALL_OUTPUTS, "mono", 0.50); } +void wingco_state::nd8lines(machine_config &config) +{ + lucky8(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::nd8lines_map); + + m_ppi[1]->in_pb_callback().set_ioport("DSW2"); + m_ppi[1]->in_pc_callback().set_ioport("DSW4"); + + PALETTE(config.replace(), "palette", FUNC(wingco_state::cm_palette), 256); // wrong + + SN76489A(config.replace(), "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80); + + config.device_remove("ppi8255_2"); + config.device_remove("aysnd"); +} + void wingco_state::lucky8f(machine_config &config) { lucky8(config); @@ -12440,6 +12564,28 @@ ROM_START( lucky8l ) ROM_LOAD( "w4.d12", 0x0000, 0x0117, CRC(41b55fb0) SHA1(f31a31dc2c0789d08957785e8c8f804690133450) ) // GAL16V8D ROM_END + +// TMPZ84C00AP-6 main CPU, 2 x D71055C, 1 x SN76489AN, 4 x 8-dip banks +ROM_START( nd8lines ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "dw8-055-8.u58", 0x0000, 0x8000, CRC(3d5d3882) SHA1(a7bc24d1e78ae2f74caba95935d3751c4d7fdf55) ) // encrypted, 27c256 + + ROM_REGION( 0x18000, "gfx1", 0 ) // all 27c256 + ROM_LOAD( "dw8-055-5.u28", 0x00000, 0x8000, CRC(6a77f98c) SHA1(abc7f7e4f30e9a5d95682aa9d6a64d347ae883c4) ) + ROM_LOAD( "dw8-055-6.u27", 0x08000, 0x8000, CRC(78c5f704) SHA1(59c67cd1220e90eff867e25143d9d1f95de2ff0c) ) + ROM_LOAD( "dw8-055-7.u26", 0x10000, 0x8000, CRC(3ec8b05b) SHA1(418e6c563f2e3537fd58631d30b8863c6838a2e4) ) + + ROM_REGION( 0x8000, "gfx2", 0 ) // all 27c64 + ROM_LOAD( "dw8-055-4.u37", 0x0000, 0x2000, CRC(29d6f197) SHA1(1542ca457594f6b7fe8f28f7d78023edd7021bc8) ) + ROM_LOAD( "dw8-055-3.u36", 0x2000, 0x2000, CRC(5f812e65) SHA1(70d9ea82f9337936bf21f82b6961768d436f3a6f) ) + ROM_LOAD( "dw8-055-2.u35", 0x4000, 0x2000, CRC(898b9ed5) SHA1(11b7d1cfcf425d00d086c74e0dbcb72068dda9fe) ) + ROM_LOAD( "dw8-055-1.u34", 0x6000, 0x2000, CRC(4f7cfb35) SHA1(0617cf4419be00d9bacc78724089cb8af4104d68) ) + + ROM_REGION( 0x100, "proms", 0 ) + ROM_LOAD( "he82s129.u33", 0x0000, 0x0100, CRC(3d2f1893) SHA1(927916856b25dfd6ded04c26714313bc49f7e220) ) + // at u66 there's a currently unidentified MET47S01 chip, which could possibly be a PROM +ROM_END + /* New Lucky 8 Lines / New Super 8 Lines. @@ -18579,6 +18725,21 @@ void wingco_state::init_lucky8l() } } +void wingco_state::init_nd8lines() +{ + uint8_t *rom = memregion("maincpu")->base(); + + for (int i = 0x0000; i < 0x2000; i++) + rom[i] = bitswap<8>(rom[i] ^ 0xa3, 6, 1, 3, 5, 7, 0, 2, 4); + + for (int i = 0x2000; i < 0x4000; i++) + rom[i] = bitswap<8>(rom[i] ^ 0xd0, 0, 4, 3, 1, 7, 5, 2, 6); + + for (int i = 0x4000; i < 0x8000; i++) + rom[i] = bitswap<8>(rom[i] ^ 0x6c, 6, 0, 4, 3, 1, 2, 5, 7); +} + + void wingco_state::init_super972() { uint8_t *rom = memregion("maincpu")->base(); @@ -19383,6 +19544,7 @@ GAMEL( 198?, ns8lines, 0, lucky8, lucky8b, wingco_state, empty_init GAMEL( 1985, ns8linesa, ns8lines, lucky8, lucky8b, wingco_state, empty_init, ROT0, "Yamate (bootleg)", "New Lucky 8 Lines / New Super 8 Lines (W-4, Lucky97 HW)", 0, layout_lucky8p1 ) // only 1 control set... GAMEL( 198?, ns8linew, ns8lines, lucky8, ns8linew, wingco_state, empty_init, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus)", 0, layout_lucky8 ) // 2 control sets... GAMEL( 198?, ns8linewa, ns8lines, lucky8, ns8linwa, wingco_state, empty_init, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (W-4, Witch Bonus)", 0, layout_lucky8p1 ) // only 1 control set... +GAMEL( 1991, nd8lines, lucky8, nd8lines, nd8lines, wingco_state, init_nd8lines, ROT0, "Yamate (bootleg)", "New Draw 8 Lines (Version 2.1)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND, layout_lucky8 ) // PROM decode wrong, SN emits terrible sound, inputs not done yet GAMEL( 198?, super972, ns8lines, super972, ns8linwa, wingco_state, init_super972, ROT0, "", "Super 97-2 (Witch Bonus)", MACHINE_NOT_WORKING, layout_lucky8p1 ) // decrypted, needs correct inputs GAME( 198?, luckybar, 0, lucky8, ns8linew, wingco_state, empty_init, ROT0, "", "Lucky Bar (W-4 with mc68705 MCU)", MACHINE_NOT_WORKING ) // MC68705 MCU GAMEL( 198?, kkotnoli, 0, kkotnoli, kkotnoli, goldstar_state, empty_init, ROT0, "hack", "Kkot No Li (Kill the Bees)", MACHINE_IMPERFECT_COLORS, layout_lucky8 ) diff --git a/src/mame/includes/goldstar.h b/src/mame/includes/goldstar.h index 33e8ac6a3a8..ab2915965fd 100644 --- a/src/mame/includes/goldstar.h +++ b/src/mame/includes/goldstar.h @@ -238,6 +238,7 @@ public: void init_flaming7(); void init_flam7_tw(); void init_luckylad(); + void init_nd8lines(); void init_super972(); void init_wcat3(); @@ -256,6 +257,7 @@ public: void lucky8f(machine_config &config); void lucky8k(machine_config &config); void luckylad(machine_config &config); + void nd8lines(machine_config &config); void super972(machine_config &config); void wcat3(machine_config &config); void magodds(machine_config &config); @@ -275,6 +277,8 @@ private: uint8_t m_vidreg; int m_tile_bank; + + void nd8lines_map(address_map &map); }; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 5e65760aec5..d135260aed1 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15432,6 +15432,7 @@ nfb96txt // (c) 2000 Amcoe nfm // bootleg nfma // bootleg noved // bootleg +nd8lines // bootleg ns8lines // unknown ns8linew // unknown ns8linewa // unknown -- cgit v1.2.3