summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2020-09-22 19:18:53 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2020-09-22 19:18:53 +0200
commit2950d7e0fc8ba3a67e64a32e439e9ded3fad9335 (patch)
treed0abd19f8ba10589b20a6789eb6aa86d6487b6fa /src
parent4da20200d7c0a6d480462ac489027209ab0d47bd (diff)
New machines marked as NOT_WORKING
---------------------------------- New Pro Bowl [Phil Bennett]
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/toaplan2.cpp152
-rw-r--r--src/mame/includes/toaplan2.h2
-rw-r--r--src/mame/mame.lst1
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