summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/lsasquad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lsasquad.cpp')
-rw-r--r--src/mame/drivers/lsasquad.cpp230
1 files changed, 132 insertions, 98 deletions
diff --git a/src/mame/drivers/lsasquad.cpp b/src/mame/drivers/lsasquad.cpp
index db0d3fbd082..2f727d3d424 100644
--- a/src/mame/drivers/lsasquad.cpp
+++ b/src/mame/drivers/lsasquad.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria
+
/***************************************************************************
Land Sea Air Squad / Storming Party (c) 1986 Taito
@@ -154,39 +155,36 @@ Notes:
#include "speaker.h"
-#define MASTER_CLOCK XTAL(24'000'000)
-
-
-void lsasquad_state::lsasquad_bankswitch_w(uint8_t data)
+void lsasquad_state::bankswitch_w(uint8_t data)
{
- /* bits 0-2 select ROM bank */
- membank("bank1")->set_entry(data & 0x07);
+ // bits 0-2 select ROM bank
+ m_mainbank->set_entry(data & 0x07);
- /* bit 3 is zeroed on startup, maybe reset sound CPU */
+ // bit 3 is zeroed on startup, maybe reset sound CPU
- /* bit 4 flips screen */
+ // bit 4 flips screen
flip_screen_set(data & 0x10);
- /* other bits unknown */
+ // other bits unknown
}
void lsasquad_state::lsasquad_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0x9fff).bankr("bank1");
- map(0xa000, 0xbfff).ram(); /* SRAM */
- map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */
- map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */
- map(0xe400, 0xe5ff).ram().share("spriteram"); /* OBJECT RAM */
+ map(0x8000, 0x9fff).bankr(m_mainbank);
+ map(0xa000, 0xbfff).ram(); // SRAM
+ map(0xc000, 0xdfff).ram().share(m_videoram); // SCREEN RAM
+ map(0xe000, 0xe3ff).ram().share(m_scrollram); // SCROLL RAM
+ map(0xe400, 0xe5ff).ram().share(m_spriteram); // OBJECT RAM
map(0xe800, 0xe800).portr("DSWA");
map(0xe801, 0xe801).portr("DSWB");
map(0xe802, 0xe802).portr("DSWC");
- map(0xe803, 0xe803).r(FUNC(lsasquad_state::lsasquad_mcu_status_r)); /* COIN + 68705 status */
+ map(0xe803, 0xe803).r(FUNC(lsasquad_state::lsasquad_mcu_status_r)); // COIN + 68705 status
map(0xe804, 0xe804).portr("P1");
map(0xe805, 0xe805).portr("P2");
map(0xe806, 0xe806).portr("START");
map(0xe807, 0xe807).portr("SERVICE");
- map(0xea00, 0xea00).w(FUNC(lsasquad_state::lsasquad_bankswitch_w));
+ map(0xea00, 0xea00).w(FUNC(lsasquad_state::bankswitch_w));
map(0xec00, 0xec00).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0xec01, 0xec01).r(FUNC(lsasquad_state::lsasquad_sound_status_r));
@@ -201,10 +199,10 @@ void lsasquad_state::lsasquad_sound_map(address_map &map)
map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
map(0xd000, 0xd000).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
- map(0xd400, 0xd400).w(FUNC(lsasquad_state::lsasquad_sh_nmi_disable_w));
- map(0xd800, 0xd800).w(FUNC(lsasquad_state::lsasquad_sh_nmi_enable_w));
+ map(0xd400, 0xd400).w(FUNC(lsasquad_state::sh_nmi_disable_w));
+ map(0xd800, 0xd800).w(FUNC(lsasquad_state::sh_nmi_enable_w));
map(0xd800, 0xd800).r(FUNC(lsasquad_state::lsasquad_sound_status_r));
- map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */
+ map(0xe000, 0xefff).rom(); // space for diagnostic ROM?
}
@@ -212,11 +210,11 @@ void lsasquad_state::lsasquad_sound_map(address_map &map)
void lsasquad_state::storming_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0x9fff).bankr("bank1");
- map(0xa000, 0xbfff).ram(); /* SRAM */
- map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */
- map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */
- map(0xe400, 0xe5ff).ram().share("spriteram"); /* OBJECT RAM */
+ map(0x8000, 0x9fff).bankr(m_mainbank);
+ map(0xa000, 0xbfff).ram(); // SRAM
+ map(0xc000, 0xdfff).ram().share(m_videoram); // SCREEN RAM
+ map(0xe000, 0xe3ff).ram().share(m_scrollram); // SCROLL RAM
+ map(0xe400, 0xe5ff).ram().share(m_spriteram); // OBJECT RAM
map(0xe800, 0xe800).portr("DSWA");
map(0xe801, 0xe801).portr("DSWB");
map(0xe802, 0xe802).portr("DSWC");
@@ -225,7 +223,7 @@ void lsasquad_state::storming_map(address_map &map)
map(0xe805, 0xe805).portr("P2");
map(0xe806, 0xe806).portr("START");
map(0xe807, 0xe807).portr("SERVICE");
- map(0xea00, 0xea00).w(FUNC(lsasquad_state::lsasquad_bankswitch_w));
+ map(0xea00, 0xea00).w(FUNC(lsasquad_state::bankswitch_w));
map(0xec00, 0xec00).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0xec01, 0xec01).r(FUNC(lsasquad_state::lsasquad_sound_status_r));
@@ -305,8 +303,8 @@ static INPUT_PORTS_START( lsasquad )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("MCU")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* 68705 ready to receive cmd */
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* 0 = 68705 has sent result */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) // 68705 ready to receive cmd
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) // 0 = 68705 has sent result
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@@ -372,24 +370,24 @@ static INPUT_PORTS_START( storming )
INPUT_PORTS_END
-/* DAIKAIJU */
+// DAIKAIJU
void lsasquad_state::daikaiju_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0x9fff).bankr("bank1");
- map(0xa000, 0xbfff).ram(); /* SRAM */
- map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */
- map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */
- map(0xe400, 0xe7ff).ram().share("spriteram"); /* OBJECT RAM */
+ map(0x8000, 0x9fff).bankr(m_mainbank);
+ map(0xa000, 0xbfff).ram(); // SRAM
+ map(0xc000, 0xdfff).ram().share(m_videoram); // SCREEN RAM
+ map(0xe000, 0xe3ff).ram().share(m_scrollram); // SCROLL RAM
+ map(0xe400, 0xe7ff).ram().share(m_spriteram); // OBJECT RAM
map(0xe800, 0xe800).portr("DSWA");
map(0xe801, 0xe801).portr("DSWB");
- map(0xe803, 0xe803).r(FUNC(lsasquad_state::daikaiju_mcu_status_r)); /* COIN + 68705 status */
+ map(0xe803, 0xe803).r(FUNC(lsasquad_state::daikaiju_mcu_status_r)); // COIN + 68705 status
map(0xe804, 0xe804).portr("P1");
map(0xe805, 0xe805).portr("P2");
map(0xe806, 0xe806).portr("START");
map(0xe807, 0xe807).portr("SERVICE");
- map(0xea00, 0xea00).w(FUNC(lsasquad_state::lsasquad_bankswitch_w));
+ map(0xea00, 0xea00).w(FUNC(lsasquad_state::bankswitch_w));
map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0xee00, 0xee00).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
}
@@ -401,10 +399,10 @@ void lsasquad_state::daikaiju_sound_map(address_map &map)
map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
- map(0xd400, 0xd400).w(FUNC(lsasquad_state::lsasquad_sh_nmi_disable_w));
- map(0xd800, 0xd800).rw(FUNC(lsasquad_state::daikaiju_sound_status_r), FUNC(lsasquad_state::lsasquad_sh_nmi_enable_w));
+ map(0xd400, 0xd400).w(FUNC(lsasquad_state::sh_nmi_disable_w));
+ map(0xd800, 0xd800).rw(FUNC(lsasquad_state::daikaiju_sound_status_r), FUNC(lsasquad_state::sh_nmi_enable_w));
map(0xdc00, 0xdc00).nopw();
- map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */
+ map(0xe000, 0xefff).rom(); // space for diagnostic ROM?
}
static INPUT_PORTS_START( daikaiju )
@@ -458,8 +456,8 @@ static INPUT_PORTS_START( daikaiju )
PORT_START("MCU")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* 68705 ready to receive cmd */
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* 0 = 68705 has sent result */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) // 68705 ready to receive cmd
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) // 0 = 68705 has sent result
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@@ -547,26 +545,26 @@ void lsasquad_state::machine_start()
{
uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x2000);
+ m_mainbank->configure_entries(0, 8, &ROM[0x8000], 0x2000);
}
-/* Note: lsasquad clock values are not verified */
+// Note: lsasquad clock values are not verified
void lsasquad_state::lsasquad(machine_config &config)
{
- /* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK / 4);
+ // basic machine hardware
+ Z80(config, m_maincpu, 24_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &lsasquad_state::lsasquad_map);
m_maincpu->set_vblank_int("screen", FUNC(lsasquad_state::irq0_line_hold));
- Z80(config, m_audiocpu, MASTER_CLOCK / 8);
+ Z80(config, m_audiocpu, 24_MHz_XTAL / 8);
m_audiocpu->set_addrmap(AS_PROGRAM, &lsasquad_state::lsasquad_sound_map);
- /* IRQs are triggered by the YM2203 */
- TAITO68705_MCU(config, m_bmcu, MASTER_CLOCK / 8);
+ // IRQs are triggered by the YM2203
+ TAITO68705_MCU(config, m_bmcu, 24_MHz_XTAL / 8);
- config.set_maximum_quantum(attotime::from_hz(30000)); /* 500 CPU slices per frame - a high value to ensure proper */
- /* synchronization of the CPUs */
- /* main<->sound synchronization depends on this */
+ config.set_maximum_quantum(attotime::from_hz(30000)); /* 500 CPU slices per frame - a high value to ensure proper
+ synchronization of the CPUs
+ main<->sound synchronization depends on this */
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
@@ -575,7 +573,7 @@ void lsasquad_state::lsasquad(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch2);
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@@ -587,12 +585,12 @@ void lsasquad_state::lsasquad(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lsasquad);
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "mono").front_center();
- YM2149(config, "aysnd", MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "mono", 0.12);
+ YM2149(config, "aysnd", 24_MHz_XTAL / 8).add_route(ALL_OUTPUTS, "mono", 0.12);
- ym2203_device &ymsnd(YM2203(config, "ymsnd", MASTER_CLOCK / 8));
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", 24_MHz_XTAL / 8));
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.port_a_write_callback().set(FUNC(lsasquad_state::unk));
ymsnd.port_b_write_callback().set(FUNC(lsasquad_state::unk));
@@ -610,32 +608,32 @@ void lsasquad_state::storming(machine_config &config)
config.device_remove("bmcu");
- AY8910(config.replace(), "aysnd", MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "mono", 0.12); // AY-3-8910A
+ AY8910(config.replace(), "aysnd", 24_MHz_XTAL / 8).add_route(ALL_OUTPUTS, "mono", 0.12); // AY-3-8910A
}
void lsasquad_state::daikaiju(machine_config &config)
{
- /* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK / 4);
+ // basic machine hardware
+ Z80(config, m_maincpu, 24_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &lsasquad_state::daikaiju_map);
m_maincpu->set_vblank_int("screen", FUNC(lsasquad_state::irq0_line_hold));
- Z80(config, m_audiocpu, MASTER_CLOCK / 8);
+ Z80(config, m_audiocpu, 24_MHz_XTAL / 8);
m_audiocpu->set_addrmap(AS_PROGRAM, &lsasquad_state::daikaiju_sound_map);
- /* IRQs are triggered by the YM2203 */
+ // IRQs are triggered by the YM2203
- TAITO68705_MCU(config, m_bmcu, MASTER_CLOCK / 8);
+ TAITO68705_MCU(config, m_bmcu, 24_MHz_XTAL / 8);
- config.set_maximum_quantum(attotime::from_hz(30000)); /* 500 CPU slices per frame - a high value to ensure proper */
- /* synchronization of the CPUs */
- /* main<->sound synchronization depends on this */
+ config.set_maximum_quantum(attotime::from_hz(30000)); /* 500 CPU slices per frame - a high value to ensure proper
+ synchronization of the CPUs
+ main<->sound synchronization depends on this */
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@@ -647,12 +645,12 @@ void lsasquad_state::daikaiju(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lsasquad);
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "mono").front_center();
- YM2149(config, "aysnd", MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "mono", 0.12);
+ YM2149(config, "aysnd", 24_MHz_XTAL / 8).add_route(ALL_OUTPUTS, "mono", 0.12);
- ym2203_device &ymsnd(YM2203(config, "ymsnd", MASTER_CLOCK / 8));
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", 24_MHz_XTAL / 8));
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.port_a_write_callback().set(FUNC(lsasquad_state::unk));
ymsnd.port_b_write_callback().set(FUNC(lsasquad_state::unk));
@@ -670,16 +668,15 @@ void lsasquad_state::daikaiju(machine_config &config)
***************************************************************************/
ROM_START( lsasquad )
- ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "a64-21.4", 0x00000, 0x8000, CRC(5ff6b017) SHA1(96cc74edba1208bb8e82f93d2d3a88ea24922dc0) )
- /* ROMs banked at 8000-9fff */
- ROM_LOAD( "a64-20.3", 0x10000, 0x8000, CRC(7f8b4979) SHA1(975b1a678e1f7d7b5789565063177593639645ce) )
- ROM_LOAD( "a64-19.2", 0x18000, 0x8000, CRC(ba31d34a) SHA1(e2c515ae8146a37534b19403c03fc5a8719f115f) )
+ ROM_LOAD( "a64-20.3", 0x08000, 0x8000, CRC(7f8b4979) SHA1(975b1a678e1f7d7b5789565063177593639645ce) )
+ ROM_LOAD( "a64-19.2", 0x10000, 0x8000, CRC(ba31d34a) SHA1(e2c515ae8146a37534b19403c03fc5a8719f115f) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the second CPU */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a64-04.44", 0x0000, 0x8000, CRC(c238406a) SHA1(bb8f9d952c4568edb375328a1f9f6681a1bb5907) )
- ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
+ ROM_REGION( 0x0800, "bmcu:mcu", 0 )
ROM_LOAD( "a64-05.35", 0x0000, 0x0800, CRC(572677b9) SHA1(e098d5d842bcc81221ba56652a7019505d8be082) )
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
@@ -695,28 +692,27 @@ ROM_START( lsasquad )
ROM_LOAD( "a64-17.26", 0x18000, 0x8000, CRC(6eaf3735) SHA1(a91fd7c9a6f2f58d311e40edc29d1e4f97746146) )
ROM_REGION( 0x0600, "proms", 0 )
- ROM_LOAD( "a64-07.22", 0x0000, 0x0200, CRC(82802bbb) SHA1(4f54c9364a12809898eabd1eb13d16a6c9f0f532) ) /* red (bottom half unused) */
+ ROM_LOAD( "a64-07.22", 0x0000, 0x0200, CRC(82802bbb) SHA1(4f54c9364a12809898eabd1eb13d16a6c9f0f532) ) // red (bottom half unused)
ROM_IGNORE( 0x200 )
- ROM_LOAD( "a64-08.23", 0x0200, 0x0200, CRC(aa9e1dbd) SHA1(be7dfabf5306747fa3d5f1f735d0064673f19c91) ) /* green (bottom half unused) */
+ ROM_LOAD( "a64-08.23", 0x0200, 0x0200, CRC(aa9e1dbd) SHA1(be7dfabf5306747fa3d5f1f735d0064673f19c91) ) // green (bottom half unused)
ROM_IGNORE( 0x200 )
- ROM_LOAD( "a64-09.24", 0x0400, 0x0200, CRC(dca86295) SHA1(a6f6af60caaad9f49d72a8c2ff1e6115471f8c63) ) /* blue (bottom half unused) */
+ ROM_LOAD( "a64-09.24", 0x0400, 0x0200, CRC(dca86295) SHA1(a6f6af60caaad9f49d72a8c2ff1e6115471f8c63) ) // blue (bottom half unused)
ROM_IGNORE( 0x200 )
ROM_REGION( 0x0400, "prio_prom", 0 )
- ROM_LOAD( "a64-06.9", 0x0000, 0x0400, CRC(7ced30ba) SHA1(f22de13d4fd49b7b2ffd06032eb5e14fbdeec91c) ) /* priority */
+ ROM_LOAD( "a64-06.9", 0x0000, 0x0400, CRC(7ced30ba) SHA1(f22de13d4fd49b7b2ffd06032eb5e14fbdeec91c) )
ROM_REGION( 0x0200, "plds", 0 )
ROM_LOAD( "pal16l8a.14", 0x0000, 0x0104, CRC(a7cc157d) SHA1(f06f750636d59a610e0b0eda8cb791780ebc57a5) )
ROM_END
ROM_START( storming )
- ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "stpartyj.001", 0x00000, 0x8000, CRC(07e6bc61) SHA1(6989a1401868dd93c9466cfd1636ac48a734a5d4) )
- /* ROMs banked at 8000-9fff */
- ROM_LOAD( "stpartyj.002", 0x10000, 0x8000, CRC(1c7fe5d5) SHA1(15c09e3301d8ce55e59fe90db9f50ee19584ab7b) )
- ROM_LOAD( "stpartyj.003", 0x18000, 0x8000, CRC(159f23a6) SHA1(2cb4ed78e54dc2acbbfc2d4cfb2d29ff604aa9ae) )
+ ROM_LOAD( "stpartyj.002", 0x08000, 0x8000, CRC(1c7fe5d5) SHA1(15c09e3301d8ce55e59fe90db9f50ee19584ab7b) )
+ ROM_LOAD( "stpartyj.003", 0x10000, 0x8000, CRC(159f23a6) SHA1(2cb4ed78e54dc2acbbfc2d4cfb2d29ff604aa9ae) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the second CPU */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a64-04.44", 0x0000, 0x8000, CRC(c238406a) SHA1(bb8f9d952c4568edb375328a1f9f6681a1bb5907) )
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
@@ -732,28 +728,65 @@ ROM_START( storming )
ROM_LOAD( "a64-17.26", 0x18000, 0x8000, CRC(6eaf3735) SHA1(a91fd7c9a6f2f58d311e40edc29d1e4f97746146) )
ROM_REGION( 0x0600, "proms", 0 )
- ROM_LOAD( "a64-07.22", 0x0000, 0x0200, CRC(82802bbb) SHA1(4f54c9364a12809898eabd1eb13d16a6c9f0f532) ) /* red (bottom half unused) */
+ ROM_LOAD( "a64-07.22", 0x0000, 0x0200, CRC(82802bbb) SHA1(4f54c9364a12809898eabd1eb13d16a6c9f0f532) ) // red (bottom half unused)
ROM_IGNORE( 0x200 )
- ROM_LOAD( "a64-08.23", 0x0200, 0x0200, CRC(aa9e1dbd) SHA1(be7dfabf5306747fa3d5f1f735d0064673f19c91) ) /* green (bottom half unused) */
+ ROM_LOAD( "a64-08.23", 0x0200, 0x0200, CRC(aa9e1dbd) SHA1(be7dfabf5306747fa3d5f1f735d0064673f19c91) ) // green (bottom half unused)
ROM_IGNORE( 0x200 )
- ROM_LOAD( "a64-09.24", 0x0400, 0x0200, CRC(dca86295) SHA1(a6f6af60caaad9f49d72a8c2ff1e6115471f8c63) ) /* blue (bottom half unused) */
+ ROM_LOAD( "a64-09.24", 0x0400, 0x0200, CRC(dca86295) SHA1(a6f6af60caaad9f49d72a8c2ff1e6115471f8c63) ) // blue (bottom half unused)
ROM_IGNORE( 0x200 )
ROM_REGION( 0x0400, "prio_prom", 0 )
- ROM_LOAD( "a64-06.9", 0x0000, 0x0400, CRC(7ced30ba) SHA1(f22de13d4fd49b7b2ffd06032eb5e14fbdeec91c) ) /* priority */
+ ROM_LOAD( "a64-06.9", 0x0000, 0x0400, CRC(7ced30ba) SHA1(f22de13d4fd49b7b2ffd06032eb5e14fbdeec91c) )
ROM_REGION( 0x0200, "plds", 0 )
ROM_LOAD( "pal16l8a.14", 0x0000, 0x0104, CRC(a7cc157d) SHA1(f06f750636d59a610e0b0eda8cb791780ebc57a5) )
ROM_END
-ROM_START( daikaiju )
+ // 2-PCB stack: main is marked SA-1001, ROM PCB has no visible markings
+ // this PCB only has two dip banks. Game code still reads invulnerability and freeze, which are listed as DSWC in the source. Are they jumpers?
+ROM_START( storminga )
ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "1.ic4.1e", 0x00000, 0x8000, CRC(07e6bc61) SHA1(6989a1401868dd93c9466cfd1636ac48a734a5d4) ) // only different ROM, various routines changed / nop-ed
+ ROM_LOAD( "2.ic3.1c", 0x08000, 0x8000, CRC(1c7fe5d5) SHA1(15c09e3301d8ce55e59fe90db9f50ee19584ab7b) )
+ ROM_LOAD( "3.ic2.1b", 0x10000, 0x8000, CRC(159f23a6) SHA1(2cb4ed78e54dc2acbbfc2d4cfb2d29ff604aa9ae) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "4.ic44.5g", 0x0000, 0x8000, CRC(c238406a) SHA1(bb8f9d952c4568edb375328a1f9f6681a1bb5907) )
+
+ ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "5.ic29.2c", 0x00000, 0x8000, CRC(bb4f1b37) SHA1(ce8dc962a3d04a624e36b57dc678e7ca7726ba1d) )
+ ROM_LOAD( "7.ic30.3c", 0x08000, 0x8000, CRC(8ee2443b) SHA1(855d8189efcfc796daa6b36f86d2872cc48adfde) )
+ ROM_LOAD( "6.ic42.2d", 0x10000, 0x8000, CRC(a3bbc0b3) SHA1(f565d323575af3c2e95412c50130e88954fc238c) )
+ ROM_LOAD( "8.ic43.3d", 0x18000, 0x8000, CRC(f342d42f) SHA1(ef9367ad9763f4b38e0f12805c1eee7c430758c2) )
+
+ ROM_REGION( 0x20000, "gfx2", ROMREGION_INVERT )
+ ROM_LOAD( "9.ic2.14a", 0x00000, 0x8000, CRC(a72e2041) SHA1(c537d1620fe8562aef39a0279b35139eb0668bf9) )
+ ROM_LOAD( "a.ic3.16a", 0x08000, 0x8000, CRC(05206333) SHA1(a7463279446de9d633ea18f1e1eb5f610d982a37) )
+ ROM_LOAD( "10.ic27.14b", 0x10000, 0x8000, CRC(01ed5851) SHA1(6034376d30d1d17fe9aab07cb40009c4f3c03690) )
+ ROM_LOAD( "b.ic28.16b", 0x18000, 0x8000, CRC(6eaf3735) SHA1(a91fd7c9a6f2f58d311e40edc29d1e4f97746146) )
+
+ ROM_REGION( 0x0600, "proms", 0 ) // not dumped for this set, but 99,9% sure they match storming
+ ROM_LOAD( "ic22.2l", 0x0000, 0x0200, BAD_DUMP CRC(82802bbb) SHA1(4f54c9364a12809898eabd1eb13d16a6c9f0f532) ) // red (bottom half unused)
+ ROM_IGNORE( 0x200 )
+ ROM_LOAD( "ic23.2m", 0x0200, 0x0200, BAD_DUMP CRC(aa9e1dbd) SHA1(be7dfabf5306747fa3d5f1f735d0064673f19c91) ) // green (bottom half unused)
+ ROM_IGNORE( 0x200 )
+ ROM_LOAD( "ic24.2m", 0x0400, 0x0200, BAD_DUMP CRC(dca86295) SHA1(a6f6af60caaad9f49d72a8c2ff1e6115471f8c63) ) // blue (bottom half unused)
+ ROM_IGNORE( 0x200 )
+
+ ROM_REGION( 0x0400, "prio_prom", 0 ) // not dumped for this set, but 99,9% sure it matches storming
+ ROM_LOAD( "ic9.1j", 0x0000, 0x0400, BAD_DUMP CRC(7ced30ba) SHA1(f22de13d4fd49b7b2ffd06032eb5e14fbdeec91c) )
+
+ ROM_REGION( 0x0200, "plds", 0 ) // protected for this set, but 99,9% sure it matches storming
+ ROM_LOAD( "pal16l8cj.ic14.2c", 0x0000, 0x0104, BAD_DUMP CRC(a7cc157d) SHA1(f06f750636d59a610e0b0eda8cb791780ebc57a5) )
+ROM_END
+
+ROM_START( daikaiju )
+ ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "a74_01-1.ic4", 0x00000, 0x8000, CRC(89c13d7f) SHA1(2eaec80d7aa360b700387df00b37a692acc50d74) )
- /* ROMs banked at 8000-9fff */
- ROM_LOAD( "a74_02.ic3", 0x10000, 0x8000, CRC(8ddf6131) SHA1(b5b23550e7ee52554bc1f045ed6f42e254a05bf4) )
- ROM_LOAD( "a74_03.ic2", 0x18000, 0x8000, CRC(3911ffed) SHA1(ba6dbd74d37ef26621a02baf3479e2764d10d2ba) )
+ ROM_LOAD( "a74_02.ic3", 0x08000, 0x8000, CRC(8ddf6131) SHA1(b5b23550e7ee52554bc1f045ed6f42e254a05bf4) )
+ ROM_LOAD( "a74_03.ic2", 0x10000, 0x8000, CRC(3911ffed) SHA1(ba6dbd74d37ef26621a02baf3479e2764d10d2ba) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the second CPU */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a74_04.ic44", 0x0000, 0x8000, CRC(98a6a703) SHA1(0c169a7a5f8b26606f67ee7f14bd487951536ac5) )
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
@@ -772,18 +805,19 @@ ROM_START( daikaiju )
ROM_LOAD( "a74_17.ic26", 0x18000, 0x8000, CRC(d1077878) SHA1(e69893db6b63d5a5192b521d61a86f60b7029b7e) )
ROM_REGION( 0x0600, "proms", 0 )
- ROM_LOAD( "a74_07.ic22", 0x0000, 0x0200, CRC(66132341) SHA1(8c6723dfc4f856ef27998411a98c40783d13ac41) ) /* red (bottom half unused) */
+ ROM_LOAD( "a74_07.ic22", 0x0000, 0x0200, CRC(66132341) SHA1(8c6723dfc4f856ef27998411a98c40783d13ac41) ) // red (bottom half unused)
ROM_IGNORE( 0x200 )
- ROM_LOAD( "a74_08.ic23", 0x0200, 0x0200, CRC(fb3f0273) SHA1(591577c94865e2e6465e0016350450a19000e52d) ) /* green (bottom half unused) */
+ ROM_LOAD( "a74_08.ic23", 0x0200, 0x0200, CRC(fb3f0273) SHA1(591577c94865e2e6465e0016350450a19000e52d) ) // green (bottom half unused)
ROM_IGNORE( 0x200 )
- ROM_LOAD( "a74_09.ic24", 0x0400, 0x0200, CRC(bed6709d) SHA1(ba5435728d6b7847bc86878f6122ce1f86982f0a) ) /* blue (bottom half unused) */
+ ROM_LOAD( "a74_09.ic24", 0x0400, 0x0200, CRC(bed6709d) SHA1(ba5435728d6b7847bc86878f6122ce1f86982f0a) ) // blue (bottom half unused)
ROM_IGNORE( 0x200 )
ROM_REGION( 0x0400, "prio_prom", 0 )
- ROM_LOAD( "a74_06.ic9", 0x0000, 0x0400, CRC(cad554e7) SHA1(7890d948bfef198309df810f8401d224224a73a1) ) /* priority */
+ ROM_LOAD( "a74_06.ic9", 0x0000, 0x0400, CRC(cad554e7) SHA1(7890d948bfef198309df810f8401d224224a73a1) )
ROM_END
-GAME( 1986, lsasquad, 0, lsasquad, lsasquad, lsasquad_state, empty_init, ROT270, "Taito", "Land Sea Air Squad / Riku Kai Kuu Saizensen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1986, storming, lsasquad, storming, storming, lsasquad_state, empty_init, ROT270, "bootleg", "Storming Party / Riku Kai Kuu Saizensen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1986, daikaiju, 0, daikaiju, daikaiju, lsasquad_state, empty_init, ROT270, "Taito", "Daikaiju no Gyakushu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, lsasquad, 0, lsasquad, lsasquad, lsasquad_state, empty_init, ROT270, "Taito", "Land Sea Air Squad / Riku Kai Kuu Saizensen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, storming, lsasquad, storming, storming, lsasquad_state, empty_init, ROT270, "bootleg", "Storming Party / Riku Kai Kuu Saizensen (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, storminga, lsasquad, storming, storming, lsasquad_state, empty_init, ROT270, "bootleg", "Storming Party / Riku Kai Kuu Saizensen (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, daikaiju, 0, daikaiju, daikaiju, lsasquad_state, empty_init, ROT270, "Taito", "Daikaiju no Gyakushu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )