summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/royalmah.cpp2
-rw-r--r--src/mame/drivers/toaplan2.cpp84
-rw-r--r--src/mame/includes/toaplan2.h3
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mame/video/toaplan2.cpp19
5 files changed, 106 insertions, 3 deletions
diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp
index c72d0b1ac19..7a16f84948a 100644
--- a/src/mame/drivers/royalmah.cpp
+++ b/src/mame/drivers/royalmah.cpp
@@ -768,7 +768,7 @@ void royalmah_state::pongboo2_map(address_map &map)
{
map(0x0000, 0x6fff).rom().region("maincpu", 0);
map(0x7000, 0x7fff).ram().share("nvram");
- map(0x8000, 0xffff).rom().region("maincpu", 0x8000); // TODO: should be banked, as changing the offset to the other ROMs shows other graphics
+ map(0x8000, 0xffff).rom().region("maincpu", 0x8000); // TODO: should be banked, as changing the offset shows other graphics
map(0x8000, 0xffff).writeonly().share(m_videoram);
}
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp
index dea7960a82b..1f889074732 100644
--- a/src/mame/drivers/toaplan2.cpp
+++ b/src/mame/drivers/toaplan2.cpp
@@ -1066,6 +1066,26 @@ void toaplan2_state::batsugun_68k_mem(address_map &map)
map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
}
+void toaplan2_state::batsugunbl_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ // map(0x200004, 0x200005).r() // only cleared at boot?
+ map(0x200005, 0x200005).w(FUNC(toaplan2_state::fixeightbl_oki_bankswitch_w)); // TODO: doesn't sound correct
+ map(0x200009, 0x200009).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x200010, 0x200011).portr("IN1");
+ map(0x200014, 0x200015).portr("IN2");
+ map(0x200018, 0x200019).portr("SYS");
+ map(0x21f004, 0x21f005).portr("DSWA");
+ map(0x21f006, 0x21f007).portr("DSWB");
+ map(0x21f008, 0x21f009).portr("JMPR");
+ map(0x20001c, 0x20001d).nopw(); // leftover code from the original?
+ map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x50000d).rw(m_vdp[1], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
+ map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
+}
+
void toaplan2_state::pwrkick_68k_mem(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -2349,6 +2369,31 @@ static INPUT_PORTS_START( batsugun )
INPUT_PORTS_END
+static INPUT_PORTS_START( batsugunbl )
+ PORT_INCLUDE( batsugun )
+
+ PORT_MODIFY("JMPR")
+ PORT_CONFNAME( 0x000f, 0x0009, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
+ PORT_CONFSETTING( 0x0009, DEF_STR( Europe ) )
+ PORT_CONFSETTING( 0x0008, "Europe (Taito Corp.)" )
+ PORT_CONFSETTING( 0x000b, DEF_STR( USA ) )
+ PORT_CONFSETTING( 0x000a, "USA (Taito Corp.)" )
+ PORT_CONFSETTING( 0x000f, DEF_STR( Japan ) )
+// PORT_CONFSETTING( 0x000e, DEF_STR( Japan ) )
+ PORT_CONFSETTING( 0x000d, "Japan (Taito Corp.)" )
+// PORT_CONFSETTING( 0x000c, "Japan (Taito Corp.)" )
+ PORT_CONFSETTING( 0x0007, DEF_STR( Southeast_Asia ) )
+ PORT_CONFSETTING( 0x0006, "Southeast Asia (Taito Corp.)" )
+ PORT_CONFSETTING( 0x0005, DEF_STR( Taiwan ) )
+ PORT_CONFSETTING( 0x0004, "Taiwan (Taito Corp.)" )
+ PORT_CONFSETTING( 0x0003, DEF_STR( Hong_Kong ) )
+ PORT_CONFSETTING( 0x0002, "Hong Kong (Taito Corp.)" )
+ PORT_CONFSETTING( 0x0001, DEF_STR( Korea ) )
+ PORT_CONFSETTING( 0x0000, "Korea (Unite Trading)" )
+ PORT_CONFNAME( 0x00f0, 0x00f0, "(null)" )
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( pwrkick )
PORT_START("DSWA")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:!1,!2")
@@ -3858,6 +3903,23 @@ void toaplan2_state::batsugun(machine_config &config)
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.4);
}
+void toaplan2_state::batsugunbl(machine_config &config)
+{
+ batsugun(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::batsugunbl_68k_mem);
+ m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &toaplan2_state::cpu_space_fixeightbl_map);
+
+ m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_2, ASSERT_LINE);
+
+ MCFG_VIDEO_START_OVERRIDE(toaplan2_state, batsugunbl)
+
+ config.device_remove("audiocpu");
+ config.device_remove("ymsnd");
+
+ m_oki[0]->set_addrmap(0, &toaplan2_state::fixeightbl_oki);
+}
+
void toaplan2_state::pwrkick(machine_config &config)
{
/* basic machine hardware */
@@ -4900,8 +4962,6 @@ ROM_START( batsugunb )
// ROM_LOAD( "tp030_u19_gal16v8b-15.jed", 0x0000, 0x991, CRC(31be54a2) SHA1(06278942a9a2ea858c0352b2ef5a65bf329b7b82) )
ROM_END
-
-
ROM_START( batsugunsp )
ROM_REGION( 0x080000, "maincpu", 0 ) /* Main 68K code */
ROM_LOAD16_WORD_SWAP( "tp030-sp.u69", 0x000000, 0x080000, CRC(8072a0cd) SHA1(3a0a9cdf894926a16800c4882a2b00383d981367) )
@@ -4926,6 +4986,25 @@ ROM_START( batsugunsp )
ROM_LOAD( "tp030_u19_gal16v8b-15.bin", 0x0000, 0x117, CRC(f71669e8) SHA1(ec1fbe04605fee864af4b01f001af227938c9f21) )
ROM_END
+// a cost-cutting bootleg PCB with only M68000 + OKIM6295. A pair of TPC1020 seem to do the job of the GP9001s.
+// according to the dumper 'audio is pretty garbage, and some sprites overlay the UI incorrectly'
+ROM_START( batsugunbl )
+ ROM_REGION( 0x080000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "27c240.bin", 0x000000, 0x080000, CRC(a34df8bb) SHA1(10d456f5437b21a95fd8018bdb19a08a110241c4) )
+
+ ROM_REGION( 0x400000, "gp9001_0", 0 ) // same as original
+ ROM_LOAD( "27c8100-j.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
+ ROM_LOAD( "27c8100-k.bin", 0x100000, 0x100000, CRC(ed75730b) SHA1(341f0f728144a049486d996c9bb14078578c6879) )
+ ROM_LOAD( "27c8100-l.bin", 0x200000, 0x100000, CRC(fedb9861) SHA1(4b0917056bd359b21935358c6bcc729262be6417) )
+ ROM_LOAD( "27c8100-m.bin", 0x300000, 0x100000, CRC(d482948b) SHA1(31be7dc5cff072403b783bf203b9805ffcad7284) )
+
+ ROM_REGION( 0x200000, "gp9001_1", 0 ) // same as original
+ ROM_LOAD( "27c8100-n.bin", 0x000000, 0x100000, CRC(bcf5ba05) SHA1(40f98888a29cdd30cda5dfb60fdc667c69b0fdb0) )
+ ROM_LOAD( "27c8100-o.bin", 0x100000, 0x100000, CRC(0666fecd) SHA1(aa8f921fc51590b5b05bbe0b0ad0cce5ff359c64) )
+
+ ROM_REGION( 0x80000, "oki1", 0 ) // more samples to compensate for missing YM2151
+ ROM_LOAD( "27c040.bin", 0x00000, 0x80000, CRC(1f8ec1b6) SHA1(28107a90d29613ceddc001df2556543b33c1294c) )
+ROM_END
ROM_START( pwrkick )
ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
@@ -5881,6 +5960,7 @@ GAME( 1993, batsugun, 0, batsugun, batsugun, toaplan2_state, init_
GAME( 1993, batsuguna, batsugun, batsugun, batsugun, toaplan2_state, init_dogyuun, ROT270, "Toaplan", "Batsugun (older set)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, batsugunb, batsugun, batsugun, batsugun, toaplan2_state, init_dogyuun, ROT270, "Toaplan", "Batsugun (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // cheap looking PCB (same 'TP-030' numbering as original) but without Mask ROMs. Still has original customs etc. Jumpers were set to the Korea Unite Trading license, so likely made in Korea, not a bootleg tho.
GAME( 1993, batsugunsp, batsugun, batsugun, batsugun, toaplan2_state, init_dogyuun, ROT270, "Toaplan", "Batsugun - Special Version", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, batsugunbl, batsugun, batsugunbl, batsugunbl, toaplan2_state, init_fixeightbl, ROT270, "Toaplan", "Batsugun (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // needs correct GFX offsets and oki banking fix
GAME( 1994, pwrkick, 0, pwrkick, pwrkick, toaplan2_state, empty_init, ROT0, "Sunwise", "Power Kick (Japan)", 0 )
GAME( 1995, othldrby, 0, othldrby, othldrby, toaplan2_state, empty_init, ROT0, "Sunwise", "Othello Derby (Japan)", 0 )
diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h
index cb948900da4..94572aefefa 100644
--- a/src/mame/includes/toaplan2.h
+++ b/src/mame/includes/toaplan2.h
@@ -71,6 +71,7 @@ public:
void pipibibs(machine_config &config);
void pipibibsbl(machine_config &config);
void batsugun(machine_config &config);
+ void batsugunbl(machine_config &config);
void enmadaio(machine_config &config);
void truxton2(machine_config &config);
void vfive(machine_config &config);
@@ -186,6 +187,7 @@ private:
DECLARE_VIDEO_START(bgaregga);
DECLARE_VIDEO_START(bgareggabl);
DECLARE_VIDEO_START(batrider);
+ DECLARE_VIDEO_START(batsugunbl);
// Teki Paki sound
u8 tekipaki_cmdavailable_r();
@@ -211,6 +213,7 @@ private:
void batrider_sound_z80_mem(address_map &map);
void batrider_sound_z80_port(address_map &map);
void batsugun_68k_mem(address_map &map);
+ void batsugunbl_68k_mem(address_map &map);
void bbakraid_68k_mem(address_map &map);
void bbakraid_sound_z80_mem(address_map &map);
void bbakraid_sound_z80_port(address_map &map);
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index d1c08f7f6fb..361e300ec54 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -41819,6 +41819,7 @@ batrideru // (c) 1998 Raizing/8ing
batsugun // TP-030 (c) 1993 Toaplan
batsuguna // TP-030 (c) 1993 Toaplan
batsugunb //
+batsugunbl // bootleg
batsugunsp // TP-030 (c) 1993 Toaplan
bbakraid // (c) 1999 8ing
bbakraidc // (c) 1999 8ing
diff --git a/src/mame/video/toaplan2.cpp b/src/mame/video/toaplan2.cpp
index 9a542579022..f52431508a8 100644
--- a/src/mame/video/toaplan2.cpp
+++ b/src/mame/video/toaplan2.cpp
@@ -111,6 +111,25 @@ VIDEO_START_MEMBER(toaplan2_state,fixeightbl)
m_vdp[0]->init_scroll_regs();
}
+VIDEO_START_MEMBER(toaplan2_state, batsugunbl)
+{
+ VIDEO_START_CALL_MEMBER(toaplan2);
+
+ // This bootleg has additional layer offsets. TODO: further refinement needed
+ m_vdp[0]->set_tm_extra_offsets(0, 0, 0, 0, 0);
+ m_vdp[0]->set_tm_extra_offsets(1, 0, 0, 0, 0);
+ m_vdp[0]->set_tm_extra_offsets(2, 0, 0, 0, 0);
+ m_vdp[0]->set_sp_extra_offsets(0x37, 0x07, 0, 0);
+
+ m_vdp[1]->set_tm_extra_offsets(0, -0x05, 0x07, 0, 0);
+ m_vdp[1]->set_tm_extra_offsets(1, -0x05, 0x07, 0, 0);
+ m_vdp[1]->set_tm_extra_offsets(2, 0, 0, 0, 0);
+ m_vdp[1]->set_sp_extra_offsets(0x39, 0x12, 0, 0);
+
+ m_vdp[0]->init_scroll_regs();
+ m_vdp[1]->init_scroll_regs();
+}
+
VIDEO_START_MEMBER(toaplan2_state,bgaregga)
{
VIDEO_START_CALL_MEMBER(toaplan2);