From c429c5456661500e931d7cac36a3eb88600d291d Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Sun, 2 Jun 2019 03:03:58 +0200 Subject: new WORKING machine =================== Bikkuri Pro Wrestling [Angelo Salese] --- src/mame/drivers/nbmj8688.cpp | 74 +++++++++++++++++++++++++++++++++++-------- src/mame/drivers/nbmj8891.cpp | 2 +- src/mame/machine/nb1413m3.cpp | 21 ++++++++++++ src/mame/machine/nb1413m3.h | 1 + 4 files changed, 84 insertions(+), 14 deletions(-) diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp index 4c2bf3bd373..166798081af 100644 --- a/src/mame/drivers/nbmj8688.cpp +++ b/src/mame/drivers/nbmj8688.cpp @@ -180,9 +180,10 @@ void nbmj8688_state::bikkuri_io_map(address_map &map) map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); map(0x90, 0x97).w(FUNC(nbmj8688_state::blitter_w)); map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); - map(0xb0, 0xb0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r)).w(FUNC(nbmj8688_state::barline_output_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_alt_w)); map(0xc0, 0xcf).w(FUNC(nbmj8688_state::clut_w)); map(0xd0, 0xd0).r(FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::data_w)); map(0xe0, 0xe0).w(FUNC(nbmj8688_state::secolove_romsel_w)); } @@ -2463,7 +2464,7 @@ static INPUT_PORTS_START( nightlov ) PORT_INCLUDE( nbmjcontrols ) INPUT_PORTS_END -static INPUT_PORTS_START( bikkuri ) // TODO: should be looked at by someone who understands Japanese and / or the gameplay +static INPUT_PORTS_START( bikkuri ) PORT_START("DSWA") PORT_DIPNAME( 0x07, 0x07, "Game Out Rate" ) PORT_DIPLOCATION("DSWA:1,2,3") PORT_DIPSETTING( 0x07, "95%" ) @@ -2474,6 +2475,7 @@ static INPUT_PORTS_START( bikkuri ) // TODO: should be looked at by someone who PORT_DIPSETTING( 0x02, "70%" ) PORT_DIPSETTING( 0x01, "65%" ) PORT_DIPSETTING( 0x00, "60%" ) + // coinage PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSWA:4") PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "DSWA:5") PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "DSWA:6") @@ -2482,7 +2484,7 @@ static INPUT_PORTS_START( bikkuri ) // TODO: should be looked at by someone who PORT_START("DSWB") PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "DSWB:1") - PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "DSWB:2") // switch test? + PORT_SERVICE_DIPLOC( 0x02, IP_ACTIVE_LOW, "DSWB:2" ) PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "DSWB:3") PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSWB:4") PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "DSWB:5") @@ -2495,14 +2497,60 @@ static INPUT_PORTS_START( bikkuri ) // TODO: should be looked at by someone who PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) - PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Medal In") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Mode SW") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("100 Yen In") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Solenoid SW") PORT_CODE(KEYCODE_4) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("10 Yen In") - PORT_INCLUDE( nbmjcontrols ) + PORT_START("KEY0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Drop Kick") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Neck Hang") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Lariat") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Medal Out") PORT_CODE(KEYCODE_G) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("P1 Bet") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY1") + PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x3e, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x3c, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY4") + PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY5") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY6") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY7") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY8") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY9") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END READ8_MEMBER(nbmj8688_state::dipsw1_r) @@ -2856,13 +2904,13 @@ void nbmj8688_state::ojousanm(machine_config &config) void nbmj8688_state::bikkuri(machine_config &config) { - NBMJDRV_4096(config); + NBMJDRV_256(config); /* basic machine hardware */ m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::bikkuri_map); m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::bikkuri_io_map); - // m_nb1413m3->set_type(NB1413M3_OJOUSANM); // what's the correct type here? + // m_nb1413m3->set_type(NB1413M3_TAIWANMB); // what's the correct type here? } void nbmj8688_state::swinggal(machine_config &config) @@ -3913,6 +3961,7 @@ GAME( 1986, crystalg, 0, crystalg, crystalg, nbmj8688_state, empty GAME( 1986, crystal2, 0, crystal2, crystal2, nbmj8688_state, empty_init, ROT0, "Nichibutsu", "Crystal Gal 2 (Japan 860620)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, nightlov, 0, nightlov, nightlov, nbmj8688_state, empty_init, ROT0, "Central Denshi", "Night Love (Japan 860705)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1986, apparel, 0, apparel, apparel, nbmj8688_state, empty_init, ROT0, "Central Denshi", "Apparel Night (Japan 860929)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bikkuri, 0, bikkuri, bikkuri, nbmj8688_state, empty_init, ROT0, "Nichibutsu", "Bikkuri Pro Wrestling (Japan 881221, Ver 1.05)", MACHINE_SUPPORTS_SAVE ) /* hybrid 12-bit palette */ GAME( 1986, citylove, 0, citylove, citylove, nbmj8688_state, empty_init, ROT0, "Nichibutsu", "City Love (Japan 860908)", MACHINE_SUPPORTS_SAVE ) @@ -3932,7 +3981,6 @@ GAME( 1987, ojousanm, ojousan, ojousanm, ojousanm, nbmj8688_state, empty GAME( 1987, swinggal, 0, swinggal, ryuuha, nbmj8688_state, empty_init, ROT0, "Digital Denshi", "Swing Gal [BET] (Japan 871221)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, korinai, 0, korinai, korinai, nbmj8688_state, empty_init, ROT0, "Nichibutsu", "Mahjong-zukino Korinai Menmen (Japan 880425)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, korinaim, korinai, korinaim, korinaim, nbmj8688_state, empty_init, ROT0, "Nichibutsu", "Mahjong-zukino Korinai Menmen [BET] (Japan 880920)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bikkuri, 0, bikkuri, bikkuri, nbmj8688_state, empty_init, ROT0, "Nichibutsu", "Bikkuri Pro Wrestling (Japan 881221, Ver 1.05)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // nb1413m3 type /emulation, inputs need to be looked at by someone who understands gameplay / Japanese /* pure 16-bit palette (+ LCD in some) */ GAME( 1987, housemnq, 0, housemnq, housemnq, nbmj8688_state, empty_init, ROT0, "Nichibutsu", "House Mannequin (Japan 870217)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp index 760357e048e..324b0ba9c2c 100644 --- a/src/mame/drivers/nbmj8891.cpp +++ b/src/mame/drivers/nbmj8891.cpp @@ -3424,7 +3424,7 @@ ROM_START( taiwanmb ) ROM_LOAD( "13.10p", 0x090000, 0x10000, CRC(6542e7da) SHA1(be6db10178f532ac273599808c52126037ac78a0) ) ROM_REGION( 0x00800, "protection", 0 ) /* protection (Intel D87??; mcu data that is extracted from the real board!) */ - ROM_LOAD( "clut_ram.8f", 0x000000, 0x00800, CRC(bd80fa09) SHA1(896421e1e01beef0de6acebbbc255224e4e0438b) ) + ROM_LOAD( "clut_ram.8f", 0x000000, 0x00800, BAD_DUMP CRC(bd80fa09) SHA1(896421e1e01beef0de6acebbbc255224e4e0438b) ) ROM_END /* diff --git a/src/mame/machine/nb1413m3.cpp b/src/mame/machine/nb1413m3.cpp index 2145a56b72e..4184fd3950e 100644 --- a/src/mame/machine/nb1413m3.cpp +++ b/src/mame/machine/nb1413m3.cpp @@ -309,6 +309,27 @@ WRITE8_MEMBER( nb1413m3_device::sndrombank1_w ) m_sndrombank1 = (((data & 0xc0) >> 5) | ((data & 0x10) >> 4)); } +// bikkuri, to be exposed in driver +WRITE8_MEMBER( nb1413m3_device::sndrombank1_alt_w ) +{ + machine().bookkeeping().coin_counter_w(0, data & 0x02); + machine().bookkeeping().coin_counter_w(1, data & 0x01); + //outcoin_w(space, 0, data); // (data & 0x04) >> 2; + m_outcoin_enable = (data & 0x04) >> 2; + + if (m_outcoin_enable) + { + if (m_counter++ == 2) + { + m_outcoin_flag ^= 1; + m_counter = 0; + } + } + + m_nmi_enable = ((data & 0x80) >> 7); + //m_sndrombank1 = (((data & 0xc0) >> 5) | ((data & 0x10) >> 4)); +} + WRITE8_MEMBER( nb1413m3_device::sndrombank2_w ) { m_sndrombank2 = (data & 0x03); diff --git a/src/mame/machine/nb1413m3.h b/src/mame/machine/nb1413m3.h index f730f87341b..96e67e7d8cc 100644 --- a/src/mame/machine/nb1413m3.h +++ b/src/mame/machine/nb1413m3.h @@ -147,6 +147,7 @@ public: DECLARE_WRITE8_MEMBER( nmi_clock_w ); DECLARE_READ8_MEMBER( sndrom_r ); DECLARE_WRITE8_MEMBER( sndrombank1_w ); + DECLARE_WRITE8_MEMBER( sndrombank1_alt_w ); DECLARE_WRITE8_MEMBER( sndrombank2_w ); DECLARE_READ8_MEMBER( gfxrom_r ); DECLARE_WRITE8_MEMBER( gfxrombank_w ); -- cgit v1.2.3