diff options
author | 2020-09-22 19:18:53 +0200 | |
---|---|---|
committer | 2020-09-22 19:18:53 +0200 | |
commit | 2950d7e0fc8ba3a67e64a32e439e9ded3fad9335 (patch) | |
tree | d0abd19f8ba10589b20a6789eb6aa86d6487b6fa | |
parent | 4da20200d7c0a6d480462ac489027209ab0d47bd (diff) |
New machines marked as NOT_WORKING
----------------------------------
New Pro Bowl [Phil Bennett]
-rw-r--r-- | src/mame/drivers/toaplan2.cpp | 152 | ||||
-rw-r--r-- | src/mame/includes/toaplan2.h | 2 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
3 files changed, 155 insertions, 0 deletions
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index 0ebd9f3ecb5..b4a63ee497f 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -1311,6 +1311,29 @@ void toaplan2_state::bbakraid_68k_mem(address_map &map) map(0x5000c0, 0x5000cf).w(FUNC(toaplan2_state::batrider_objectbank_w)).umask16(0x00ff); } + +void toaplan2_state::nprobowl_68k_mem(address_map &map) // TODO: verify everything, implement oki banking +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x207fff).ram().share("mainram"); + map(0x208000, 0x20ffff).ram(); + map(0x400000, 0x40000d).lrw16( + NAME([this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }), + NAME([this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); })); + map(0x500000, 0x500001).portr("IN"); + map(0x500002, 0x500003).portr("UNK"); + map(0x500004, 0x500005).portr("DSW"); + //map(0x500010, 0x500011).w(); + //map(0x500012, 0x500013).w(); + map(0x500021, 0x500021).w(m_oki[0], FUNC(okim6295_device::write)); + //map(0x500040, 0x500041).w(); + //map(0x500042, 0x500043).w(); + map(0x500060, 0x500061).lr16(NAME([this] () -> u16 { return machine().rand(); })); // TODO: Hack, probably checks something in the mechanical part, verify + map(0x500080, 0x500081).w(FUNC(toaplan2_state::batrider_textdata_dma_w)); + map(0x500082, 0x500083).w(FUNC(toaplan2_state::batrider_pal_text_dma_w)); +} + + void toaplan2_state::pipibibs_sound_z80_mem(address_map &map) { map(0x0000, 0x7fff).rom(); @@ -3152,6 +3175,73 @@ static INPUT_PORTS_START( bbakraid ) INPUT_PORTS_END +static INPUT_PORTS_START( nprobowl ) + PORT_START("IN") // Player Inputs + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_SERVICE1 ) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Set (Relay)") + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Gutter L") + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Gutter R") + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Ballout") + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Ballpass") + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Mot Home") + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode + + PORT_START("DSW") // SW0323 and SW0324 + PORT_SERVICE_DIPLOC( 0x0001, IP_ACTIVE_HIGH, "SW0323:!1") + PORT_DIPUNKNOWN_DIPLOC(0x0002, 0x0000, "SW0323:!2") + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW0323:!3") + PORT_DIPSETTING( 0x0004, DEF_STR( On ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPUNKNOWN_DIPLOC(0x0008, 0x0000, "SW0323:!4") + PORT_DIPNAME( 0x0070, 0x0000, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW0323:!5,!6,!7") + PORT_DIPSETTING( 0x0070, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x0060, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0050, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0030, DEF_STR( 1C_4C ) ) + PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW0323:!8") + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC(0x0100, 0x0000, "SW0324:!1") + PORT_DIPUNKNOWN_DIPLOC(0x0200, 0x0000, "SW0324:!2") + PORT_DIPUNKNOWN_DIPLOC(0x0400, 0x0000, "SW0324:!3") + PORT_DIPUNKNOWN_DIPLOC(0x0800, 0x0000, "SW0324:!4") + PORT_DIPUNKNOWN_DIPLOC(0x1000, 0x0000, "SW0324:!5") + PORT_DIPUNKNOWN_DIPLOC(0x2000, 0x0000, "SW0324:!6") + PORT_DIPUNKNOWN_DIPLOC(0x4000, 0x0000, "SW0324:!7") + PORT_DIPUNKNOWN_DIPLOC(0x8000, 0x0000, "SW0324:!8") + + PORT_START("UNK") // ?? + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) +INPUT_PORTS_END + + // Text layer graphics -- ROM based in some games, RAM based in others // See video/gp9001.cpp for the main graphics layouts @@ -4143,6 +4233,47 @@ void toaplan2_state::bbakraid(machine_config &config) } +void toaplan2_state::nprobowl(machine_config &config) +{ + // basic machine hardware + M68000(config, m_maincpu, 32_MHz_XTAL / 2); // 32MHz Oscillator, divisor not verified + m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::nprobowl_68k_mem); + + ADDRESS_MAP_BANK(config, m_dma_space, 0); + m_dma_space->set_addrmap(0, &toaplan2_state::batrider_dma_mem); + m_dma_space->set_endianness(ENDIANNESS_BIG); + m_dma_space->set_data_width(16); + m_dma_space->set_addr_width(16); + m_dma_space->set_stride(0x8000); + + // video hardware + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); + m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240); + //m_screen->set_refresh_hz(60); + //m_screen->set_size(432, 262); + //m_screen->set_visarea(0, 319, 0, 239); + m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2)); + m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_batrider); + PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH); + + GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL); + m_vdp[0]->set_palette(m_palette); + m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_2); + + MCFG_VIDEO_START_OVERRIDE(toaplan2_state, batrider) + + // sound hardware + SPEAKER(config, "mono").front_center(); + + OKIM6295(config, m_oki[0], 32_MHz_XTAL/8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divisor not verified + // TODO: banking +} + + /*************************************************************************** Game driver(s) @@ -5684,6 +5815,24 @@ ROM_START( bbakraidja ) ROM_END +// dedicated PCB marked Pro Bowl +ROM_START( nprobowl ) + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "newprobowl-prg0-u021", 0x000000, 0x080000, CRC(3a57f122) SHA1(cc361c295f23bc0479ba49eb15de2ec6ca535a56) ) // 11xxxxxxxxxxxxxxxxx = 0xFF + ROM_LOAD16_BYTE( "newprobowl-prg1-u024", 0x000001, 0x080000, CRC(9e9bb58a) SHA1(3d2159bde418dee5d89e3df9a248b4b1989e6ee9) ) // 11xxxxxxxxxxxxxxxxx = 0xFF + + ROM_REGION( 0x200000, "gp9001_0", 0 ) + ROM_LOAD16_BYTE( "newprobowl-chr0-u0518", 0x000000, 0x80000, CRC(0736cccd) SHA1(5a4b691be1df697fef3847456c0f4bb3466c403f) ) + ROM_LOAD16_BYTE( "newprobowl-chr1-u0519", 0x000001, 0x80000, CRC(6700a9bf) SHA1(12a72aa0b91119fbbed994aec702a6869af6f287) ) + ROM_LOAD16_BYTE( "newprobowl-chr2-u0520", 0x100000, 0x80000, CRC(e5f6d0b6) SHA1(6e1a4792698be4b478118e8c82edb0cf3e2286f2) ) + ROM_LOAD16_BYTE( "newprobowl-chr3-u0521", 0x100001, 0x80000, CRC(00c21951) SHA1(922abde172fb82b504dce41b95227740f16208a7) ) + + ROM_REGION( 0x100000, "oki1", 0 ) + ROM_LOAD( "newprobowl-adpcm0-u0834", 0x00000, 0x80000, CRC(3b40b161) SHA1(ff8ba38dd7e0dadbf72810470e3d9afb1cd983d2) ) + ROM_LOAD( "newprobowl-adpcm1-u0835", 0x80000, 0x80000, CRC(8c191e60) SHA1(f81c2849ffc553d921fc680cd50c2997b834c44a) ) +ROM_END + + // The following is in order of Toaplan Board/game numbers // See list at top of file @@ -5787,3 +5936,6 @@ GAME( 1999, bbakraidc, bbakraid, bbakraid, bbakraid, toaplan2_state, init_ GAME( 1999, bbakraidj, bbakraid, bbakraid, bbakraid, toaplan2_state, init_bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", MACHINE_SUPPORTS_SAVE ) // older revision of the code GAME( 1999, bbakraidja, bbakraid, bbakraid, bbakraid, toaplan2_state, init_bbakraid, ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)", MACHINE_SUPPORTS_SAVE ) + +// dedicated PCB +GAME( 1996, nprobowl, 0, nprobowl, nprobowl, toaplan2_state, empty_init, ROT0, "Zuck / Able Corp", "New Pro Bowl", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) // bad GFXs, no sound banking, controls, etc diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h index 3deeaebdc0a..00e4ef4f1fe 100644 --- a/src/mame/includes/toaplan2.h +++ b/src/mame/includes/toaplan2.h @@ -75,6 +75,7 @@ public: void truxton2(machine_config &config); void vfive(machine_config &config); void kbash2(machine_config &config); + void nprobowl(machine_config &config); void init_bbakraid(); void init_pipibibsbl(); @@ -229,6 +230,7 @@ private: void kbash_68k_mem(address_map &map); void kbash_v25_mem(address_map &map); void mahoudai_68k_mem(address_map &map); + void nprobowl_68k_mem(address_map &map); void othldrby_68k_mem(address_map &map); void pipibibi_bootleg_68k_mem(address_map &map); void pipibibs_68k_mem(address_map &map); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9bbf0026d1c..566b6beb7f8 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -40400,6 +40400,7 @@ kbash2 // bootleg kbashk // TP-023 (c) 1993 Toaplan kingdmgp // (c) 1994 Raizing/8ing mahoudai // (c) 1993 Raizing + Able license +nprobowl // (c) 1996 Zuck + Able license othldrby // (c) 1995 Sunwise pipibibs // TP-025 pipibibsa // TP-025 |