summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/divebomb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/divebomb.cpp')
-rw-r--r--src/mame/drivers/divebomb.cpp570
1 files changed, 0 insertions, 570 deletions
diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp
deleted file mode 100644
index 48f4a2bc4bd..00000000000
--- a/src/mame/drivers/divebomb.cpp
+++ /dev/null
@@ -1,570 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood, Phil Bennett
-/***************************************************************************
-
- Kyuukoukabakugekitai - Dive Bomber Squad
-
- (C) Konami 1989
-
-****************************************************************************
-
- PCB Layout
- ----------
-
- GX840 PWB35165
-|--------------------------------------------------------------------------|
-| |
-| U15 Z80B Z80B DSW1 |
-| DSW2 |
-| HM6116AP-15 DSW3 |
-| U16 U21 DSW4 |
-| MN53060KGB 8464A-15L U20 |
-| U17 (QFP148) 8464A-15L |
-| |
-| J |
-| A |
-| M |
-| U18 24.0MHz 051316 Z80B M |
-| A |
-| U83 U34 U19 |
-| MB81C86-55 MB81C86-55 U82 U33 8464A-15L |
-| MB81C86-55 MB81C86-55 U81 U22 |
-| |
-| 051316 |
-| |
-| CN1 CN2 SN76489 |
-| SN76489 |
-| SN76489 |
-| SN76489 |
-| HM6116AP-15 U23 SN76489 |
-| U22 SN76489 VR |
-| |
-|--------------------------------------------------------------------------|
-
- Notes:
- There are numerous wire modificationss connecting pins of U15-U18 to
- various other components on the PCB
-
- MB81C86 - 64kx4 SRAM
- HM6116AP - 2kx8 SRAM
- 8464A - 8kx8 SRAM
- MN53060KGB - Panasonic CMOS gate array (6016 gates)
- 051316 - Konami PSAC
- CN1/CN2 - ROM board connectors
-
-
- ROM Board
- ---------
-
- GX840 PWB451716
- |--------------------------|
- | |
- | U8 |
- | |
- | U3 U7 U10 |
- | |
- | U2 U6 U10 |
- | |
- | U41 U5 U9 |
- | |
- |--------------------------|
-
- Notes:
- All ROMs are 27512 EPROMs
-
-
-To do:
- * Verify layer alignment
- * Deduce unknown DIP switch settings
-
-To verify against original HW:
- * Game has no sprites when you reach level 4 and becomes unplayable
- * Game often hangs (sprites no longer animate, screen scrolls/rotates endlessly) due to a communication breakdown
- Data sent from one CPU to another is occasionally overwritten before the recipient can read the first value
- * Game hangs if you die from hitting a regular enemy at the same time a boss dies
- * Bosses can't kill you directly
- * Cocktail mode is broken
- * UFOs that appear during the boss battle wrap around when leaving the right side of the screen
- * Sometimes a stray, bad explosion sprite appears in the top left corner after you respawn
- * Lives counter is corrupt for > 4 lives
-
-****************************************************************************/
-
-#include "emu.h"
-#include "includes/divebomb.h"
-#include "screen.h"
-#include "speaker.h"
-
-
-
-/*************************************
- *
- * Main CPU
- *
- *************************************/
-
-void divebomb_state::divebomb_fgcpu_map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0xc000, 0xc7ff).ram().w(FUNC(divebomb_state::fgram_w)).share("fgram");
- map(0xe000, 0xffff).ram();
-}
-
-
-void divebomb_state::divebomb_fgcpu_iomap(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x00).w("sn0", FUNC(sn76489_device::write));
- map(0x01, 0x01).w("sn1", FUNC(sn76489_device::write));
- map(0x02, 0x02).w("sn2", FUNC(sn76489_device::write));
- map(0x03, 0x03).w("sn3", FUNC(sn76489_device::write));
- map(0x04, 0x04).w("sn4", FUNC(sn76489_device::write));
- map(0x05, 0x05).w("sn5", FUNC(sn76489_device::write));
- map(0x10, 0x10).r(m_roz2fg_latch, FUNC(generic_latch_8_device::read)).w("fg2roz", FUNC(generic_latch_8_device::write));
- map(0x20, 0x20).r(m_spr2fg_latch, FUNC(generic_latch_8_device::read)).w("fg2spr", FUNC(generic_latch_8_device::write));
- map(0x30, 0x30).portr("IN0");
- map(0x31, 0x31).portr("IN1");
- map(0x32, 0x32).portr("DSW1");
- map(0x33, 0x33).portr("DSW2");
- // 34/35 aren't read but PCB has 4 banks of dips populated, so logically they would map here even if unused
- map(0x34, 0x34).portr("DSW3");
- map(0x35, 0x35).portr("DSW4");
- map(0x36, 0x36).portr("SYSTEM");
- map(0x37, 0x37).r(FUNC(divebomb_state::fgcpu_comm_flags_r));
-}
-
-
-READ8_MEMBER(divebomb_state::fgcpu_comm_flags_r)
-{
- uint8_t result = 0;
-
- if (m_roz2fg_latch->pending_r())
- result |= 1;
- if (m_spr2fg_latch->pending_r())
- result |= 2;
-
- return result;
-}
-
-
-/*************************************
- *
- * Sprite CPU
- *
- *************************************/
-
-void divebomb_state::divebomb_spritecpu_map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0xc000, 0xc7ff).ram().share("spriteram");
- map(0xc800, 0xdfff).nopw();
- map(0xe000, 0xffff).ram();
-}
-
-
-void divebomb_state::divebomb_spritecpu_iomap(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x00).w(FUNC(divebomb_state::spritecpu_port00_w));
- map(0x80, 0x80).r("fg2spr", FUNC(generic_latch_8_device::read)).w(m_spr2fg_latch, FUNC(generic_latch_8_device::write));
-}
-
-
-WRITE8_MEMBER(divebomb_state::spritecpu_port00_w)
-{
- // Written with 0x00 on reset
- // Written with 0x34 7 times in succession on occasion (see PC:0x00E3)
-}
-
-
-/*************************************
- *
- * ROZ CPU
- *
- *************************************/
-
-template<int Chip>
-WRITE8_MEMBER(divebomb_state::rozcpu_wrap_enable_w)
-{
- m_k051316[Chip]->wraparound_enable(!(data & 1));
-}
-
-
-template<int Chip>
-WRITE8_MEMBER(divebomb_state::rozcpu_enable_w)
-{
- m_roz_enable[Chip] = !(data & 1);
-}
-
-
-void divebomb_state::divebomb_rozcpu_map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("rozbank");
- map(0xc000, 0xc7ff).ram().rw(m_k051316[0], FUNC(k051316_device::read), FUNC(k051316_device::write));
- map(0xd000, 0xd7ff).ram().rw(m_k051316[1], FUNC(k051316_device::read), FUNC(k051316_device::write));
- map(0xe000, 0xffff).ram();
-}
-
-
-void divebomb_state::divebomb_rozcpu_iomap(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x00).w(FUNC(divebomb_state::rozcpu_bank_w));
- map(0x10, 0x10).w(FUNC(divebomb_state::rozcpu_wrap_enable_w<1>));
- map(0x12, 0x12).w(FUNC(divebomb_state::rozcpu_enable_w<0>));
- map(0x13, 0x13).w(FUNC(divebomb_state::rozcpu_enable_w<1>));
- map(0x14, 0x14).w(FUNC(divebomb_state::rozcpu_wrap_enable_w<0>));
- map(0x20, 0x2f).w(m_k051316[0], FUNC(k051316_device::ctrl_w));
- map(0x30, 0x3f).w(m_k051316[1], FUNC(k051316_device::ctrl_w));
- map(0x40, 0x40).r("fg2roz", FUNC(generic_latch_8_device::read)).w(m_roz2fg_latch, FUNC(generic_latch_8_device::write));
- map(0x50, 0x50).w(FUNC(divebomb_state::rozcpu_pal_w));
-}
-
-
-WRITE8_MEMBER(divebomb_state::rozcpu_bank_w)
-{
- uint32_t bank = bitswap<8>(data, 4, 5, 6, 7, 3, 2, 1, 0) >> 4;
- m_rozbank->set_entry(bank);
-
- if (data & 0x0f)
- logerror("rozcpu_bank_w %02x\n", data);
-}
-
-
-/*************************************
- *
- * Port definitions
- *
- *************************************/
-
-static INPUT_PORTS_START( divebomb )
- PORT_START("DSW1") // If the first 4 are on it engages freeplay
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2")
- PORT_DIPSETTING( 0x03, "3" )
- PORT_DIPSETTING( 0x02, "5" )
- PORT_DIPSETTING( 0x01, "7" )
- PORT_DIPSETTING( 0x00, "9" )
- PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:3")
- PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) )
- PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:4")
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:6")
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW3")
- PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW3:1" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW3:2" )
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW3:3" )
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW3:4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW3:5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW3:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW3:8" )
-
- PORT_START("DSW4")
- PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW4:1" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW4:2" )
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW4:3" )
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW4:4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW4:5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW4:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW4:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW4:8" )
-
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
-
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
-
- PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-INPUT_PORTS_END
-
-
-
-/*************************************
- *
- * Graphics definitions
- *
- *************************************/
-
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 2,
- { 8,0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
- 8*8*2
-};
-
-
-static const gfx_layout tiles16x16_layout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 24,16,8,0 },
- { STEP8(0,1), STEP8(4*8,1) },
- { STEP16(0,4*16) },
- 16*16*4
-};
-
-
-static GFXDECODE_START( gfx_divebomb )
- GFXDECODE_ENTRY( "fgrom", 0, tiles8x8_layout, 0x400+0x400, 16 )
- GFXDECODE_ENTRY( "sprites", 0, tiles16x16_layout, 0x400+0x400+0x400, 16 )
-GFXDECODE_END
-
-
-
-/*************************************
- *
- * Machine driver
- *
- *************************************/
-
-void divebomb_state::divebomb(machine_config &config)
-{
- Z80(config, m_fgcpu, XTAL1/4); // ?
- m_fgcpu->set_addrmap(AS_PROGRAM, &divebomb_state::divebomb_fgcpu_map);
- m_fgcpu->set_addrmap(AS_IO, &divebomb_state::divebomb_fgcpu_iomap);
-
- Z80(config, m_spritecpu, XTAL1/4); // ?
- m_spritecpu->set_addrmap(AS_PROGRAM, &divebomb_state::divebomb_spritecpu_map);
- m_spritecpu->set_addrmap(AS_IO, &divebomb_state::divebomb_spritecpu_iomap);
-
- Z80(config, m_rozcpu, XTAL1/4); // ?
- m_rozcpu->set_addrmap(AS_PROGRAM, &divebomb_state::divebomb_rozcpu_map);
- m_rozcpu->set_addrmap(AS_IO, &divebomb_state::divebomb_rozcpu_iomap);
-
- config.set_perfect_quantum(m_fgcpu);
-
- INPUT_MERGER_ANY_HIGH(config, m_fgcpu_irq).output_handler().set_inputline(m_fgcpu, INPUT_LINE_IRQ0);
-
- GENERIC_LATCH_8(config, "fg2spr").data_pending_callback().set_inputline(m_spritecpu, INPUT_LINE_IRQ0);
-
- GENERIC_LATCH_8(config, "fg2roz").data_pending_callback().set_inputline(m_rozcpu, INPUT_LINE_IRQ0);
-
- GENERIC_LATCH_8(config, m_spr2fg_latch);
- m_spr2fg_latch->data_pending_callback().set(m_fgcpu_irq, FUNC(input_merger_any_high_device::in_w<0>));
-
- GENERIC_LATCH_8(config, m_roz2fg_latch);
- m_roz2fg_latch->data_pending_callback().set(m_fgcpu_irq, FUNC(input_merger_any_high_device::in_w<1>));
-
- K051316(config, m_k051316[0], 0);
- m_k051316[0]->set_palette(m_palette);
- m_k051316[0]->set_bpp(8);
- m_k051316[0]->set_wrap(0);
- m_k051316[0]->set_offsets(-88, -16);
- m_k051316[0]->set_zoom_callback(FUNC(divebomb_state::zoom_callback_1));
-
- K051316(config, m_k051316[1], 0);
- m_k051316[1]->set_palette(m_palette);
- m_k051316[1]->set_bpp(8);
- m_k051316[1]->set_wrap(0);
- m_k051316[1]->set_offsets(-88, -16);
- m_k051316[1]->set_zoom_callback(FUNC(divebomb_state::zoom_callback_2));
-
- MCFG_MACHINE_START_OVERRIDE(divebomb_state, divebomb)
- MCFG_MACHINE_RESET_OVERRIDE(divebomb_state, divebomb)
-
- MCFG_VIDEO_START_OVERRIDE(divebomb_state, divebomb)
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1-32);
- screen.set_screen_update(FUNC(divebomb_state::screen_update_divebomb));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_fgcpu, INPUT_LINE_NMI);
- screen.screen_vblank().append_inputline(m_spritecpu, INPUT_LINE_NMI);
- screen.screen_vblank().append_inputline(m_rozcpu, INPUT_LINE_NMI);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_divebomb);
- PALETTE(config, m_palette, FUNC(divebomb_state::divebomb_palette), 0x400+0x400+0x400+0x100);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- // All frequencies unverified
- SN76489(config, "sn0", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn1", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn2", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn3", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn4", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn5", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
-}
-
-
-
-/*************************************
- *
- * Driver initialization
- *
- *************************************/
-
-ROM_START( divebomb )
- ROM_REGION( 0x08000, "fgcpu", 0 )
- ROM_LOAD( "u20.27256", 0x00000, 0x08000, CRC(89a30c82) SHA1(ecb3dcc00192b9646dab55ec6c102ab1d2e403e8) )
-
- ROM_REGION( 0x08000, "spritecpu", 0 )
- ROM_LOAD( "u21.27256", 0x00000, 0x08000, CRC(3896d3f6) SHA1(86d10c907bf00977656d8fa426b2f1ac211acdb3) )
-
- ROM_REGION( 0x08000, "rozcpu", 0 )
- ROM_LOAD( "u19.27256", 0x00000, 0x08000, CRC(16e26fb9) SHA1(9602c79f947f5267e5f4f4f8dedc4697861a519b) )
-
- ROM_REGION( 0x40000, "rozcpudata", 0 ) // on sub-board
- ROM_LOAD( "u9.27512", 0x00000, 0x10000, CRC(c842f831) SHA1(badb38908a285e54b85e369342fd6ecb8fd68bbb) )
- ROM_LOAD( "u10.27512", 0x10000, 0x10000, CRC(c77f3574) SHA1(06b7576d5949906ee3209c011cd30e7066bb20cc) )
- ROM_LOAD( "u11.27512", 0x20000, 0x10000, CRC(8d46be7d) SHA1(7751df1f39b208169f04a5b904cb63e9fb53bba8) )
- // u12 not populated
-
- ROM_REGION( 0x10000, "fgrom", 0 )
- ROM_LOAD16_BYTE( "u22.27256", 0x00000, 0x08000, CRC(f816f9c5) SHA1(b8e136463a1b4c81960c6b7350472d82af0fb1fb) )
- ROM_LOAD16_BYTE( "u23.27256", 0x00001, 0x08000, CRC(d2600570) SHA1(a7f7e182670e7b95321c4ec8278ce915bbe2b5ca) )
-
- ROM_REGION( 0x80000, "sprites", 0 )
- ROM_LOAD32_BYTE( "u15.27c100", 0x00000, 0x20000, CRC(ccba7fa0) SHA1(5eb4c1e458e7810e0f9db92946474d6da65f1a1b) )
- ROM_LOAD32_BYTE( "u16.27c100", 0x00001, 0x20000, CRC(16891fef) SHA1(a4723958509bccc73138306e58c355325ec342a3) )
- ROM_LOAD32_BYTE( "u17.27c100", 0x00002, 0x20000, CRC(f4cbc97f) SHA1(1e13bc18db128575ca8e6998e9dd6f7dc37a99b8) )
- ROM_LOAD32_BYTE( "u18.27c100", 0x00003, 0x20000, CRC(91ab9d89) SHA1(98454df4638bb831babb1796b095169851e6cf40) )
-
- ROM_REGION( 0x30000, "k051316_1", ROMREGION_INVERT ) // on sub-board
- ROM_LOAD( "u1.27512", 0x00000, 0x10000, CRC(99af1e18) SHA1(5d63130313fdd85c58e1d6b59e42b75a15328a6b) )
- ROM_LOAD( "u2.27512", 0x10000, 0x10000, CRC(99c8d516) SHA1(6205907bd526181542f4d58d442667595aec9730) )
- ROM_LOAD( "u3.27512", 0x20000, 0x10000, CRC(5ab4af3c) SHA1(ab8632e37a42f2f0db9b22c8577c4f09718ccc7c) )
- // u4 not populated
-
- ROM_REGION( 0x40000, "k051316_2", ROMREGION_INVERT ) // on sub-board
- ROM_LOAD( "u5.27512", 0x00000, 0x10000, CRC(6726d022) SHA1(314fcec87f3bf335356b24224158233d91012675) )
- ROM_LOAD( "u6.27512", 0x10000, 0x10000, CRC(756b8a12) SHA1(2869c18ef1592d00dbc340facac2002d21adf6bc) )
- ROM_LOAD( "u7.27512", 0x20000, 0x10000, CRC(01c07d84) SHA1(45e05f15e94a32adbd488a4f77a9619e7e6b63f3) )
- ROM_LOAD( "u8.27512", 0x30000, 0x10000, CRC(5b9e7caa) SHA1(85510c0b861bad6a1411afc1d628bc7c448c9fef) )
-
- // there are 12 PROMs, 4x banks of 3
- ROM_REGION( 0xc00, "fg_proms", 0 ) // text layer palette
- ROM_LOAD( "u35.mb7122.bin", 0x800, 0x400, CRC(e890259d) SHA1(f96e00da6de3b868e50f2347b83f8e5727b85d9b) )
- ROM_LOAD( "u36.mb7122.bin", 0x400, 0x400, CRC(0c1ecdb5) SHA1(4ba9e283c747d6a760fe2e0a8b2bfdfcc55a3969) )
- ROM_LOAD( "u37.mb7122.bin", 0x000, 0x400, CRC(55c17465) SHA1(153e99a09604467ddd8c641d60c5f1b8d9a205b4) )
-
- ROM_REGION( 0xc00, "k051316_1_pr", 0 ) // front roz ( k051316_1 )
- // looks like banks 0,1,2 are valid
- ROM_LOAD( "u29.mb7122.bin", 0x000, 0x400, CRC(8b3d60d2) SHA1(a9ac4d3dd5e72522717dd18c32d3f88b75bb077c) ) // the last 0x100 block is invalid (copy of data in u33)
- ROM_LOAD( "u30.mb7122.bin", 0x400, 0x400, CRC(0aeb1a88) SHA1(7b00e85ced210a5f7dfc100c15baa9e1735c7c80) ) // the last 0x100 block is empty
- ROM_LOAD( "u31.mb7122.bin", 0x800, 0x400, CRC(75cf5f3d) SHA1(ec02b99ab65e561596b773918569b28313f21835) ) // the last 0x100 block is invalid (copy of data in u33)
-
- ROM_REGION( 0xc00, "k051316_2_pr", 0 ) // back roz ( k051316_2 )
- // 4 valid palettes but our code is only using 1
- ROM_LOAD( "u34.mb7122.bin", 0x000, 0x400, CRC(e0e2d93b) SHA1(9043929520abde15727e9333c153cf97104c9003) )
- ROM_LOAD( "u33.mb7122.bin", 0x400, 0x400, CRC(4df75f4f) SHA1(0157d6e268cdd797622c712648eb2e88214b12d9) )
- ROM_LOAD( "u32.mb7122.bin", 0x800, 0x400, CRC(e2e4b443) SHA1(e97a4e2988e29f992c5dec6f817a783b14535742) )
-
- ROM_REGION( 0x300, "spr_proms", 0 ) // sprite layer palette
- ROM_LOAD( "u83.mb7114.bin", 0x000, 0x100, CRC(d216110d) SHA1(3de935dbf876f82864b8b69049c8681101619411) )
- ROM_LOAD( "u82.mb7114.bin", 0x100, 0x100, CRC(52637774) SHA1(919727e337a716dbd18b51e26e45025b82aeba79) )
- ROM_LOAD( "u81.mb7114.bin", 0x200, 0x100, CRC(c59b0857) SHA1(aea4cb8d1ab59b54f90edb96d4ac42b1dd6bdcbe) )
-ROM_END
-
-
-
-/*************************************
- *
- * Driver initialization
- *
- *************************************/
-
-MACHINE_START_MEMBER(divebomb_state, divebomb)
-{
- m_rozbank->configure_entries(0, 16, memregion("rozcpudata")->base(), 0x4000);
-
- save_item(NAME(m_roz_enable));
- save_item(NAME(m_roz_pal));
-}
-
-
-MACHINE_RESET_MEMBER(divebomb_state, divebomb)
-{
- for (int chip = 0; chip < 2; chip++)
- {
- m_roz_enable[chip] = false;
- m_k051316[chip]->wraparound_enable(false);
- }
- m_fgcpu_irq->in_w<0>(CLEAR_LINE);
- m_fgcpu_irq->in_w<1>(CLEAR_LINE);
-}
-
-
-
-/*************************************
- *
- * Game driver(s)
- *
- *************************************/
-
-// According to a flyer, the world release was to be called 'Gaia'. The Gaia title graphics are present in the ROMs.
-GAME( 1989, divebomb, 0, divebomb, divebomb, divebomb_state, empty_init, ROT270, "Konami", "Kyuukoukabakugekitai - Dive Bomber Squad (Japan, prototype)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )