From 976ec5da2807deb976478d10d40f6ad51b39d02b Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 1 Apr 2022 17:59:14 +0200 Subject: contra.cpp, gng.cpp: finders and other small cleanups --- scripts/target/mame/arcade.lua | 4 - src/mame/drivers/contra.cpp | 677 +++++++++++++++++++++++++------------ src/mame/drivers/gng.cpp | 752 ++++++++++++++++++++++++++--------------- src/mame/drivers/goal92.cpp | 33 +- src/mame/includes/contra.h | 100 ------ src/mame/includes/gng.h | 73 ---- src/mame/video/contra.cpp | 300 ---------------- src/mame/video/gng.cpp | 147 -------- 8 files changed, 961 insertions(+), 1125 deletions(-) delete mode 100644 src/mame/includes/contra.h delete mode 100644 src/mame/includes/gng.h delete mode 100644 src/mame/video/contra.cpp delete mode 100644 src/mame/video/gng.cpp diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index d4b058c4ecb..3f7cab00b11 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -1554,8 +1554,6 @@ files { MAME_DIR .. "src/mame/drivers/fcrash.cpp", MAME_DIR .. "src/mame/includes/fcrash.h", MAME_DIR .. "src/mame/drivers/gng.cpp", - MAME_DIR .. "src/mame/includes/gng.h", - MAME_DIR .. "src/mame/video/gng.cpp", MAME_DIR .. "src/mame/drivers/gunsmoke.cpp", MAME_DIR .. "src/mame/includes/gunsmoke.h", MAME_DIR .. "src/mame/video/gunsmoke.cpp", @@ -2435,8 +2433,6 @@ files { MAME_DIR .. "src/mame/includes/combatsc.h", MAME_DIR .. "src/mame/video/combatsc.cpp", MAME_DIR .. "src/mame/drivers/contra.cpp", - MAME_DIR .. "src/mame/includes/contra.h", - MAME_DIR .. "src/mame/video/contra.cpp", MAME_DIR .. "src/mame/drivers/crimfght.cpp", MAME_DIR .. "src/mame/includes/crimfght.h", MAME_DIR .. "src/mame/video/crimfght.cpp", diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp index 28c0a571725..db1de4b2622 100644 --- a/src/mame/drivers/contra.cpp +++ b/src/mame/drivers/contra.cpp @@ -19,29 +19,311 @@ Dip locations and factory settings verified with manual ***************************************************************************/ #include "emu.h" -#include "includes/contra.h" + #include "includes/konamipt.h" +#include "machine/k007452.h" +#include "video/k007121.h" #include "cpu/m6809/hd6309.h" #include "cpu/m6809/m6809.h" #include "machine/gen_latch.h" -#include "machine/k007452.h" #include "sound/ymopm.h" +#include "video/bufsprite.h" + +#include "emupal.h" +#include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +namespace { + +class contra_state : public driver_device +{ +public: + contra_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_cram(*this, "cram%u", 0U), + m_vram(*this, "vram%u", 0U), + m_mainbank(*this, "mainbank"), + m_buffered_spriteram(*this, "spriteram%u", 1U), + m_audiocpu(*this, "audiocpu"), + m_k007121(*this, "k007121_%u", 1U), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), + m_palette(*this, "palette") + { } + + void contra(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: + // memory pointers + required_shared_ptr_array m_cram; + required_shared_ptr_array m_vram; + required_memory_bank m_mainbank; + + // video-related + tilemap_t *m_tilemap[3]{}; + rectangle m_clip[3]{}; + + // devices + required_device_array m_buffered_spriteram; + required_device m_audiocpu; + required_device_array m_k007121; + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; + + void bankswitch_w(uint8_t data); + void sh_irqtrigger_w(uint8_t data); + void sirq_clear_w(uint8_t data); + void coin_counter_w(uint8_t data); + template void vram_w(offs_t offset, uint8_t data); + template void cram_w(offs_t offset, uint8_t data); + template void K007121_ctrl_w(offs_t offset, uint8_t data); + template TILE_GET_INFO_MEMBER(get_tile_info); + TILE_GET_INFO_MEMBER(get_tx_tile_info); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(interrupt); + template void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap); + + void main_map(address_map &map); + void sound_map(address_map &map); +}; + + +// video + +/*************************************************************************** +** +** Contra has palette RAM, but it also has four lookup table PROMs +** +** 0 sprites #0 +** 1 tiles #0 +** 2 sprites #1 +** 3 tiles #1 +** +***************************************************************************/ + +void contra_state::palette(palette_device &palette) const +{ + uint8_t const *const color_prom = memregion("proms")->base(); + + for (int chip = 0; chip < 2; chip++) + { + for (int pal = 0; pal < 8; pal++) + { + int const clut = (chip << 1) | (pal & 1); + + for (int i = 0; i < 0x100; i++) + { + uint8_t ctabentry; + + if (((pal & 0x01) == 0) && (color_prom[(clut << 8) | i] == 0)) + ctabentry = 0; + else + ctabentry = (pal << 4) | (color_prom[(clut << 8) | i] & 0x0f); + + palette.set_pen_indirect((chip << 11) | (pal << 8) | i, ctabentry); + } + } + } +} + + + +/*************************************************************************** + + Callbacks for the TileMap code + +***************************************************************************/ + +template +TILE_GET_INFO_MEMBER(contra_state::get_tile_info) +{ + uint8_t ctrl_3 = m_k007121[Which]->ctrlram_r(3); + uint8_t ctrl_4 = m_k007121[Which]->ctrlram_r(4); + uint8_t ctrl_5 = m_k007121[Which]->ctrlram_r(5); + uint8_t ctrl_6 = m_k007121[Which]->ctrlram_r(6); + int attr = m_cram[Which][tile_index]; + int bit0 = (ctrl_5 >> 0) & 0x03; + int bit1 = (ctrl_5 >> 2) & 0x03; + int bit2 = (ctrl_5 >> 4) & 0x03; + int bit3 = (ctrl_5 >> 6) & 0x03; + int bank = ((attr & 0x80) >> 7) | + ((attr >> (bit0 + 2)) & 0x02) | + ((attr >> (bit1 + 1)) & 0x04) | + ((attr >> (bit2 )) & 0x08) | + ((attr >> (bit3 - 1)) & 0x10) | + ((ctrl_3 & 0x01) << 5); + int mask = (ctrl_4 & 0xf0) >> 4; + + bank = (bank & ~(mask << 1)) | ((ctrl_4 & mask) << 1); + + tileinfo.set(Which, + m_vram[Which][tile_index] + bank * 256, + ((ctrl_6 & 0x30) * 2 + 16) + (attr & 7), + 0); +} + + +TILE_GET_INFO_MEMBER(contra_state::get_tx_tile_info) +{ + uint8_t ctrl_5 = m_k007121[0]->ctrlram_r(5); + uint8_t ctrl_6 = m_k007121[0]->ctrlram_r(6); + int attr = m_cram[2][tile_index]; + int bit0 = (ctrl_5 >> 0) & 0x03; + int bit1 = (ctrl_5 >> 2) & 0x03; + int bit2 = (ctrl_5 >> 4) & 0x03; + int bit3 = (ctrl_5 >> 6) & 0x03; + int bank = ((attr & 0x80) >> 7) | + ((attr >> (bit0 + 2)) & 0x02) | + ((attr >> (bit1 + 1)) & 0x04) | + ((attr >> (bit2 )) & 0x08) | + ((attr >> (bit3 - 1)) & 0x10); + + tileinfo.set(0, + m_vram[2][tile_index] + bank * 256, + ((ctrl_6 & 0x30) * 2 + 16) + (attr & 7), + 0); +} + + +/*************************************************************************** + + Start the video hardware emulation. + +***************************************************************************/ + +void contra_state::video_start() +{ + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + + m_clip[1] = m_screen->visible_area(); + m_clip[1].min_x += 40; + + m_clip[0] = m_clip[1]; + m_clip[2] = m_screen->visible_area(); + m_clip[2].max_x = 39; + m_clip[2].min_x = 0; -INTERRUPT_GEN_MEMBER(contra_state::contra_interrupt) + m_tilemap[0]->set_transparent_pen(0); +} + + +/*************************************************************************** + + Memory handlers + +***************************************************************************/ + +template +void contra_state::vram_w(offs_t offset, uint8_t data) +{ + m_vram[Which][offset] = data; + m_tilemap[Which]->mark_tile_dirty(offset); +} + +template +void contra_state::cram_w(offs_t offset, uint8_t data) { - if (m_k007121_1->ctrlram_r(7) & 0x02) + m_cram[Which][offset] = data; + m_tilemap[Which]->mark_tile_dirty(offset); +} + +template +void contra_state::K007121_ctrl_w(offs_t offset, uint8_t data) +{ + uint8_t ctrl_6 = m_k007121[Which]->ctrlram_r(6); + + if (offset == 3) + { + if ((data & 0x8) == 0) + m_buffered_spriteram[Which]->copy(0x800, 0x800); + else + m_buffered_spriteram[Which]->copy(0x000, 0x800); + } + + if (offset == 6) + { + if (ctrl_6 != data) + m_tilemap[Which]->mark_all_dirty(); + } + + if (offset == 7) + m_tilemap[Which]->set_flip((data & 0x08) ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); + + m_k007121[Which]->ctrl_w(offset, data); +} + + +/*************************************************************************** + + Display Refresh + +***************************************************************************/ + +template +void contra_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap) +{ + int base_color = (m_k007121[Which]->ctrlram_r(6) & 0x30) * 2; + + m_k007121[Which]->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(Which), *m_palette, m_buffered_spriteram[Which]->buffer(), base_color, 40, 0, priority_bitmap, (uint32_t)-1); +} + +uint32_t contra_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + uint8_t ctrl_1_0 = m_k007121[0]->ctrlram_r(0); + uint8_t ctrl_1_2 = m_k007121[0]->ctrlram_r(2); + uint8_t ctrl_2_0 = m_k007121[1]->ctrlram_r(0); + uint8_t ctrl_2_2 = m_k007121[1]->ctrlram_r(2); + rectangle bg_finalclip = m_clip[1]; + rectangle fg_finalclip = m_clip[0]; + rectangle tx_finalclip = m_clip[2]; + + bg_finalclip &= cliprect; + fg_finalclip &= cliprect; + tx_finalclip &= cliprect; + + m_tilemap[0]->set_scrollx(0, ctrl_1_0 - 40); + m_tilemap[0]->set_scrolly(0, ctrl_1_2); + m_tilemap[1]->set_scrollx(0, ctrl_2_0 - 40); + m_tilemap[1]->set_scrolly(0, ctrl_2_2); + + m_tilemap[1]->draw(screen, bitmap, bg_finalclip, 0 ,0); + m_tilemap[0]->draw(screen, bitmap, fg_finalclip, 0 ,0); + draw_sprites<0>(bitmap, cliprect, screen.priority()); + draw_sprites<1>(bitmap, cliprect, screen.priority()); + m_tilemap[2]->draw(screen, bitmap, tx_finalclip, 0 ,0); + return 0; +} + + +// machine + +INTERRUPT_GEN_MEMBER(contra_state::interrupt) +{ + if (m_k007121[0]->ctrlram_r(7) & 0x02) device.execute().set_input_line(HD6309_IRQ_LINE, HOLD_LINE); } -void contra_state::contra_bankswitch_w(uint8_t data) +void contra_state::bankswitch_w(uint8_t data) { - membank("bank1")->set_entry(data & 0x0f); + m_mainbank->set_entry(data & 0x0f); } -void contra_state::contra_sh_irqtrigger_w(uint8_t data) +void contra_state::sh_irqtrigger_w(uint8_t data) { m_audiocpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); } @@ -51,18 +333,15 @@ void contra_state::sirq_clear_w(uint8_t data) m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); } -void contra_state::contra_coin_counter_w(uint8_t data) +void contra_state::coin_counter_w(uint8_t data) { - if (data & 0x01) - machine().bookkeeping().coin_counter_w(0, data & 0x01); - - if (data & 0x02) - machine().bookkeeping().coin_counter_w(1, (data & 0x02) >> 1); + machine().bookkeeping().coin_counter_w(0, data & 0x01); + machine().bookkeeping().coin_counter_w(1, data & 0x02); } -void contra_state::contra_map(address_map &map) +void contra_state::main_map(address_map &map) { - map(0x0000, 0x0007).w(FUNC(contra_state::contra_K007121_ctrl_0_w)); + map(0x0000, 0x0007).w(FUNC(contra_state::K007121_ctrl_w<0>)); map(0x0008, 0x000f).rw("k007452", FUNC(k007452_device::read), FUNC(k007452_device::write)); map(0x0010, 0x0010).portr("SYSTEM"); map(0x0011, 0x0011).portr("P1"); @@ -72,39 +351,39 @@ void contra_state::contra_map(address_map &map) map(0x0015, 0x0015).portr("DSW2"); map(0x0016, 0x0016).portr("DSW3"); - map(0x0018, 0x0018).w(FUNC(contra_state::contra_coin_counter_w)); - map(0x001a, 0x001a).w(FUNC(contra_state::contra_sh_irqtrigger_w)); + map(0x0018, 0x0018).w(FUNC(contra_state::coin_counter_w)); + map(0x001a, 0x001a).w(FUNC(contra_state::sh_irqtrigger_w)); map(0x001c, 0x001c).w("soundlatch", FUNC(generic_latch_8_device::write)); - map(0x001e, 0x001e).nopw(); /* ? */ - map(0x0060, 0x0067).w(FUNC(contra_state::contra_K007121_ctrl_1_w)); + map(0x001e, 0x001e).nopw(); // ? + map(0x0060, 0x0067).w(FUNC(contra_state::K007121_ctrl_w<1>)); map(0x0c00, 0x0cff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); map(0x1000, 0x1fff).ram(); - map(0x2000, 0x23ff).ram().w(FUNC(contra_state::contra_fg_cram_w)).share("fg_cram"); - map(0x2400, 0x27ff).ram().w(FUNC(contra_state::contra_fg_vram_w)).share("fg_vram"); - map(0x2800, 0x2bff).ram().w(FUNC(contra_state::contra_text_cram_w)).share("tx_cram"); - map(0x2c00, 0x2fff).ram().w(FUNC(contra_state::contra_text_vram_w)).share("tx_vram"); - map(0x3000, 0x3fff).ram().share("spriteram"); - map(0x4000, 0x43ff).ram().w(FUNC(contra_state::contra_bg_cram_w)).share("bg_cram"); - map(0x4400, 0x47ff).ram().w(FUNC(contra_state::contra_bg_vram_w)).share("bg_vram"); + map(0x2000, 0x23ff).ram().w(FUNC(contra_state::cram_w<0>)).share(m_cram[0]); + map(0x2400, 0x27ff).ram().w(FUNC(contra_state::vram_w<0>)).share(m_vram[0]); + map(0x2800, 0x2bff).ram().w(FUNC(contra_state::cram_w<2>)).share(m_cram[2]); + map(0x2c00, 0x2fff).ram().w(FUNC(contra_state::vram_w<2>)).share(m_vram[2]); + map(0x3000, 0x3fff).ram().share("spriteram1"); + map(0x4000, 0x43ff).ram().w(FUNC(contra_state::cram_w<1>)).share(m_cram[1]); + map(0x4400, 0x47ff).ram().w(FUNC(contra_state::vram_w<1>)).share(m_vram[1]); map(0x4800, 0x4fff).ram(); - map(0x5000, 0x5fff).ram().share("spriteram_2"); + map(0x5000, 0x5fff).ram().share("spriteram2"); - map(0x6000, 0x7fff).bankr("bank1"); - map(0x7000, 0x7000).w(FUNC(contra_state::contra_bankswitch_w)); + map(0x6000, 0x7fff).bankr(m_mainbank); + map(0x7000, 0x7000).w(FUNC(contra_state::bankswitch_w)); - map(0x8000, 0xffff).rom(); + map(0x8000, 0xffff).rom().region("maincpu", 0x18000); } void contra_state::sound_map(address_map &map) { map(0x0000, 0x0000).r("soundlatch", FUNC(generic_latch_8_device::read)); map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); - map(0x4000, 0x4000).w(FUNC(contra_state::sirq_clear_w)); /* read triggers irq reset and latch read (in the hardware only). */ + map(0x4000, 0x4000).w(FUNC(contra_state::sirq_clear_w)); // read triggers irq reset and latch read (in the hardware only). map(0x6000, 0x67ff).ram(); - map(0x8000, 0xffff).rom(); + map(0x8000, 0xffff).rom().region("audiocpu", 0); } @@ -121,7 +400,7 @@ static INPUT_PORTS_START( contra ) PORT_START("DSW1") KONAMI_COINAGE_LOC(DEF_STR( Free_Play ), "No Coin B", SW1) - /* "No Coin B" = coins produce sound, but no effect on coin counter */ + // "No Coin B" = coins produce sound, but no effect on coin counter PORT_START("DSW2") PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") @@ -165,40 +444,27 @@ static INPUT_PORTS_START( gryzor ) PORT_INCLUDE( contra ) PORT_MODIFY("DSW2") - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:3") /* Not Used according to manual, used in gryzor sets */ + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:3") // Not Used according to manual, used in gryzor sets PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) ) PORT_MODIFY("DSW3") - PORT_DIPNAME( 0x02, 0x02, "Upright Controls" ) PORT_DIPLOCATION("SW3:2") /* Not Used according to manual, used in gryzor sets */ + PORT_DIPNAME( 0x02, 0x02, "Upright Controls" ) PORT_DIPLOCATION("SW3:2") // Not Used according to manual, used in gryzor sets PORT_DIPSETTING( 0x02, DEF_STR( Single ) ) PORT_DIPSETTING( 0x00, DEF_STR( Dual ) ) INPUT_PORTS_END -static const gfx_layout gfxlayout = -{ - 8,8, - 0x4000, - 4, - { 0, 1, 2, 3 }, - { 0, 4, 8, 12, 16, 20, 24, 28 }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, - 32*8 -}; - static GFXDECODE_START( gfx_contra ) - GFXDECODE_ENTRY( "gfx1", 0, gfxlayout, 0, 8*16 ) - GFXDECODE_ENTRY( "gfx2", 0, gfxlayout, 8*16*16, 8*16 ) + GFXDECODE_ENTRY( "k007121_1", 0, gfx_8x8x4_packed_msb, 0, 8*16 ) + GFXDECODE_ENTRY( "k007121_2", 0, gfx_8x8x4_packed_msb, 8*16*16, 8*16 ) GFXDECODE_END void contra_state::machine_start() { - uint8_t *ROM = memregion("maincpu")->base(); - - membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x2000); + m_mainbank->configure_entries(0, 16, memregion("maincpu")->base(), 0x2000); } void contra_state::machine_reset() @@ -208,40 +474,44 @@ void contra_state::machine_reset() void contra_state::contra(machine_config &config) { - /* basic machine hardware */ - HD6309E(config, m_maincpu, XTAL(24'000'000) / 8); /* (HD63C09EP) */ - m_maincpu->set_addrmap(AS_PROGRAM, &contra_state::contra_map); - m_maincpu->set_vblank_int("screen", FUNC(contra_state::contra_interrupt)); + // basic machine hardware + HD6309E(config, m_maincpu, XTAL(24'000'000) / 8); // (HD63C09EP) + m_maincpu->set_addrmap(AS_PROGRAM, &contra_state::main_map); + m_maincpu->set_vblank_int("screen", FUNC(contra_state::interrupt)); - MC6809E(config, m_audiocpu, XTAL(3'579'545) / 2 ); /* (HD68B09EP) */ + MC6809E(config, m_audiocpu, XTAL(3'579'545) / 2); // (HD68B09EP) m_audiocpu->set_addrmap(AS_PROGRAM, &contra_state::sound_map); - config.set_maximum_quantum(attotime::from_hz(6000)); /* enough for the sound CPU to read all commands */ + config.set_maximum_quantum(attotime::from_hz(6000)); // enough for the sound CPU to read all commands KONAMI_007452_MATH(config, "k007452"); - /* video hardware */ + // video hardware + BUFFERED_SPRITERAM8(config, m_buffered_spriteram[0]); + + BUFFERED_SPRITERAM8(config, m_buffered_spriteram[1]); + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate m_screen->set_size(37*8, 32*8); m_screen->set_visarea(0*8, 35*8-1, 2*8, 30*8-1); - m_screen->set_screen_update(FUNC(contra_state::screen_update_contra)); + m_screen->set_screen_update(FUNC(contra_state::screen_update)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_contra); - PALETTE(config, m_palette, FUNC(contra_state::contra_palette)); + PALETTE(config, m_palette, FUNC(contra_state::palette)); m_palette->set_format(palette_device::xBGR_555, 2 * 8 * 16 * 16); m_palette->set_indirect_entries(128); m_palette->set_endianness(ENDIANNESS_LITTLE); - K007121(config, m_k007121_1, 0); - m_k007121_1->set_palette_tag(m_palette); - K007121(config, m_k007121_2, 0); - m_k007121_2->set_palette_tag(m_palette); + K007121(config, m_k007121[0], 0); + m_k007121[0]->set_palette_tag(m_palette); + K007121(config, m_k007121[1], 0); + m_k007121[1]->set_palette_tag(m_palette); - /* sound hardware */ + // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -252,70 +522,67 @@ void contra_state::contra(machine_config &config) ROM_START( contra ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "633m03.18a", 0x20000, 0x08000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "633i02.17a", 0x10000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "633i02.17a", 0x00000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) + ROM_LOAD( "633m03.18a", 0x10000, 0x10000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "633e01.12a", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) - ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_REGION( 0x80000, "k007121_1", 0 ) ROM_LOAD16_BYTE( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) ) ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) - ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_REGION( 0x80000, "k007121_2", 0 ) ROM_LOAD16_BYTE( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_REGION( 0x0500, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_REGION( 0x0001, "pals", 0 ) - ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8A-2CN */ + ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8A-2CN ROM_END ROM_START( contra1 ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "633i03.18a", 0x20000, 0x08000, CRC(7fc0d8cf) SHA1(cf1cf15646a4e5dc72671e957bc51ca44d30995c) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "633i02.17a", 0x10000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "633i02.17a", 0x00000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) + ROM_LOAD( "633i03.18a", 0x10000, 0x10000, CRC(7fc0d8cf) SHA1(cf1cf15646a4e5dc72671e957bc51ca44d30995c) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "633e01.12a", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) - ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_REGION( 0x80000, "k007121_1", 0 ) ROM_LOAD16_BYTE( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) ) ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) - ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_REGION( 0x80000, "k007121_2", 0 ) ROM_LOAD16_BYTE( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_REGION( 0x0001, "pals", 0 ) - ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8A-2CN */ + ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8A-2CN ROM_END ROM_START( contrae ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "633_e03.18a", 0x20000, 0x08000, CRC(7ebdb314) SHA1(b42c032cce7ae0c9b3eea6a41b7ffa5cb7fced5d) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "633_e02.17a", 0x10000, 0x10000, CRC(9d5ebe66) SHA1(5218426e1494b4f6dec667f1ade7ada13aa04f2b) ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "633_e02.17a", 0x00000, 0x10000, CRC(9d5ebe66) SHA1(5218426e1494b4f6dec667f1ade7ada13aa04f2b) ) + ROM_LOAD( "633_e03.18a", 0x10000, 0x10000, CRC(7ebdb314) SHA1(b42c032cce7ae0c9b3eea6a41b7ffa5cb7fced5d) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "633e01.12a", 0x000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) - // this PCB used official Konami riser-boards in place of the mask roms - ROM_REGION( 0x80000, "gfx1", 0 ) + // this PCB used official Konami riser-boards in place of the mask ROMs + ROM_REGION( 0x80000, "k007121_1", 0 ) ROM_LOAD16_BYTE( "633_e04_a.7d", 0x00000, 0x10000, CRC(e027f330) SHA1(e3480c0ed9f5ed5df829e66eb72e01ea39d5fca3) ) ROM_LOAD16_BYTE( "633_e04_b.7d", 0x20000, 0x10000, CRC(a71230f5) SHA1(c2c92b42a04adbb4c7ba3d4632b9a9db0555840e) ) ROM_LOAD16_BYTE( "633_e04_c.7d", 0x40000, 0x10000, CRC(0b103d01) SHA1(95e7feb7103d71b43ba921b7a376a2faf642621b) ) @@ -325,7 +592,7 @@ ROM_START( contrae ) ROM_LOAD16_BYTE( "633_e05_c.7f", 0x40001, 0x10000, CRC(acba86bf) SHA1(c248c837b1f8093bcaf465b0c75b67f1f67a3f61) ) ROM_LOAD16_BYTE( "633_e05_d.7f", 0x60001, 0x10000, CRC(59cf234d) SHA1(4a6bb30789e581c0600c55d8e8fba778e30ba299) ) - ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_REGION( 0x80000, "k007121_2", 0 ) ROM_LOAD16_BYTE( "633_e06_a.16d", 0x00000, 0x10000, CRC(030079c5) SHA1(3f93e05e9df0a9dde570b771e04b719cf0ace967) ) ROM_LOAD16_BYTE( "633_e06_b.16d", 0x20000, 0x10000, CRC(e17d5807) SHA1(15ebbf62d026cc8ac75c9877304458cbc0c5d5e0) ) ROM_LOAD16_BYTE( "633_e06_c.16d", 0x40000, 0x10000, CRC(7d6a28cd) SHA1(9fbbe0460406bb8b3e2e572c4d5a2f8be4ba9c2e) ) @@ -336,136 +603,131 @@ ROM_START( contrae ) ROM_LOAD16_BYTE( "633_e07_d.16f", 0x60001, 0x10000, CRC(cfab0988) SHA1(3961bcbc3093b787211ab2815914f90a89df78b1) ) ROM_REGION( 0x0500, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633e10.18g", 0x0200, 0x0100, CRC(e782c494) SHA1(9459e721a4361fc4fbace3a017211f0199dee24d) ) /* 007121 #1 sprite lookup table */ // earlier rev - ROM_LOAD( "633e11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633e10.18g", 0x0200, 0x0100, CRC(e782c494) SHA1(9459e721a4361fc4fbace3a017211f0199dee24d) ) // 007121 #1 sprite lookup table // earlier rev + ROM_LOAD( "633e11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_REGION( 0x0001, "pals", 0 ) - ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8A-2CN */ + ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8A-2CN ROM_END ROM_START( contraj ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "633n03.18a", 0x20000, 0x08000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "633k02.17a", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "633k02.17a", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) + ROM_LOAD( "633n03.18a", 0x10000, 0x10000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "633e01.12a", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) - ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_REGION( 0x80000, "k007121_1", 0 ) ROM_LOAD16_BYTE( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) ) ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) - ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_REGION( 0x80000, "k007121_2", 0 ) ROM_LOAD16_BYTE( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_REGION( 0x0001, "pals", 0 ) - ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8A-2CN */ + ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8A-2CN ROM_END ROM_START( contraj1 ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "633k03.18a", 0x20000, 0x08000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "633k02.17a", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "633k02.17a", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) + ROM_LOAD( "633k03.18a", 0x10000, 0x10000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "633e01.12a", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) - ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_REGION( 0x80000, "k007121_1", 0 ) ROM_LOAD16_BYTE( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) ) ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) - ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_REGION( 0x80000, "k007121_2", 0 ) ROM_LOAD16_BYTE( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_REGION( 0x0001, "pals", 0 ) - ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8A-2CN */ + ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8A-2CN ROM_END ROM_START( gryzor ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "633j03.18a", 0x20000, 0x08000, CRC(20919162) SHA1(2f375166428ee03f6e8ac0372a373bb8ab35e64c) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "633j02.17a", 0x10000, 0x10000, CRC(b5922f9a) SHA1(441a23dc99a908ec2c09c855e73070dbab8c5ae2) ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "633j02.17a", 0x00000, 0x10000, CRC(b5922f9a) SHA1(441a23dc99a908ec2c09c855e73070dbab8c5ae2) ) + ROM_LOAD( "633j03.18a", 0x10000, 0x10000, CRC(20919162) SHA1(2f375166428ee03f6e8ac0372a373bb8ab35e64c) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "633e01.12a", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) - ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_REGION( 0x80000, "k007121_1", 0 ) ROM_LOAD16_BYTE( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) ) ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) - ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_REGION( 0x80000, "k007121_2", 0 ) ROM_LOAD16_BYTE( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_REGION( 0x0001, "pals", 0 ) - ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8A-2CN */ + ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8A-2CN ROM_END ROM_START( gryzor1 ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "633g2.18a", 0x20000, 0x08000, CRC(92ca77bd) SHA1(3a56f51a617edff9f2a60df0141dff040881b82a) ) - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "633g3.17a", 0x10000, 0x10000, CRC(bbd9e95e) SHA1(fd5de1bcc485de7b8fc2e321351c2e3ddd25d053) ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "633g3.17a", 0x00000, 0x10000, CRC(bbd9e95e) SHA1(fd5de1bcc485de7b8fc2e321351c2e3ddd25d053) ) + ROM_LOAD( "633g2.18a", 0x10000, 0x10000, CRC(92ca77bd) SHA1(3a56f51a617edff9f2a60df0141dff040881b82a) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "633e01.12a", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) - ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_REGION( 0x80000, "k007121_1", 0 ) ROM_LOAD16_BYTE( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) ) ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) - ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_REGION( 0x80000, "k007121_2", 0 ) ROM_LOAD16_BYTE( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_REGION( 0x0001, "pals", 0 ) - ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8A-2CN */ + ROM_LOAD( "007766.20d.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8A-2CN ROM_END -/* Bootlegs */ +// Bootlegs ROM_START( contrab ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "3.ic20", 0x20000, 0x08000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) ) /* == 633m03.18a */ - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "1.ic19", 0x10000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) /* == 633i03.18a */ + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "1.ic19", 0x00000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) // == 633i03.18a + ROM_LOAD( "3.ic20", 0x10000, 0x10000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) ) // == 633m03.18a - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "3.ic63", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) /* == 633k01.12a */ + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "3.ic63", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) // == 633k01.12a - ROM_REGION( 0x80000, "gfx1", 0 ) - /* bootleg versions use smaller gfx ROMs, but the data is the same */ + ROM_REGION( 0x80000, "k007121_1", 0 ) + // bootleg versions use smaller gfx ROMs, but the data is the same ROM_LOAD( "7.rom", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) ) ROM_LOAD( "10.rom", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) ) ROM_LOAD( "9.rom", 0x20000, 0x10000, CRC(875c61de) SHA1(e8dc42fef810a9f5471d96cb5297eb29296ba472) ) @@ -475,8 +737,8 @@ ROM_START( contrab ) ROM_LOAD( "17.rom", 0x60000, 0x10000, CRC(ce4330b9) SHA1(0a2bd31baa0bc5e3745ee5ddac995557a551d58c) ) ROM_LOAD( "18.rom", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) ) - ROM_REGION( 0x80000, "gfx2", 0 ) - /* bootleg versions use smaller gfx ROMs, but the data is the same */ + ROM_REGION( 0x80000, "k007121_2", 0 ) + // bootleg versions use smaller gfx ROMs, but the data is the same ROM_LOAD( "4.rom", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) ) ROM_LOAD( "5.rom", 0x10000, 0x10000, CRC(e01a5b9c) SHA1(58c99cf99f209c584da757320a2f107244056d4c) ) ROM_LOAD( "6.rom", 0x20000, 0x10000, CRC(aeea6744) SHA1(220b42f707db99967bdcbd9ac66fcc83675a72aa) ) @@ -484,27 +746,26 @@ ROM_START( contrab ) ROM_LOAD( "11.rom", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) ) ROM_LOAD( "12.rom", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) ) ROM_LOAD( "13.rom", 0x60000, 0x10000, CRC(2b513d12) SHA1(152ebd849751cc2e95513134ce773a6b2eeb320e) ) - /* This last section, 0x70000-0x7ffff is empty */ + // This last section, 0x70000-0x7ffff is empty ROM_REGION( 0x0500, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ - ROM_LOAD( "conprom.53", 0x0400, 0x0100, CRC(05a1da7e) SHA1(ec0bdfc9da05c99e6a283014769db6d641f1a0aa) ) /* unknown (only present in this bootleg) */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table + ROM_LOAD( "conprom.53", 0x0400, 0x0100, CRC(05a1da7e) SHA1(ec0bdfc9da05c99e6a283014769db6d641f1a0aa) ) // unknown (only present in this bootleg) ROM_END ROM_START( contrabj ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "2.2k", 0x20000, 0x08000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) ) /* == 633n03.18a */ - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "1.2h", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) /* == 633k02.17a */ + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "1.2h", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) // == 633k02.17a + ROM_LOAD( "2.2k", 0x10000, 0x10000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) ) // == 633n03.18a - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "a3.4p", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) /* == 633k01.12a */ + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "a3.4p", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) // == 633k01.12a - ROM_REGION( 0x80000, "gfx1", 0 ) - /* bootleg versions use smaller gfx ROMs, but the data is the same */ + ROM_REGION( 0x80000, "k007121_1", 0 ) + // bootleg versions use smaller gfx ROMs, but the data is the same ROM_LOAD( "a7.14f", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) ) ROM_LOAD( "a10.14l", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) ) ROM_LOAD( "a9.14k", 0x20000, 0x10000, CRC(875c61de) SHA1(e8dc42fef810a9f5471d96cb5297eb29296ba472) ) @@ -514,36 +775,35 @@ ROM_START( contrabj ) ROM_LOAD( "a17.14v", 0x60000, 0x10000, CRC(ce4330b9) SHA1(0a2bd31baa0bc5e3745ee5ddac995557a551d58c) ) ROM_LOAD( "a18.14w", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) ) - ROM_REGION( 0x80000, "gfx2", 0 ) - /* bootleg versions use smaller gfx ROMs, but the data is the same */ + ROM_REGION( 0x80000, "k007121_2", 0 ) + // bootleg versions use smaller gfx ROMs, but the data is the same ROM_LOAD( "a4.14a", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) ) ROM_LOAD( "a5.14c", 0x10000, 0x10000, CRC(e01a5b9c) SHA1(58c99cf99f209c584da757320a2f107244056d4c) ) - ROM_LOAD( "e6.14d", 0x20000, 0x10000, CRC(aeea6744) SHA1(220b42f707db99967bdcbd9ac66fcc83675a72aa) ) /* Yes, this one was labeled "E" and not "A" */ + ROM_LOAD( "e6.14d", 0x20000, 0x10000, CRC(aeea6744) SHA1(220b42f707db99967bdcbd9ac66fcc83675a72aa) ) // Yes, this one was labeled "E" and not "A" ROM_LOAD( "a14.14q", 0x30000, 0x10000, CRC(765afdc7) SHA1(b7f6871cb154ee7e42e683bce08b73b00e61b0bc) ) ROM_LOAD( "a11.14m", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) ) ROM_LOAD( "a12.14n", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) ) ROM_LOAD( "a13.14p", 0x60000, 0x10000, CRC(2b513d12) SHA1(152ebd849751cc2e95513134ce773a6b2eeb320e) ) - /* This last section, 0x70000-0x7ffff is empty */ + // This last section, 0x70000-0x7ffff is empty ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_END ROM_START( contrabj1 ) - ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ - ROM_LOAD( "2__,contrabtj2.2k", 0x20000, 0x08000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) ) /* == 633k03.18a */ - ROM_CONTINUE( 0x08000, 0x08000 ) - ROM_LOAD( "1.2h", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) /* == 633k02.17a */ + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "1.2h", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) // == 633k02.17a + ROM_LOAD( "2__,contrabtj2.2k", 0x10000, 0x10000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) ) // == 633k03.18a - ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ - ROM_LOAD( "a3.4p", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) /* == 633k01.12a */ + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "a3.4p", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) // == 633k01.12a - ROM_REGION( 0x80000, "gfx1", 0 ) - /* bootleg versions use smaller gfx ROMs, but the data is the same */ + ROM_REGION( 0x80000, "k007121_1", 0 ) + // bootleg versions use smaller gfx ROMs, but the data is the same ROM_LOAD( "a7.14f", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) ) ROM_LOAD( "a10.14l", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) ) ROM_LOAD( "a9.14k", 0x20000, 0x10000, CRC(875c61de) SHA1(e8dc42fef810a9f5471d96cb5297eb29296ba472) ) @@ -553,25 +813,28 @@ ROM_START( contrabj1 ) ROM_LOAD( "a17.14v", 0x60000, 0x10000, CRC(ce4330b9) SHA1(0a2bd31baa0bc5e3745ee5ddac995557a551d58c) ) ROM_LOAD( "a18.14w", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) ) - ROM_REGION( 0x80000, "gfx2", 0 ) - /* bootleg versions use smaller gfx ROMs, but the data is the same */ + ROM_REGION( 0x80000, "k007121_2", 0 ) + // bootleg versions use smaller gfx ROMs, but the data is the same ROM_LOAD( "a4.14a", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) ) ROM_LOAD( "a5.14c", 0x10000, 0x10000, CRC(e01a5b9c) SHA1(58c99cf99f209c584da757320a2f107244056d4c) ) - ROM_LOAD( "e6.14d", 0x20000, 0x10000, CRC(aeea6744) SHA1(220b42f707db99967bdcbd9ac66fcc83675a72aa) ) /* Yes, this one was labeled "E" and not "A" */ + ROM_LOAD( "e6.14d", 0x20000, 0x10000, CRC(aeea6744) SHA1(220b42f707db99967bdcbd9ac66fcc83675a72aa) ) // Yes, this one was labeled "E" and not "A" ROM_LOAD( "a14.14q", 0x30000, 0x10000, CRC(765afdc7) SHA1(b7f6871cb154ee7e42e683bce08b73b00e61b0bc) ) ROM_LOAD( "a11.14m", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) ) ROM_LOAD( "a12.14n", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) ) ROM_LOAD( "a13.14p", 0x60000, 0x10000, CRC(2b513d12) SHA1(152ebd849751cc2e95513134ce773a6b2eeb320e) ) - /* This last section, 0x70000-0x7ffff is empty */ + // This last section, 0x70000-0x7ffff is empty ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite lookup table */ - ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #0 char lookup table */ - ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) /* 007121 #1 sprite lookup table */ - ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ + ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) // 007121 #0 sprite lookup table + ROM_LOAD( "633e09.12g", 0x0100, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #0 char lookup table + ROM_LOAD( "633f10.18g", 0x0200, 0x0100, CRC(2b244d84) SHA1(c3bde7afb501bae58d07721c637dc06938c22150) ) // 007121 #1 sprite lookup table + ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table ROM_END +} // anonymous namespace + + GAME( 1987, contra, 0, contra, contra, contra_state, empty_init, ROT90, "Konami", "Contra (US / Asia, set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, contra1, contra, contra, contra, contra_state, empty_init, ROT90, "Konami", "Contra (US / Asia, set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, contrae, contra, contra, contra, contra_state, empty_init, ROT90, "Konami", "Contra (US / Asia, set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp index bf9be00b63f..c64a0a992ad 100644 --- a/src/mame/drivers/gng.cpp +++ b/src/mame/drivers/gng.cpp @@ -17,13 +17,13 @@ Notes: The 0x6000-0x7fff ROM space doesn't seem to be used: instead the game writes to 6048 and reads from 6000. Silly copy protection? -- Increased "gfx3" to address 0x400 sprites, to avoid Ghosts'n Goblins - from drawing a bad sprite. (18/08/2005 Pierpaolo Prazzoli) +- Increased "sprites" to address 0x400 sprites, to avoid Ghosts'n Goblins + drawing a bad sprite. (18/08/2005 Pierpaolo Prazzoli) Notes by Jose Tejada (jotego) There is no watchdog in GnG, as previously stated in the MAME driver. -Instead, there is a DMA circuit that copies object data from the CPU RAM to a buffer +Instead, there is a DMA circuit that copies object data from the CPU RAM to a buffer, this also slows down the CPU as it is halted during that time. The DMA is triggered when a certain memory location is addressed. That location was thought to be a watchdog before. @@ -31,22 +31,225 @@ thought to be a watchdog before. ***************************************************************************/ #include "emu.h" -#include "includes/gng.h" -#include "cpu/z80/z80.h" #include "cpu/m6809/m6809.h" +#include "cpu/z80/z80.h" #include "machine/74259.h" #include "machine/gen_latch.h" +#include "sound/ymopn.h" +#include "video/bufsprite.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +namespace { + +class gng_state : public driver_device +{ +public: + gng_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram"), + m_fgvideoram(*this, "fgvideoram"), + m_bgvideoram(*this, "bgvideoram"), + m_mainbank(*this, "mainbank"), + m_maincpu(*this, "maincpu"), + m_ym(*this, "ym%u", 1), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette") + { } + + void gng(machine_config &config); + void diamond(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: + // memory pointers + required_device m_spriteram; + required_shared_ptr m_fgvideoram; + required_shared_ptr m_bgvideoram; + required_memory_bank m_mainbank; + + // video-related + tilemap_t *m_bg_tilemap = nullptr; + tilemap_t *m_fg_tilemap = nullptr; + uint8_t m_scrollx[2]{}; + uint8_t m_scrolly[2]{}; + + required_device m_maincpu; + required_device_array m_ym; + required_device m_gfxdecode; + required_device m_palette; + + void bankswitch_w(uint8_t data); + DECLARE_WRITE_LINE_MEMBER(ym_reset_w); + uint8_t diamond_hack_r(); + void fgvideoram_w(offs_t offset, uint8_t data); + void bgvideoram_w(offs_t offset, uint8_t data); + void bgscrollx_w(offs_t offset, uint8_t data); + void bgscrolly_w(offs_t offset, uint8_t data); + DECLARE_WRITE_LINE_MEMBER(flipscreen_w); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + + void diamond_main_map(address_map &map); + void gng_main_map(address_map &map); + void sound_map(address_map &map); +}; + + +// video + +/*************************************************************************** + + Callbacks for the TileMap code + +***************************************************************************/ + +TILE_GET_INFO_MEMBER(gng_state::get_fg_tile_info) +{ + uint8_t attr = m_fgvideoram[tile_index + 0x400]; + tileinfo.set(0, + m_fgvideoram[tile_index] + ((attr & 0xc0) << 2), + attr & 0x0f, + TILE_FLIPYX((attr & 0x30) >> 4)); +} + +TILE_GET_INFO_MEMBER(gng_state::get_bg_tile_info) +{ + uint8_t attr = m_bgvideoram[tile_index + 0x400]; + tileinfo.set(1, + m_bgvideoram[tile_index] + ((attr & 0xc0) << 2), + attr & 0x07, + TILE_FLIPYX((attr & 0x30) >> 4)); + tileinfo.group = (attr & 0x08) >> 3; +} + + + +/*************************************************************************** + + Start the video hardware emulation. + +***************************************************************************/ + +void gng_state::video_start() +{ + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gng_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gng_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_fg_tilemap->set_transparent_pen(3); + m_bg_tilemap->set_transmask(0, 0xff, 0x00); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x41, 0xbe); // split type 1 has pens 0 and 6 transparent in front half -void gng_state::gng_bankswitch_w(uint8_t data) + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); +} + + +/*************************************************************************** + + Memory handlers + +***************************************************************************/ + +void gng_state::fgvideoram_w(offs_t offset, uint8_t data) +{ + m_fgvideoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset & 0x3ff); +} + +void gng_state::bgvideoram_w(offs_t offset, uint8_t data) +{ + m_bgvideoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset & 0x3ff); +} + + +void gng_state::bgscrollx_w(offs_t offset, uint8_t data) +{ + m_scrollx[offset] = data; + m_bg_tilemap->set_scrollx(0, m_scrollx[0] + 256 * m_scrollx[1]); +} + +void gng_state::bgscrolly_w(offs_t offset, uint8_t data) +{ + m_scrolly[offset] = data; + m_bg_tilemap->set_scrolly(0, m_scrolly[0] + 256 * m_scrolly[1]); +} + + +WRITE_LINE_MEMBER(gng_state::flipscreen_w) +{ + flip_screen_set(!state); +} + + + +/*************************************************************************** + + Display refresh + +***************************************************************************/ + +void gng_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + uint8_t *buffered_spriteram = m_spriteram->buffer(); + gfx_element *gfx = m_gfxdecode->gfx(2); + + for (int offs = m_spriteram->bytes() - 4; offs >= 0; offs -= 4) + { + uint8_t attributes = buffered_spriteram[offs + 1]; + int sx = buffered_spriteram[offs + 3] - 0x100 * (attributes & 0x01); + int sy = buffered_spriteram[offs + 2]; + int flipx = attributes & 0x04; + int flipy = attributes & 0x08; + + if (flip_screen()) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + flipy = !flipy; + } + + gfx->transpen(bitmap,cliprect, + buffered_spriteram[offs] + ((attributes << 2) & 0x300), + (attributes >> 4) & 3, + flipx, flipy, + sx + 128, sy + 6, 15); + } +} + +uint32_t gng_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 0); + draw_sprites(bitmap, cliprect); + m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 0); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +// machine + +void gng_state::bankswitch_w(uint8_t data) { if (data == 4) - membank("bank1")->set_entry(4); + m_mainbank->set_entry(4); else - membank("bank1")->set_entry((data & 0x03)); + m_mainbank->set_entry(data & 0x03); } WRITE_LINE_MEMBER(gng_state::ym_reset_w) @@ -63,12 +266,12 @@ uint8_t gng_state::diamond_hack_r() return 0; } -void gng_state::gng_map(address_map &map) +void gng_state::gng_main_map(address_map &map) { map(0x0000, 0x1dff).ram(); map(0x1e00, 0x1fff).ram().share("spriteram"); - map(0x2000, 0x27ff).ram().w(FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram"); - map(0x2800, 0x2fff).ram().w(FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram"); + map(0x2000, 0x27ff).ram().w(FUNC(gng_state::fgvideoram_w)).share(m_fgvideoram); + map(0x2800, 0x2fff).ram().w(FUNC(gng_state::bgvideoram_w)).share(m_bgvideoram); map(0x3000, 0x3000).portr("SYSTEM"); map(0x3001, 0x3001).portr("P1"); map(0x3002, 0x3002).portr("P2"); @@ -77,21 +280,21 @@ void gng_state::gng_map(address_map &map) map(0x3800, 0x38ff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); map(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette"); map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write)); - map(0x3b08, 0x3b09).w(FUNC(gng_state::gng_bgscrollx_w)); - map(0x3b0a, 0x3b0b).w(FUNC(gng_state::gng_bgscrolly_w)); + map(0x3b08, 0x3b09).w(FUNC(gng_state::bgscrollx_w)); + map(0x3b0a, 0x3b0b).w(FUNC(gng_state::bgscrolly_w)); // 0x3c00 is the DMA trigger. Not emulated. map(0x3d00, 0x3d07).w("mainlatch", FUNC(ls259_device::write_d0)); - map(0x3e00, 0x3e00).w(FUNC(gng_state::gng_bankswitch_w)); - map(0x4000, 0x5fff).bankr("bank1"); + map(0x3e00, 0x3e00).w(FUNC(gng_state::bankswitch_w)); + map(0x4000, 0x5fff).bankr(m_mainbank); map(0x6000, 0xffff).rom(); } -void gng_state::diamond_map(address_map &map) +void gng_state::diamond_main_map(address_map &map) { map(0x0000, 0x1dff).ram(); map(0x1e00, 0x1fff).ram().share("spriteram"); - map(0x2000, 0x27ff).ram().w(FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram"); - map(0x2800, 0x2fff).ram().w(FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram"); + map(0x2000, 0x27ff).ram().w(FUNC(gng_state::fgvideoram_w)).share(m_fgvideoram); + map(0x2800, 0x2fff).ram().w(FUNC(gng_state::bgvideoram_w)).share(m_bgvideoram); map(0x3000, 0x33ff).noprw(); // faulty POST? map(0x3000, 0x3000).portr("SYSTEM"); map(0x3001, 0x3001).portr("P1"); @@ -101,13 +304,13 @@ void gng_state::diamond_map(address_map &map) map(0x3800, 0x38ff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); map(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette"); map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write)); - map(0x3b08, 0x3b09).w(FUNC(gng_state::gng_bgscrollx_w)); - map(0x3b0a, 0x3b0b).w(FUNC(gng_state::gng_bgscrolly_w)); - map(0x3c00, 0x3c00).noprw(); /* watchdog? */ + map(0x3b08, 0x3b09).w(FUNC(gng_state::bgscrollx_w)); + map(0x3b0a, 0x3b0b).w(FUNC(gng_state::bgscrolly_w)); + map(0x3c00, 0x3c00).noprw(); // watchdog? map(0x3d00, 0x3d00).nopw(); // ? (writes $01 and $0F) map(0x3d01, 0x3d01).nopw(); // ? - map(0x3e00, 0x3e00).w(FUNC(gng_state::gng_bankswitch_w)); - map(0x4000, 0x5fff).bankr("bank1"); + map(0x3e00, 0x3e00).w(FUNC(gng_state::bankswitch_w)); + map(0x4000, 0x5fff).bankr(m_mainbank); map(0x6000, 0xffff).rom(); map(0x6000, 0x6000).r(FUNC(gng_state::diamond_hack_r)); map(0x6048, 0x6048).nopw(); // ? @@ -204,10 +407,10 @@ static INPUT_PORTS_START( gng ) PORT_DIPSETTING( 0x60, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) ) PORT_DIPSETTING( 0x00, DEF_STR( Very_Difficult ) ) - PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:1" ) /* Listed as "Unused" */ + PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:1" ) // Listed as "Unused" INPUT_PORTS_END -/* identical to gng, but the "unknown" dip switch is Invulnerability */ +// identical to gng, but the "unknown" dip switch is Invulnerability static INPUT_PORTS_START( makaimur ) PORT_INCLUDE( gng ) @@ -342,9 +545,9 @@ static const gfx_layout spritelayout = static GFXDECODE_START( gfx_gng ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x80, 16 ) /* colors 0x80-0xbf */ - GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0x00, 8 ) /* colors 0x00-0x3f */ - GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x40, 4 ) /* colors 0x40-0x7f */ + GFXDECODE_ENTRY( "chars", 0, charlayout, 0x80, 16 ) // colors 0x80-0xbf + GFXDECODE_ENTRY( "tiles", 0, tilelayout, 0x00, 8 ) // colors 0x00-0x3f + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0x40, 4 ) // colors 0x40-0x7f GFXDECODE_END @@ -353,8 +556,8 @@ GFXDECODE_END void gng_state::machine_start() { uint8_t *rombase = memregion("maincpu")->base(); - membank("bank1")->configure_entries(0, 4, &rombase[0x10000], 0x2000); - membank("bank1")->configure_entry(4, &rombase[0x4000]); + m_mainbank->configure_entries(0, 4, &rombase[0x10000], 0x2000); + m_mainbank->configure_entry(4, &rombase[0x4000]); save_item(NAME(m_scrollx)); save_item(NAME(m_scrolly)); @@ -368,34 +571,32 @@ void gng_state::machine_reset() m_scrolly[1] = 0; { - int i; - /* TODO: PCB reference clearly shows that the POST has random/filled data on the paletteram. For now let's fill everything with white colors until we have better info about it */ - for(i=0;i<0x100;i+=4) + for(int i = 0 ; i < 0x100; i += 4) { m_palette->basemem().write8(i, 0x00); m_palette->extmem().write8(i, 0x00); - m_palette->basemem().write8(i+1, 0x55); m_palette->extmem().write8(i+1, 0x55); - m_palette->basemem().write8(i+2, 0xaa); m_palette->extmem().write8(i+2, 0xaa); - m_palette->basemem().write8(i+3, 0xff); m_palette->extmem().write8(i+3, 0xff); - m_palette->set_pen_color(i+0,0x00,0x00,0x00); - m_palette->set_pen_color(i+1,0x55,0x55,0x55); - m_palette->set_pen_color(i+2,0xaa,0xaa,0xaa); - m_palette->set_pen_color(i+3,0xff,0xff,0xff); + m_palette->basemem().write8(i + 1, 0x55); m_palette->extmem().write8(i + 1, 0x55); + m_palette->basemem().write8(i + 2, 0xaa); m_palette->extmem().write8(i + 2, 0xaa); + m_palette->basemem().write8(i + 3, 0xff); m_palette->extmem().write8(i + 3, 0xff); + m_palette->set_pen_color(i + 0, 0x00, 0x00, 0x00); + m_palette->set_pen_color(i + 1, 0x55, 0x55, 0x55); + m_palette->set_pen_color(i + 2, 0xaa, 0xaa, 0xaa); + m_palette->set_pen_color(i + 3, 0xff, 0xff, 0xff); } } } void gng_state::gng(machine_config &config) { - /* basic machine hardware */ - MC6809(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */ - m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::gng_map); + // basic machine hardware + MC6809(config, m_maincpu, XTAL(12'000'000) / 2); // verified on PCB + m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::gng_main_map); m_maincpu->set_vblank_int("screen", FUNC(gng_state::irq0_line_hold)); - z80_device &audiocpu(Z80(config, "audiocpu", XTAL(12'000'000)/4)); /* verified on pcb */ + z80_device &audiocpu(Z80(config, "audiocpu", XTAL(12'000'000) / 4)); // verified on PCB audiocpu.set_addrmap(AS_PROGRAM, &gng_state::sound_map); - audiocpu.set_periodic_int(FUNC(gng_state::irq0_line_hold), attotime::from_hz(4*60)); + audiocpu.set_periodic_int(FUNC(gng_state::irq0_line_hold), attotime::from_hz(4 * 60)); ls259_device &mainlatch(LS259(config, "mainlatch")); // 9B on A board mainlatch.q_out_cb<0>().set(FUNC(gng_state::flipscreen_w)); @@ -404,12 +605,12 @@ void gng_state::gng(machine_config &config) mainlatch.q_out_cb<2>().set([this] (int state) { machine().bookkeeping().coin_counter_w(0, state); }); mainlatch.q_out_cb<3>().set([this] (int state) { machine().bookkeeping().coin_counter_w(1, state); }); - /* video hardware */ + // video hardware BUFFERED_SPRITERAM8(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(12'000'000)/2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 - screen.set_screen_update(FUNC(gng_state::screen_update_gng)); + screen.set_raw(XTAL(12'000'000) / 2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 + screen.set_screen_update(FUNC(gng_state::screen_update)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); screen.set_palette(m_palette); @@ -417,18 +618,18 @@ void gng_state::gng(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 256); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); - YM2203(config, m_ym[0], XTAL(12'000'000)/8); /* verified on pcb */ + YM2203(config, m_ym[0], XTAL(12'000'000) / 8); // verified on PCB m_ym[0]->add_route(0, "mono", 0.40); m_ym[0]->add_route(1, "mono", 0.40); m_ym[0]->add_route(2, "mono", 0.40); m_ym[0]->add_route(3, "mono", 0.20); - YM2203(config, m_ym[1], XTAL(12'000'000)/8); /* verified on pcb */ + YM2203(config, m_ym[1], XTAL(12'000'000) / 8); // verified on PCB m_ym[1]->add_route(0, "mono", 0.40); m_ym[1]->add_route(1, "mono", 0.40); m_ym[1]->add_route(2, "mono", 0.40); @@ -438,7 +639,7 @@ void gng_state::gng(machine_config &config) void gng_state::diamond(machine_config &config) { gng(config); - m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::diamond_map); + m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::diamond_main_map); config.device_remove("mainlatch"); } @@ -453,35 +654,35 @@ void gng_state::diamond(machine_config &config) ROM_START( gng ) ROM_REGION( 0x18000, "maincpu", 0 ) - ROM_LOAD( "gg4.bin", 0x04000, 0x4000, CRC(66606beb) SHA1(4c640f49be93c7d2b12d4d4c56c56e74099b6c2f) ) /* 4000-5fff is page 4 */ + ROM_LOAD( "gg4.bin", 0x04000, 0x4000, CRC(66606beb) SHA1(4c640f49be93c7d2b12d4d4c56c56e74099b6c2f) ) // 4000-5fff is page 4 ROM_LOAD( "gg3.bin", 0x08000, 0x8000, CRC(9e01c65e) SHA1(a87880d87c64a6d61313c3bc69c8d49511e0f9c3) ) - ROM_LOAD( "gg5.bin", 0x10000, 0x8000, CRC(d6397b2b) SHA1(39aa3cb8c229e60ac0ac410ff61e0c09dba78501) ) /* page 0, 1, 2, 3 */ + ROM_LOAD( "gg5.bin", 0x10000, 0x8000, CRC(d6397b2b) SHA1(39aa3cb8c229e60ac0ac410ff61e0c09dba78501) ) // page 0, 1, 2, 3 ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_REGION( 0x0100, "plds", 0 ) ROM_LOAD( "gg-pal10l8.bin", 0x0000, 0x002c, CRC(87f1b7e0) SHA1(b719c3be7bd4a02660bb0887f752e9769cbd37d2) ) @@ -498,28 +699,28 @@ ROM_START( gnga ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_END ROM_START( gngbl ) @@ -533,24 +734,24 @@ ROM_START( gngbl ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "2.8529.13h", 0x0000, 0x8000, CRC(55cfb196) SHA1(df9cdbb24c26bca226d7274225725d62ea854c7a) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "1.84490.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "13.84490.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "12.84490.1e", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "11.84490.3c", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "10.84490.1c", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "9.84490.3b", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "8.84490.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "19.84472.4n", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "18.84472.3n", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "17.84472.1n", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "16.84472.4l", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "15.84490.3l", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "14.84490.1l", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "1.84490.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "13.84490.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "12.84490.1e", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "11.84490.3c", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "10.84490.1c", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "9.84490.3b", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "8.84490.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "19.84472.4n", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) // sprites 0 Plane 1-2 + ROM_LOAD( "18.84472.3n", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "17.84472.1n", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "16.84472.4l", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) // sprites 0 Plane 3-4 + ROM_LOAD( "15.84490.3l", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "14.84490.1l", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_END ROM_START( gngprot ) @@ -564,24 +765,24 @@ ROM_START( gngprot ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg14h.bin", 0x0000, 0x8000, CRC(55cfb196) SHA1(df9cdbb24c26bca226d7274225725d62ea854c7a) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg11e.bin", 0x00000, 0x4000, CRC(ccea9365) SHA1(bb567529fa376afc0a5afd331dcecef4f61cc8a3) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg3e.bin", 0x00000, 0x4000, CRC(68db22c8) SHA1(ada859bfa60d9563a8a86b1b6526f626b932981c) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg1e.bin", 0x04000, 0x4000, CRC(dad8dd2f) SHA1(30a6dd2f6b26acaab0a003f5099a2fcb46644d45) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg3c.bin", 0x08000, 0x4000, CRC(7a158323) SHA1(183f33f214b4c04e9130cbe2c24e08b5303bb2de) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg1c.bin", 0x0c000, 0x4000, CRC(7314d095) SHA1(1288eaf0d82ac65a1bb94e68114b4b2f84910901) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg3b.bin", 0x10000, 0x4000, CRC(03a96d9b) SHA1(5d74e156b0cd1b54d7bd61e1664834f768d5b9f8) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg1b.bin", 0x14000, 0x4000, CRC(7b9899bc) SHA1(be9b7b18542f38c8fb8b075760995acecace79ad) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gg4l.bin", 0x00000, 0x4000, CRC(49cf81b4) SHA1(b87aba71446884f9926ced28716876ad701b183f) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg3l.bin", 0x04000, 0x4000, CRC(e61437b1) SHA1(7043ac80ee40057839bf7ee7af62961d9ff3d50b) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg1l.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gg4n.bin", 0x10000, 0x4000, CRC(d5aff5a7) SHA1(b75b271c7d38ed9689bff7a3bc9a67a0aae9ed8b) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg3n.bin", 0x14000, 0x4000, CRC(d589caeb) SHA1(f787557dc083f765aec3d64896ef6cdf5e8d54cc) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg1n.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg11e.bin", 0x00000, 0x4000, CRC(ccea9365) SHA1(bb567529fa376afc0a5afd331dcecef4f61cc8a3) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg3e.bin", 0x00000, 0x4000, CRC(68db22c8) SHA1(ada859bfa60d9563a8a86b1b6526f626b932981c) ) // 0-1 Plane 1 + ROM_LOAD( "gg1e.bin", 0x04000, 0x4000, CRC(dad8dd2f) SHA1(30a6dd2f6b26acaab0a003f5099a2fcb46644d45) ) // 2-3 Plane 1 + ROM_LOAD( "gg3c.bin", 0x08000, 0x4000, CRC(7a158323) SHA1(183f33f214b4c04e9130cbe2c24e08b5303bb2de) ) // 0-1 Plane 2 + ROM_LOAD( "gg1c.bin", 0x0c000, 0x4000, CRC(7314d095) SHA1(1288eaf0d82ac65a1bb94e68114b4b2f84910901) ) // 2-3 Plane 2 + ROM_LOAD( "gg3b.bin", 0x10000, 0x4000, CRC(03a96d9b) SHA1(5d74e156b0cd1b54d7bd61e1664834f768d5b9f8) ) // 0-1 Plane 3 + ROM_LOAD( "gg1b.bin", 0x14000, 0x4000, CRC(7b9899bc) SHA1(be9b7b18542f38c8fb8b075760995acecace79ad) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gg4l.bin", 0x00000, 0x4000, CRC(49cf81b4) SHA1(b87aba71446884f9926ced28716876ad701b183f) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg3l.bin", 0x04000, 0x4000, CRC(e61437b1) SHA1(7043ac80ee40057839bf7ee7af62961d9ff3d50b) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg1l.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gg4n.bin", 0x10000, 0x4000, CRC(d5aff5a7) SHA1(b75b271c7d38ed9689bff7a3bc9a67a0aae9ed8b) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg3n.bin", 0x14000, 0x4000, CRC(d589caeb) SHA1(f787557dc083f765aec3d64896ef6cdf5e8d54cc) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg1n.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_END @@ -594,28 +795,28 @@ ROM_START( gngblita ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_REGION( 0x0100, "plds", 0 ) ROM_LOAD( "gg-pal10l8.bin", 0x0000, 0x002c, CRC(87f1b7e0) SHA1(b719c3be7bd4a02660bb0887f752e9769cbd37d2) ) @@ -630,28 +831,28 @@ ROM_START( gngc ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gg14.bin", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_END @@ -664,166 +865,167 @@ ROM_END ROM_START( gngt ) ROM_REGION( 0x18000, "maincpu", 0 ) - ROM_LOAD( "mmt04d.10n", 0x04000, 0x4000, CRC(652406f6) SHA1(3b2bafd31f670ea26c568c48f3bd00597e5a2ed6) ) /* 4000-5fff is page 4 */ + ROM_LOAD( "mmt04d.10n", 0x04000, 0x4000, CRC(652406f6) SHA1(3b2bafd31f670ea26c568c48f3bd00597e5a2ed6) ) // 4000-5fff is page 4 ROM_LOAD( "mmt03d.8n", 0x08000, 0x8000, CRC(fb040b42) SHA1(c1c58943bd20c6a2520b39fae90067769ec97ed6) ) - ROM_LOAD( "mmt05d.13n", 0x10000, 0x8000, CRC(8f7cff61) SHA1(1875f254a7737e1fbf6770ee4a322d675d043a44) ) /* page 0, 1, 2, 3 */ + ROM_LOAD( "mmt05d.13n", 0x10000, 0x8000, CRC(8f7cff61) SHA1(1875f254a7737e1fbf6770ee4a322d675d043a44) ) // page 0, 1, 2, 3 ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "mm02.14h", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "mm01.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "mm11.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "mm10.1e", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "mm09.3c", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "mm08.1c", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "mm07.3b", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "mm06.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "mm17.4n", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "mm16.3n", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "mm15.1n", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "mm14.4l", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "mm13.3l", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "mm12.1l", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "mm01.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "mm11.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "mm10.1e", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "mm09.3c", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "mm08.1c", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "mm07.3b", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "mm06.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "mm17.4n", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) // sprites 0 Plane 1-2 + ROM_LOAD( "mm16.3n", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "mm15.1n", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "mm14.4l", 0x10000, 0x4000, CRC(6aaf12f9) SHA1(207a7407288182a4f3eddaea634c6a6452131182) ) // sprites 0 Plane 3-4 + ROM_LOAD( "mm13.3l", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "mm12.1l", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "m-02.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* 63s141, video timing (not used) */ - ROM_LOAD( "m-01.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* 63s141, priority (not used) */ + ROM_LOAD( "m-02.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // 63s141, video timing (not used) + ROM_LOAD( "m-01.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // 63s141, priority (not used) ROM_END ROM_START( makaimur ) ROM_REGION( 0x18000, "maincpu", 0 ) - ROM_LOAD( "10n.rom", 0x04000, 0x4000, CRC(81e567e0) SHA1(2a917e562686e782ea7d034a54e9728695a19258) ) /* 4000-5fff is page 4 */ + ROM_LOAD( "10n.rom", 0x04000, 0x4000, CRC(81e567e0) SHA1(2a917e562686e782ea7d034a54e9728695a19258) ) // 4000-5fff is page 4 ROM_LOAD( "8n.rom", 0x08000, 0x8000, CRC(9612d66c) SHA1(64c458d6d87b9c339488c9f0c89da2c796fcb759) ) - ROM_LOAD( "12n.rom", 0x10000, 0x8000, CRC(65a6a97b) SHA1(79de931ae183d8044cb6d9024b475196c679c86c) ) /* page 0, 1, 2, 3 */ + ROM_LOAD( "12n.rom", 0x10000, 0x8000, CRC(65a6a97b) SHA1(79de931ae183d8044cb6d9024b475196c679c86c) ) // page 0, 1, 2, 3 ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gng16.l4", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gng16.l4", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_END ROM_START( makaimurc ) ROM_REGION( 0x18000, "maincpu", 0 ) - ROM_LOAD( "mj04c.bin", 0x04000, 0x4000, CRC(1294edb1) SHA1(35d3b3ce4ee25d3cfa27097de0c9a2ab5e4892aa) ) /* 4000-5fff is page 4 */ + ROM_LOAD( "mj04c.bin", 0x04000, 0x4000, CRC(1294edb1) SHA1(35d3b3ce4ee25d3cfa27097de0c9a2ab5e4892aa) ) // 4000-5fff is page 4 ROM_LOAD( "mj03c.bin", 0x08000, 0x8000, CRC(d343332d) SHA1(3edf47ff2bd49b4451b737b6d3eb54256b489c81) ) - ROM_LOAD( "mj05c.bin", 0x10000, 0x8000, CRC(535342c2) SHA1(5f05a4965476f2db6fddec557d93d12ec1f9750c) ) /* page 0, 1, 2, 3 */ + ROM_LOAD( "mj05c.bin", 0x10000, 0x8000, CRC(535342c2) SHA1(5f05a4965476f2db6fddec557d93d12ec1f9750c) ) // page 0, 1, 2, 3 ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gng16.l4", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gng16.l4", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_END ROM_START( makaimurg ) ROM_REGION( 0x18000, "maincpu", 0 ) - ROM_LOAD( "mj04g.bin", 0x04000, 0x4000, CRC(757c94d3) SHA1(07f7cf788810a1425016e016ce3579adb3253ac7) ) /* 4000-5fff is page 4 */ + ROM_LOAD( "mj04g.bin", 0x04000, 0x4000, CRC(757c94d3) SHA1(07f7cf788810a1425016e016ce3579adb3253ac7) ) // 4000-5fff is page 4 ROM_LOAD( "mj03g.bin", 0x08000, 0x8000, CRC(61b043bb) SHA1(23a0a17d0abc4b084ffeba90266ef455361771cc) ) - ROM_LOAD( "mj05g.bin", 0x10000, 0x8000, CRC(f2fdccf5) SHA1(7694a981a6196d77fd2279fc34042b4cfb40c054) ) /* page 0, 1, 2, 3 */ + ROM_LOAD( "mj05g.bin", 0x10000, 0x8000, CRC(f2fdccf5) SHA1(7694a981a6196d77fd2279fc34042b4cfb40c054) ) // page 0, 1, 2, 3 ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ - - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) /* sprites 1 Plane 1-2 */ - ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) /* sprites 2 Plane 1-2 */ - ROM_LOAD( "gng16.l4", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) /* sprites 0 Plane 3-4 */ - ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) /* sprites 1 Plane 3-4 */ - ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) /* sprites 2 Plane 3-4 */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) + + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1 + ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) // 2-3 Plane 1 + ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2 + ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) // 2-3 Plane 2 + ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3 + ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3 + + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) // sprites 0 Plane 1-2 + ROM_LOAD( "gg16.bin", 0x04000, 0x4000, CRC(06d7e5ca) SHA1(9e06012bcd82f98fad43de666ef9a75979d940ab) ) // sprites 1 Plane 1-2 + ROM_LOAD( "gg15.bin", 0x08000, 0x4000, CRC(bc1fe02d) SHA1(e3a1421d465b87148ffa94f5673b2307f0246afe) ) // sprites 2 Plane 1-2 + ROM_LOAD( "gng16.l4", 0x10000, 0x4000, CRC(608d68d5) SHA1(af207f9ee2f93a0cf9cf25cfe72b0fdfe55481b8) ) // sprites 0 Plane 3-4 + ROM_LOAD( "gg13.bin", 0x14000, 0x4000, CRC(e80c3fca) SHA1(cb641c25bb04b970b2cbeca41adb792bbe142fb5) ) // sprites 1 Plane 3-4 + ROM_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_END ROM_START( diamond ) ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "d3o", 0x04000, 0x4000, CRC(ba4bf9f1) SHA1(460e01f5ba9cd0c76d1a2ea1e66e9ad49ef1e13b) ) /* 4000-5fff is page 4 */ + ROM_LOAD( "d3o", 0x04000, 0x4000, CRC(ba4bf9f1) SHA1(460e01f5ba9cd0c76d1a2ea1e66e9ad49ef1e13b) ) // 4000-5fff is page 4 ROM_LOAD( "d3", 0x08000, 0x8000, CRC(f436d6fa) SHA1(18287ac51e717ea2ba9b307a738f76735120f21b) ) - ROM_LOAD( "d5o", 0x10000, 0x8000, CRC(ae58bd3a) SHA1(674611c7107cae53150fc249ffc616df891698fe) ) /* page 0, 1, 2, 3 */ - ROM_LOAD( "d5", 0x18000, 0x8000, CRC(453f3f9e) SHA1(b4dcf2eb0e6d4eca8ccde6e1a60f5e002e49a57b) ) /* is this supposed to be used? */ + ROM_LOAD( "d5o", 0x10000, 0x8000, CRC(ae58bd3a) SHA1(674611c7107cae53150fc249ffc616df891698fe) ) // page 0, 1, 2, 3 + ROM_LOAD( "d5", 0x18000, 0x8000, CRC(453f3f9e) SHA1(b4dcf2eb0e6d4eca8ccde6e1a60f5e002e49a57b) ) // is this supposed to be used? ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "d2", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "d1", 0x00000, 0x4000, CRC(3a24e504) SHA1(56bc38413b8a0dc2829e9c8f7bcfabafe26fd257) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "d1", 0x00000, 0x4000, CRC(3a24e504) SHA1(56bc38413b8a0dc2829e9c8f7bcfabafe26fd257) ) - ROM_REGION( 0x18000, "gfx2", 0 ) - ROM_LOAD( "d11", 0x00000, 0x4000, CRC(754357d7) SHA1(eb6e07a5f2d02687306711845001205bf0efa61b) ) /* tiles 0-1 Plane 1*/ - ROM_LOAD( "d10", 0x04000, 0x4000, CRC(7531edcd) SHA1(dc3eabf7e7503f0588f65620d26c1bc5eebde211) ) /* tiles 2-3 Plane 1*/ - ROM_LOAD( "d9", 0x08000, 0x4000, CRC(22eeca08) SHA1(6454b6c0a7a0991744386b79d4988a2517ad0636) ) /* tiles 0-1 Plane 2*/ - ROM_LOAD( "d8", 0x0c000, 0x4000, CRC(6b61be60) SHA1(a92ff6e922da523caec1919f53bea48dab4ca564) ) /* tiles 2-3 Plane 2*/ - ROM_LOAD( "d7", 0x10000, 0x4000, CRC(fd595274) SHA1(8d22f89a7251ecc8b56ee3f8cfaab2fd5a716b3f) ) /* tiles 0-1 Plane 3*/ - ROM_LOAD( "d6", 0x14000, 0x4000, CRC(7f51dcd2) SHA1(ff4a68a7a6a5caa558898b03ba4a4dc3ab43ce30) ) /* tiles 2-3 Plane 3*/ + ROM_REGION( 0x18000, "tiles", 0 ) + ROM_LOAD( "d11", 0x00000, 0x4000, CRC(754357d7) SHA1(eb6e07a5f2d02687306711845001205bf0efa61b) ) // 0-1 Plane 1 + ROM_LOAD( "d10", 0x04000, 0x4000, CRC(7531edcd) SHA1(dc3eabf7e7503f0588f65620d26c1bc5eebde211) ) // 2-3 Plane 1 + ROM_LOAD( "d9", 0x08000, 0x4000, CRC(22eeca08) SHA1(6454b6c0a7a0991744386b79d4988a2517ad0636) ) // 0-1 Plane 2 + ROM_LOAD( "d8", 0x0c000, 0x4000, CRC(6b61be60) SHA1(a92ff6e922da523caec1919f53bea48dab4ca564) ) // 2-3 Plane 2 + ROM_LOAD( "d7", 0x10000, 0x4000, CRC(fd595274) SHA1(8d22f89a7251ecc8b56ee3f8cfaab2fd5a716b3f) ) // 0-1 Plane 3 + ROM_LOAD( "d6", 0x14000, 0x4000, CRC(7f51dcd2) SHA1(ff4a68a7a6a5caa558898b03ba4a4dc3ab43ce30) ) // 2-3 Plane 3 - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) - ROM_LOAD( "d17", 0x00000, 0x4000, CRC(8164b005) SHA1(d03bf62734b03c90a8393a23f8ce0a3769c43bf7) ) /* sprites 0 Plane 1-2 */ - ROM_LOAD( "d14", 0x10000, 0x4000, CRC(6f132163) SHA1(cd1ebf9671bcce58896dadbf20f036eaadbe8bd5) ) /* sprites 0 Plane 3-4 */ + ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF ) + ROM_LOAD( "d17", 0x00000, 0x4000, CRC(8164b005) SHA1(d03bf62734b03c90a8393a23f8ce0a3769c43bf7) ) // sprites 0 Plane 1-2 + ROM_LOAD( "d14", 0x10000, 0x4000, CRC(6f132163) SHA1(cd1ebf9671bcce58896dadbf20f036eaadbe8bd5) ) // sprites 0 Plane 3-4 ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "prom1", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ - ROM_LOAD( "prom2", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) /* priority (not used) */ + ROM_LOAD( "prom1", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used) + ROM_LOAD( "prom2", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used) ROM_END +} // anonymous namespace GAME( 1985, gng, 0, gng, gng, gng_state, empty_init, ROT0, "Capcom", "Ghosts'n Goblins (World? set 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/goal92.cpp b/src/mame/drivers/goal92.cpp index 01030c92951..29b33c5e85d 100644 --- a/src/mame/drivers/goal92.cpp +++ b/src/mame/drivers/goal92.cpp @@ -17,6 +17,7 @@ #include "sound/msm5205.h" #include "sound/okim6295.h" #include "sound/ymopn.h" +#include "video/bufsprite.h" #include "emupal.h" #include "screen.h" @@ -34,9 +35,7 @@ public: m_bg_data(*this, "bg_data"), m_fg_data(*this, "fg_data"), m_tx_data(*this, "tx_data"), - m_spriteram(*this, "spriteram"), m_scrollram(*this, "scrollram"), - m_buffered_spriteram(*this, "buffered_spriteram", 0x800, ENDIANNESS_BIG), m_soundbank(*this, "soundbank"), m_in(*this, "IN%u", 1U), m_dsw(*this, "DSW%u", 1U), @@ -44,7 +43,8 @@ public: m_audiocpu(*this, "audiocpu"), m_msm(*this, "msm"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_buffered_spriteram(*this, "buffered_spriteram") { } void goal92(machine_config &config); @@ -59,9 +59,7 @@ private: required_shared_ptr m_bg_data; required_shared_ptr m_fg_data; required_shared_ptr m_tx_data; - required_shared_ptr m_spriteram; required_shared_ptr m_scrollram; - memory_share_creator m_buffered_spriteram; required_memory_bank m_soundbank; // video-related @@ -82,6 +80,7 @@ private: required_device m_msm; required_device m_gfxdecode; required_device m_palette; + required_device m_buffered_spriteram; uint16_t inputs_r(offs_t offset, uint16_t mem_mask = ~0); void adpcm_data_w(uint8_t data); @@ -95,7 +94,6 @@ private: TILE_GET_INFO_MEMBER(get_back_tile_info); TILE_GET_INFO_MEMBER(get_fore_tile_info); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE_LINE_MEMBER(screen_vblank); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri); DECLARE_WRITE_LINE_MEMBER(irqhandler); DECLARE_WRITE_LINE_MEMBER(adpcm_int); @@ -185,11 +183,13 @@ TILE_GET_INFO_MEMBER(goal92_state::get_fore_tile_info) void goal92_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri) { + uint16_t *buffered_spriteram = m_buffered_spriteram->buffer(); + for (int offs = 3; offs <= 0x400 - 5; offs += 4) { - uint16_t data = m_buffered_spriteram[offs + 2]; + uint16_t data = buffered_spriteram[offs + 2]; - int y = m_buffered_spriteram[offs + 0]; + int y = buffered_spriteram[offs + 0]; if (y & 0x8000) break; @@ -197,12 +197,12 @@ void goal92_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, if (!(data & 0x8000)) continue; - int sprite = m_buffered_spriteram[offs + 1]; + int sprite = buffered_spriteram[offs + 1]; if ((sprite >> 14) != pri) continue; - int x = m_buffered_spriteram[offs + 3]; + int x = buffered_spriteram[offs + 3]; sprite &= 0x1fff; @@ -270,13 +270,6 @@ uint32_t goal92_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return 0; } -WRITE_LINE_MEMBER(goal92_state::screen_vblank) -{ - // rising edge - if (state) - memcpy(m_buffered_spriteram, m_spriteram, 0x400 * 2); -} - // machine @@ -312,7 +305,7 @@ void goal92_state::main_map(address_map &map) map(0x102000, 0x102fff).ram().w(FUNC(goal92_state::text_w)).share(m_tx_data); map(0x103000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x104000, 0x13ffff).ram(); - map(0x140000, 0x1407ff).ram().share(m_spriteram); + map(0x140000, 0x1407ff).ram().share("buffered_spriteram"); map(0x140800, 0x140801).nopw(); map(0x140802, 0x140803).nopw(); map(0x180000, 0x18000f).r(FUNC(goal92_state::inputs_r)); @@ -531,13 +524,15 @@ void goal92_state::goal92(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &goal92_state::sound_map); // IRQs are triggered by the main CPU // video hardware + BUFFERED_SPRITERAM16(config, m_buffered_spriteram); + 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(40*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); // black border at bottom is a game bug... screen.set_screen_update(FUNC(goal92_state::screen_update)); - screen.screen_vblank().set(FUNC(goal92_state::screen_vblank)); + screen.screen_vblank().set(m_buffered_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_goal92); diff --git a/src/mame/includes/contra.h b/src/mame/includes/contra.h deleted file mode 100644 index 8cdcee49093..00000000000 --- a/src/mame/includes/contra.h +++ /dev/null @@ -1,100 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Carlos A. Lozano, Phil Stroffolino -/************************************************************************* - - Contra / Gryzor - -*************************************************************************/ -#ifndef MAME_INCLUDES_CONTRA_H -#define MAME_INCLUDES_CONTRA_H - -#pragma once - -#include "video/k007121.h" -#include "machine/k007452.h" -#include "emupal.h" -#include "screen.h" -#include "tilemap.h" - -class contra_state : public driver_device -{ -public: - contra_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_fg_cram(*this, "fg_cram"), - m_fg_vram(*this, "fg_vram"), - m_tx_cram(*this, "tx_cram"), - m_tx_vram(*this, "tx_vram"), - m_spriteram(*this, "spriteram"), - m_spriteram_2(*this, "spriteram_2"), - m_bg_cram(*this, "bg_cram"), - m_bg_vram(*this, "bg_vram"), - m_audiocpu(*this, "audiocpu"), - m_k007121_1(*this, "k007121_1"), - m_k007121_2(*this, "k007121_2"), - m_k007452(*this, "k007452"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), - m_palette(*this, "palette") - { } - - void contra(machine_config &config); - -private: - /* memory pointers */ - std::unique_ptr m_buffered_spriteram; - std::unique_ptr m_buffered_spriteram_2; - required_shared_ptr m_fg_cram; - required_shared_ptr m_fg_vram; - required_shared_ptr m_tx_cram; - required_shared_ptr m_tx_vram; - required_shared_ptr m_spriteram; - required_shared_ptr m_spriteram_2; - required_shared_ptr m_bg_cram; - required_shared_ptr m_bg_vram; - - /* video-related */ - tilemap_t *m_bg_tilemap = nullptr; - tilemap_t *m_fg_tilemap = nullptr; - tilemap_t *m_tx_tilemap = nullptr; - rectangle m_bg_clip{}; - rectangle m_fg_clip{}; - rectangle m_tx_clip{}; - - /* devices */ - required_device m_audiocpu; - required_device m_k007121_1; - required_device m_k007121_2; - required_device m_k007452; - void contra_bankswitch_w(uint8_t data); - void contra_sh_irqtrigger_w(uint8_t data); - void sirq_clear_w(uint8_t data); - void contra_coin_counter_w(uint8_t data); - void contra_fg_vram_w(offs_t offset, uint8_t data); - void contra_fg_cram_w(offs_t offset, uint8_t data); - void contra_bg_vram_w(offs_t offset, uint8_t data); - void contra_bg_cram_w(offs_t offset, uint8_t data); - void contra_text_vram_w(offs_t offset, uint8_t data); - void contra_text_cram_w(offs_t offset, uint8_t data); - void contra_K007121_ctrl_0_w(offs_t offset, uint8_t data); - void contra_K007121_ctrl_1_w(offs_t offset, uint8_t data); - TILE_GET_INFO_MEMBER(get_fg_tile_info); - TILE_GET_INFO_MEMBER(get_bg_tile_info); - TILE_GET_INFO_MEMBER(get_tx_tile_info); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - void contra_palette(palette_device &palette) const; - uint32_t screen_update_contra(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(contra_interrupt); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int bank ); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; - void contra_map(address_map &map); - void sound_map(address_map &map); -}; - -#endif // MAME_INCLUDES_CONTRA_H diff --git a/src/mame/includes/gng.h b/src/mame/includes/gng.h deleted file mode 100644 index 1c1628d15b2..00000000000 --- a/src/mame/includes/gng.h +++ /dev/null @@ -1,73 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Pierpaolo Prazzoli -/************************************************************************* - - Ghosts'n Goblins - -*************************************************************************/ -#ifndef MAME_INCLUDES_GNG_H -#define MAME_INCLUDES_GNG_H - -#pragma once - -#include "sound/ymopn.h" -#include "video/bufsprite.h" -#include "emupal.h" -#include "tilemap.h" - -class gng_state : public driver_device -{ -public: - gng_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_spriteram(*this, "spriteram"), - m_fgvideoram(*this, "fgvideoram"), - m_bgvideoram(*this, "bgvideoram"), - m_maincpu(*this, "maincpu"), - m_ym(*this, "ym%u", 1), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") - { } - - void gng(machine_config &config); - void diamond(machine_config &config); - -private: - void gng_bankswitch_w(uint8_t data); - DECLARE_WRITE_LINE_MEMBER(ym_reset_w); - uint8_t diamond_hack_r(); - void gng_fgvideoram_w(offs_t offset, uint8_t data); - void gng_bgvideoram_w(offs_t offset, uint8_t data); - void gng_bgscrollx_w(offs_t offset, uint8_t data); - void gng_bgscrolly_w(offs_t offset, uint8_t data); - DECLARE_WRITE_LINE_MEMBER(flipscreen_w); - TILE_GET_INFO_MEMBER(get_fg_tile_info); - TILE_GET_INFO_MEMBER(get_bg_tile_info); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_gng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - - void diamond_map(address_map &map); - void gng_map(address_map &map); - void sound_map(address_map &map); - - /* memory pointers */ - required_device m_spriteram; - required_shared_ptr m_fgvideoram; - required_shared_ptr m_bgvideoram; - - /* video-related */ - tilemap_t *m_bg_tilemap = nullptr; - tilemap_t *m_fg_tilemap = nullptr; - uint8_t m_scrollx[2]{}; - uint8_t m_scrolly[2]{}; - - required_device m_maincpu; - required_device_array m_ym; - required_device m_gfxdecode; - required_device m_palette; -}; - -#endif // MAME_INCLUDES_GNG_H diff --git a/src/mame/video/contra.cpp b/src/mame/video/contra.cpp deleted file mode 100644 index c7e2db4e44c..00000000000 --- a/src/mame/video/contra.cpp +++ /dev/null @@ -1,300 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Carlos A. Lozano, Phil Stroffolino -/*************************************************************************** - - video/contra.c - -***************************************************************************/ - -#include "emu.h" -#include "includes/contra.h" - - -/*************************************************************************** -** -** Contra has palette RAM, but it also has four lookup table PROMs -** -** 0 sprites #0 -** 1 tiles #0 -** 2 sprites #1 -** 3 tiles #1 -** -***************************************************************************/ - -void contra_state::contra_palette(palette_device &palette) const -{ - uint8_t const *const color_prom = memregion("proms")->base(); - - for (int chip = 0; chip < 2; chip++) - { - for (int pal = 0; pal < 8; pal++) - { - int const clut = (chip << 1) | (pal & 1); - - for (int i = 0; i < 0x100; i++) - { - uint8_t ctabentry; - - if (((pal & 0x01) == 0) && (color_prom[(clut << 8) | i] == 0)) - ctabentry = 0; - else - ctabentry = (pal << 4) | (color_prom[(clut << 8) | i] & 0x0f); - - palette.set_pen_indirect((chip << 11) | (pal << 8) | i, ctabentry); - } - } - } -} - - - -/*************************************************************************** - - Callbacks for the TileMap code - -***************************************************************************/ - -TILE_GET_INFO_MEMBER(contra_state::get_fg_tile_info) -{ - uint8_t ctrl_3 = m_k007121_1->ctrlram_r(3); - uint8_t ctrl_4 = m_k007121_1->ctrlram_r(4); - uint8_t ctrl_5 = m_k007121_1->ctrlram_r(5); - uint8_t ctrl_6 = m_k007121_1->ctrlram_r(6); - int attr = m_fg_cram[tile_index]; - int bit0 = (ctrl_5 >> 0) & 0x03; - int bit1 = (ctrl_5 >> 2) & 0x03; - int bit2 = (ctrl_5 >> 4) & 0x03; - int bit3 = (ctrl_5 >> 6) & 0x03; - int bank = ((attr & 0x80) >> 7) | - ((attr >> (bit0 + 2)) & 0x02) | - ((attr >> (bit1 + 1)) & 0x04) | - ((attr >> (bit2 )) & 0x08) | - ((attr >> (bit3 - 1)) & 0x10) | - ((ctrl_3 & 0x01) << 5); - int mask = (ctrl_4 & 0xf0) >> 4; - - bank = (bank & ~(mask << 1)) | ((ctrl_4 & mask) << 1); - - tileinfo.set(0, - m_fg_vram[tile_index] + bank * 256, - ((ctrl_6 & 0x30) * 2 + 16) + (attr & 7), - 0); -} - -TILE_GET_INFO_MEMBER(contra_state::get_bg_tile_info) -{ - uint8_t ctrl_3 = m_k007121_2->ctrlram_r(3); - uint8_t ctrl_4 = m_k007121_2->ctrlram_r(4); - uint8_t ctrl_5 = m_k007121_2->ctrlram_r(5); - uint8_t ctrl_6 = m_k007121_2->ctrlram_r(6); - int attr = m_bg_cram[tile_index]; - int bit0 = (ctrl_5 >> 0) & 0x03; - int bit1 = (ctrl_5 >> 2) & 0x03; - int bit2 = (ctrl_5 >> 4) & 0x03; - int bit3 = (ctrl_5 >> 6) & 0x03; - int bank = ((attr & 0x80) >> 7) | - ((attr >> (bit0 + 2)) & 0x02) | - ((attr >> (bit1 + 1)) & 0x04) | - ((attr >> (bit2 )) & 0x08) | - ((attr >> (bit3 - 1)) & 0x10) | - ((ctrl_3 & 0x01) << 5); - int mask = (ctrl_4 & 0xf0) >> 4; - - // 2009-12 FP: TO BE VERIFIED - old code used ctrl4 from chip 0?!? - bank = (bank & ~(mask << 1)) | ((ctrl_4 & mask) << 1); - - tileinfo.set(1, - m_bg_vram[tile_index] + bank * 256, - ((ctrl_6 & 0x30) * 2 + 16) + (attr & 7), - 0); -} - -TILE_GET_INFO_MEMBER(contra_state::get_tx_tile_info) -{ - uint8_t ctrl_5 = m_k007121_1->ctrlram_r(5); - uint8_t ctrl_6 = m_k007121_1->ctrlram_r(6); - int attr = m_tx_cram[tile_index]; - int bit0 = (ctrl_5 >> 0) & 0x03; - int bit1 = (ctrl_5 >> 2) & 0x03; - int bit2 = (ctrl_5 >> 4) & 0x03; - int bit3 = (ctrl_5 >> 6) & 0x03; - int bank = ((attr & 0x80) >> 7) | - ((attr >> (bit0 + 2)) & 0x02) | - ((attr >> (bit1 + 1)) & 0x04) | - ((attr >> (bit2 )) & 0x08) | - ((attr >> (bit3 - 1)) & 0x10); - - tileinfo.set(0, - m_tx_vram[tile_index] + bank * 256, - ((ctrl_6 & 0x30) * 2 + 16) + (attr & 7), - 0); -} - - -/*************************************************************************** - - Start the video hardware emulation. - -***************************************************************************/ - -void contra_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - - m_buffered_spriteram = std::make_unique(0x800); - m_buffered_spriteram_2 = std::make_unique(0x800); - - m_bg_clip = m_screen->visible_area(); - m_bg_clip.min_x += 40; - - m_fg_clip = m_bg_clip; - - m_tx_clip = m_screen->visible_area(); - m_tx_clip.max_x = 39; - m_tx_clip.min_x = 0; - - m_fg_tilemap->set_transparent_pen(0); - - save_pointer(NAME(m_buffered_spriteram), 0x800); - save_pointer(NAME(m_buffered_spriteram_2), 0x800); -} - - -/*************************************************************************** - - Memory handlers - -***************************************************************************/ - -void contra_state::contra_fg_vram_w(offs_t offset, uint8_t data) -{ - m_fg_vram[offset] = data; - m_fg_tilemap->mark_tile_dirty(offset); -} - -void contra_state::contra_fg_cram_w(offs_t offset, uint8_t data) -{ - m_fg_cram[offset] = data; - m_fg_tilemap->mark_tile_dirty(offset); -} - -void contra_state::contra_bg_vram_w(offs_t offset, uint8_t data) -{ - m_bg_vram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset); -} - -void contra_state::contra_bg_cram_w(offs_t offset, uint8_t data) -{ - m_bg_cram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset); -} - -void contra_state::contra_text_vram_w(offs_t offset, uint8_t data) -{ - m_tx_vram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset); -} - -void contra_state::contra_text_cram_w(offs_t offset, uint8_t data) -{ - m_tx_cram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset); -} - -void contra_state::contra_K007121_ctrl_0_w(offs_t offset, uint8_t data) -{ - uint8_t ctrl_6 = m_k007121_1->ctrlram_r(6); - - if (offset == 3) - { - if ((data & 0x8) == 0) - memcpy(m_buffered_spriteram.get(), m_spriteram + 0x800, 0x800); - else - memcpy(m_buffered_spriteram.get(), m_spriteram, 0x800); - } - - if (offset == 6) - { - if (ctrl_6 != data) - m_fg_tilemap->mark_all_dirty(); - } - - if (offset == 7) - m_fg_tilemap->set_flip((data & 0x08) ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - - m_k007121_1->ctrl_w(offset, data); -} - -void contra_state::contra_K007121_ctrl_1_w(offs_t offset, uint8_t data) -{ - uint8_t ctrl_6 = m_k007121_2->ctrlram_r(6); - - if (offset == 3) - { - if ((data & 0x8) == 0) - memcpy(m_buffered_spriteram_2.get(), m_spriteram_2 + 0x800, 0x800); - else - memcpy(m_buffered_spriteram_2.get(), m_spriteram_2 + 0x000, 0x800); - } - if (offset == 6) - { - if (ctrl_6 != data ) - m_bg_tilemap->mark_all_dirty(); - } - if (offset == 7) - m_bg_tilemap->set_flip((data & 0x08) ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - - m_k007121_2->ctrl_w(offset, data); -} - - - -/*************************************************************************** - - Display Refresh - -***************************************************************************/ - -void contra_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int bank ) -{ - k007121_device *k007121 = bank ? m_k007121_2 : m_k007121_1; - int base_color = (k007121->ctrlram_r(6) & 0x30) * 2; - const uint8_t *source; - - if (bank == 0) - source = m_buffered_spriteram.get(); - else - source = m_buffered_spriteram_2.get(); - - k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(bank), *m_palette, source, base_color, 40, 0, priority_bitmap, (uint32_t)-1); -} - -uint32_t contra_state::screen_update_contra(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - uint8_t ctrl_1_0 = m_k007121_1->ctrlram_r(0); - uint8_t ctrl_1_2 = m_k007121_1->ctrlram_r(2); - uint8_t ctrl_2_0 = m_k007121_2->ctrlram_r(0); - uint8_t ctrl_2_2 = m_k007121_2->ctrlram_r(2); - rectangle bg_finalclip = m_bg_clip; - rectangle fg_finalclip = m_fg_clip; - rectangle tx_finalclip = m_tx_clip; - - bg_finalclip &= cliprect; - fg_finalclip &= cliprect; - tx_finalclip &= cliprect; - - m_fg_tilemap->set_scrollx(0, ctrl_1_0 - 40); - m_fg_tilemap->set_scrolly(0, ctrl_1_2); - m_bg_tilemap->set_scrollx(0, ctrl_2_0 - 40); - m_bg_tilemap->set_scrolly(0, ctrl_2_2); - - m_bg_tilemap->draw(screen, bitmap, bg_finalclip, 0 ,0); - m_fg_tilemap->draw(screen, bitmap, fg_finalclip, 0 ,0); - draw_sprites(bitmap,cliprect, screen.priority(), 0); - draw_sprites(bitmap,cliprect, screen.priority(), 1); - m_tx_tilemap->draw(screen, bitmap, tx_finalclip, 0 ,0); - return 0; -} diff --git a/src/mame/video/gng.cpp b/src/mame/video/gng.cpp deleted file mode 100644 index d0513344f6e..00000000000 --- a/src/mame/video/gng.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Pierpaolo Prazzoli -/*************************************************************************** - - video.c - - Functions to emulate the video hardware of the machine. - -***************************************************************************/ - -#include "emu.h" -#include "includes/gng.h" - - -/*************************************************************************** - - Callbacks for the TileMap code - -***************************************************************************/ - -TILE_GET_INFO_MEMBER(gng_state::get_fg_tile_info) -{ - uint8_t attr = m_fgvideoram[tile_index + 0x400]; - tileinfo.set(0, - m_fgvideoram[tile_index] + ((attr & 0xc0) << 2), - attr & 0x0f, - TILE_FLIPYX((attr & 0x30) >> 4)); -} - -TILE_GET_INFO_MEMBER(gng_state::get_bg_tile_info) -{ - uint8_t attr = m_bgvideoram[tile_index + 0x400]; - tileinfo.set(1, - m_bgvideoram[tile_index] + ((attr & 0xc0) << 2), - attr & 0x07, - TILE_FLIPYX((attr & 0x30) >> 4)); - tileinfo.group = (attr & 0x08) >> 3; -} - - - -/*************************************************************************** - - Start the video hardware emulation. - -***************************************************************************/ - -void gng_state::video_start() -{ - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gng_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gng_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); - - m_fg_tilemap->set_transparent_pen(3); - m_bg_tilemap->set_transmask(0, 0xff, 0x00); // split type 0 is totally transparent in front half - m_bg_tilemap->set_transmask(1, 0x41, 0xbe); // split type 1 has pens 0 and 6 transparent in front half - - m_bg_tilemap->set_scrolldx(128, 128); - m_bg_tilemap->set_scrolldy( 6, 6); - m_fg_tilemap->set_scrolldx(128, 128); - m_fg_tilemap->set_scrolldy( 6, 6); -} - - -/*************************************************************************** - - Memory handlers - -***************************************************************************/ - -void gng_state::gng_fgvideoram_w(offs_t offset, uint8_t data) -{ - m_fgvideoram[offset] = data; - m_fg_tilemap->mark_tile_dirty(offset & 0x3ff); -} - -void gng_state::gng_bgvideoram_w(offs_t offset, uint8_t data) -{ - m_bgvideoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset & 0x3ff); -} - - -void gng_state::gng_bgscrollx_w(offs_t offset, uint8_t data) -{ - m_scrollx[offset] = data; - m_bg_tilemap->set_scrollx(0, m_scrollx[0] + 256 * m_scrollx[1]); -} - -void gng_state::gng_bgscrolly_w(offs_t offset, uint8_t data) -{ - m_scrolly[offset] = data; - m_bg_tilemap->set_scrolly(0, m_scrolly[0] + 256 * m_scrolly[1]); -} - - -WRITE_LINE_MEMBER(gng_state::flipscreen_w) -{ - flip_screen_set(!state); -} - - - -/*************************************************************************** - - Display refresh - -***************************************************************************/ - -void gng_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) -{ - uint8_t *buffered_spriteram = m_spriteram->buffer(); - gfx_element *gfx = m_gfxdecode->gfx(2); - int offs; - - - for (offs = m_spriteram->bytes() - 4; offs >= 0; offs -= 4) - { - uint8_t attributes = buffered_spriteram[offs + 1]; - int sx = buffered_spriteram[offs + 3] - 0x100 * (attributes & 0x01); - int sy = buffered_spriteram[offs + 2]; - int flipx = attributes & 0x04; - int flipy = attributes & 0x08; - - if (flip_screen()) - { - sx = 240 - sx; - sy = 240 - sy; - flipx = !flipx; - flipy = !flipy; - } - - gfx->transpen(bitmap,cliprect, - buffered_spriteram[offs] + ((attributes << 2) & 0x300), - (attributes >> 4) & 3, - flipx,flipy, - sx+128,sy+6,15); - } -} - -uint32_t gng_state::screen_update_gng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 0); - draw_sprites(bitmap, cliprect); - m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 0); - m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - return 0; -} -- cgit v1.2.3