contra.cpp, gng.cpp: finders and other small cleanups

This commit is contained in:
Ivan Vangelista 2022-04-01 17:59:14 +02:00
parent b206c1c7bd
commit 976ec5da28
8 changed files with 941 additions and 1105 deletions

View File

@ -1554,8 +1554,6 @@ files {
MAME_DIR .. "src/mame/drivers/fcrash.cpp", MAME_DIR .. "src/mame/drivers/fcrash.cpp",
MAME_DIR .. "src/mame/includes/fcrash.h", MAME_DIR .. "src/mame/includes/fcrash.h",
MAME_DIR .. "src/mame/drivers/gng.cpp", 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/drivers/gunsmoke.cpp",
MAME_DIR .. "src/mame/includes/gunsmoke.h", MAME_DIR .. "src/mame/includes/gunsmoke.h",
MAME_DIR .. "src/mame/video/gunsmoke.cpp", MAME_DIR .. "src/mame/video/gunsmoke.cpp",
@ -2435,8 +2433,6 @@ files {
MAME_DIR .. "src/mame/includes/combatsc.h", MAME_DIR .. "src/mame/includes/combatsc.h",
MAME_DIR .. "src/mame/video/combatsc.cpp", MAME_DIR .. "src/mame/video/combatsc.cpp",
MAME_DIR .. "src/mame/drivers/contra.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/drivers/crimfght.cpp",
MAME_DIR .. "src/mame/includes/crimfght.h", MAME_DIR .. "src/mame/includes/crimfght.h",
MAME_DIR .. "src/mame/video/crimfght.cpp", MAME_DIR .. "src/mame/video/crimfght.cpp",

View File

@ -19,29 +19,311 @@ Dip locations and factory settings verified with manual
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
#include "includes/contra.h"
#include "includes/konamipt.h" #include "includes/konamipt.h"
#include "machine/k007452.h"
#include "video/k007121.h"
#include "cpu/m6809/hd6309.h" #include "cpu/m6809/hd6309.h"
#include "cpu/m6809/m6809.h" #include "cpu/m6809/m6809.h"
#include "machine/gen_latch.h" #include "machine/gen_latch.h"
#include "machine/k007452.h"
#include "sound/ymopm.h" #include "sound/ymopm.h"
#include "video/bufsprite.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h" #include "speaker.h"
#include "tilemap.h"
INTERRUPT_GEN_MEMBER(contra_state::contra_interrupt) namespace {
class contra_state : public driver_device
{ {
if (m_k007121_1->ctrlram_r(7) & 0x02) 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<uint8_t, 3> m_cram;
required_shared_ptr_array<uint8_t, 3> m_vram;
required_memory_bank m_mainbank;
// video-related
tilemap_t *m_tilemap[3]{};
rectangle m_clip[3]{};
// devices
required_device_array<buffered_spriteram8_device, 2> m_buffered_spriteram;
required_device<cpu_device> m_audiocpu;
required_device_array<k007121_device, 2> m_k007121;
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_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 <uint8_t Which> void vram_w(offs_t offset, uint8_t data);
template <uint8_t Which> void cram_w(offs_t offset, uint8_t data);
template <uint8_t Which> void K007121_ctrl_w(offs_t offset, uint8_t data);
template <uint8_t Which> 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 <uint8_t Which> 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 <uint8_t Which>
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;
m_tilemap[0]->set_transparent_pen(0);
}
/***************************************************************************
Memory handlers
***************************************************************************/
template <uint8_t Which>
void contra_state::vram_w(offs_t offset, uint8_t data)
{
m_vram[Which][offset] = data;
m_tilemap[Which]->mark_tile_dirty(offset);
}
template <uint8_t Which>
void contra_state::cram_w(offs_t offset, uint8_t data)
{
m_cram[Which][offset] = data;
m_tilemap[Which]->mark_tile_dirty(offset);
}
template <uint8_t Which>
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 <uint8_t Which>
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); 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); 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); 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);
machine().bookkeeping().coin_counter_w(0, data & 0x01); machine().bookkeeping().coin_counter_w(1, data & 0x02);
if (data & 0x02)
machine().bookkeeping().coin_counter_w(1, (data & 0x02) >> 1);
} }
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(0x0008, 0x000f).rw("k007452", FUNC(k007452_device::read), FUNC(k007452_device::write));
map(0x0010, 0x0010).portr("SYSTEM"); map(0x0010, 0x0010).portr("SYSTEM");
map(0x0011, 0x0011).portr("P1"); map(0x0011, 0x0011).portr("P1");
@ -72,39 +351,39 @@ void contra_state::contra_map(address_map &map)
map(0x0015, 0x0015).portr("DSW2"); map(0x0015, 0x0015).portr("DSW2");
map(0x0016, 0x0016).portr("DSW3"); map(0x0016, 0x0016).portr("DSW3");
map(0x0018, 0x0018).w(FUNC(contra_state::contra_coin_counter_w)); map(0x0018, 0x0018).w(FUNC(contra_state::coin_counter_w));
map(0x001a, 0x001a).w(FUNC(contra_state::contra_sh_irqtrigger_w)); map(0x001a, 0x001a).w(FUNC(contra_state::sh_irqtrigger_w));
map(0x001c, 0x001c).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x001c, 0x001c).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x001e, 0x001e).nopw(); /* ? */ map(0x001e, 0x001e).nopw(); // ?
map(0x0060, 0x0067).w(FUNC(contra_state::contra_K007121_ctrl_1_w)); 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(0x0c00, 0x0cff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
map(0x1000, 0x1fff).ram(); map(0x1000, 0x1fff).ram();
map(0x2000, 0x23ff).ram().w(FUNC(contra_state::contra_fg_cram_w)).share("fg_cram"); map(0x2000, 0x23ff).ram().w(FUNC(contra_state::cram_w<0>)).share(m_cram[0]);
map(0x2400, 0x27ff).ram().w(FUNC(contra_state::contra_fg_vram_w)).share("fg_vram"); map(0x2400, 0x27ff).ram().w(FUNC(contra_state::vram_w<0>)).share(m_vram[0]);
map(0x2800, 0x2bff).ram().w(FUNC(contra_state::contra_text_cram_w)).share("tx_cram"); map(0x2800, 0x2bff).ram().w(FUNC(contra_state::cram_w<2>)).share(m_cram[2]);
map(0x2c00, 0x2fff).ram().w(FUNC(contra_state::contra_text_vram_w)).share("tx_vram"); map(0x2c00, 0x2fff).ram().w(FUNC(contra_state::vram_w<2>)).share(m_vram[2]);
map(0x3000, 0x3fff).ram().share("spriteram"); map(0x3000, 0x3fff).ram().share("spriteram1");
map(0x4000, 0x43ff).ram().w(FUNC(contra_state::contra_bg_cram_w)).share("bg_cram"); map(0x4000, 0x43ff).ram().w(FUNC(contra_state::cram_w<1>)).share(m_cram[1]);
map(0x4400, 0x47ff).ram().w(FUNC(contra_state::contra_bg_vram_w)).share("bg_vram"); map(0x4400, 0x47ff).ram().w(FUNC(contra_state::vram_w<1>)).share(m_vram[1]);
map(0x4800, 0x4fff).ram(); map(0x4800, 0x4fff).ram();
map(0x5000, 0x5fff).ram().share("spriteram_2"); map(0x5000, 0x5fff).ram().share("spriteram2");
map(0x6000, 0x7fff).bankr("bank1"); map(0x6000, 0x7fff).bankr(m_mainbank);
map(0x7000, 0x7000).w(FUNC(contra_state::contra_bankswitch_w)); 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) void contra_state::sound_map(address_map &map)
{ {
map(0x0000, 0x0000).r("soundlatch", FUNC(generic_latch_8_device::read)); 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(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(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") PORT_START("DSW1")
KONAMI_COINAGE_LOC(DEF_STR( Free_Play ), "No Coin B", SW1) 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_START("DSW2")
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") 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_INCLUDE( contra )
PORT_MODIFY("DSW2") 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( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) ) PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) )
PORT_MODIFY("DSW3") 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( 0x02, DEF_STR( Single ) )
PORT_DIPSETTING( 0x00, DEF_STR( Dual ) ) PORT_DIPSETTING( 0x00, DEF_STR( Dual ) )
INPUT_PORTS_END 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 ) static GFXDECODE_START( gfx_contra )
GFXDECODE_ENTRY( "gfx1", 0, gfxlayout, 0, 8*16 ) GFXDECODE_ENTRY( "k007121_1", 0, gfx_8x8x4_packed_msb, 0, 8*16 )
GFXDECODE_ENTRY( "gfx2", 0, gfxlayout, 8*16*16, 8*16 ) GFXDECODE_ENTRY( "k007121_2", 0, gfx_8x8x4_packed_msb, 8*16*16, 8*16 )
GFXDECODE_END GFXDECODE_END
void contra_state::machine_start() void contra_state::machine_start()
{ {
uint8_t *ROM = memregion("maincpu")->base(); m_mainbank->configure_entries(0, 16, memregion("maincpu")->base(), 0x2000);
membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x2000);
} }
void contra_state::machine_reset() void contra_state::machine_reset()
@ -208,40 +474,44 @@ void contra_state::machine_reset()
void contra_state::contra(machine_config &config) void contra_state::contra(machine_config &config)
{ {
/* basic machine hardware */ // basic machine hardware
HD6309E(config, m_maincpu, XTAL(24'000'000) / 8); /* (HD63C09EP) */ HD6309E(config, m_maincpu, XTAL(24'000'000) / 8); // (HD63C09EP)
m_maincpu->set_addrmap(AS_PROGRAM, &contra_state::contra_map); m_maincpu->set_addrmap(AS_PROGRAM, &contra_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(contra_state::contra_interrupt)); 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); 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"); 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); SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60); 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_size(37*8, 32*8);
m_screen->set_visarea(0*8, 35*8-1, 2*8, 30*8-1); 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); m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_contra); 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_format(palette_device::xBGR_555, 2 * 8 * 16 * 16);
m_palette->set_indirect_entries(128); m_palette->set_indirect_entries(128);
m_palette->set_endianness(ENDIANNESS_LITTLE); m_palette->set_endianness(ENDIANNESS_LITTLE);
K007121(config, m_k007121_1, 0); K007121(config, m_k007121[0], 0);
m_k007121_1->set_palette_tag(m_palette); m_k007121[0]->set_palette_tag(m_palette);
K007121(config, m_k007121_2, 0); K007121(config, m_k007121[1], 0);
m_k007121_2->set_palette_tag(m_palette); m_k007121[1]->set_palette_tag(m_palette);
/* sound hardware */ // sound hardware
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right(); SPEAKER(config, "rspeaker").front_right();
@ -252,70 +522,67 @@ void contra_state::contra(machine_config &config)
ROM_START( contra ) ROM_START( contra )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "633m03.18a", 0x20000, 0x08000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) ) ROM_LOAD( "633i02.17a", 0x00000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) )
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "633m03.18a", 0x10000, 0x10000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) )
ROM_LOAD( "633i02.17a", 0x10000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) 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( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) )
ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) 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( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) )
ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) )
ROM_REGION( 0x0500, "proms", 0 ) ROM_REGION( 0x0500, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_REGION( 0x0001, "pals", 0 ) 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_END
ROM_START( contra1 ) ROM_START( contra1 )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "633i03.18a", 0x20000, 0x08000, CRC(7fc0d8cf) SHA1(cf1cf15646a4e5dc72671e957bc51ca44d30995c) ) ROM_LOAD( "633i02.17a", 0x00000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) )
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "633i03.18a", 0x10000, 0x10000, CRC(7fc0d8cf) SHA1(cf1cf15646a4e5dc72671e957bc51ca44d30995c) )
ROM_LOAD( "633i02.17a", 0x10000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) 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( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) )
ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) 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( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) )
ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) )
ROM_REGION( 0x0400, "proms", 0 ) ROM_REGION( 0x0400, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_REGION( 0x0001, "pals", 0 ) 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_END
ROM_START( contrae ) ROM_START( contrae )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "633_e03.18a", 0x20000, 0x08000, CRC(7ebdb314) SHA1(b42c032cce7ae0c9b3eea6a41b7ffa5cb7fced5d) ) ROM_LOAD( "633_e02.17a", 0x00000, 0x10000, CRC(9d5ebe66) SHA1(5218426e1494b4f6dec667f1ade7ada13aa04f2b) )
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "633_e03.18a", 0x10000, 0x10000, CRC(7ebdb314) SHA1(b42c032cce7ae0c9b3eea6a41b7ffa5cb7fced5d) )
ROM_LOAD( "633_e02.17a", 0x10000, 0x10000, CRC(9d5ebe66) SHA1(5218426e1494b4f6dec667f1ade7ada13aa04f2b) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) ROM_LOAD( "633e01.12a", 0x000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) )
// this PCB used official Konami riser-boards in place of the mask roms // this PCB used official Konami riser-boards in place of the mask ROMs
ROM_REGION( 0x80000, "gfx1", 0 ) ROM_REGION( 0x80000, "k007121_1", 0 )
ROM_LOAD16_BYTE( "633_e04_a.7d", 0x00000, 0x10000, CRC(e027f330) SHA1(e3480c0ed9f5ed5df829e66eb72e01ea39d5fca3) ) 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_b.7d", 0x20000, 0x10000, CRC(a71230f5) SHA1(c2c92b42a04adbb4c7ba3d4632b9a9db0555840e) )
ROM_LOAD16_BYTE( "633_e04_c.7d", 0x40000, 0x10000, CRC(0b103d01) SHA1(95e7feb7103d71b43ba921b7a376a2faf642621b) ) 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_c.7f", 0x40001, 0x10000, CRC(acba86bf) SHA1(c248c837b1f8093bcaf465b0c75b67f1f67a3f61) )
ROM_LOAD16_BYTE( "633_e05_d.7f", 0x60001, 0x10000, CRC(59cf234d) SHA1(4a6bb30789e581c0600c55d8e8fba778e30ba299) ) 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_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_b.16d", 0x20000, 0x10000, CRC(e17d5807) SHA1(15ebbf62d026cc8ac75c9877304458cbc0c5d5e0) )
ROM_LOAD16_BYTE( "633_e06_c.16d", 0x40000, 0x10000, CRC(7d6a28cd) SHA1(9fbbe0460406bb8b3e2e572c4d5a2f8be4ba9c2e) ) 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_LOAD16_BYTE( "633_e07_d.16f", 0x60001, 0x10000, CRC(cfab0988) SHA1(3961bcbc3093b787211ab2815914f90a89df78b1) )
ROM_REGION( 0x0500, "proms", 0 ) ROM_REGION( 0x0500, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633e11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_REGION( 0x0001, "pals", 0 ) 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_END
ROM_START( contraj ) ROM_START( contraj )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "633n03.18a", 0x20000, 0x08000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) ) ROM_LOAD( "633k02.17a", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) )
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "633n03.18a", 0x10000, 0x10000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) )
ROM_LOAD( "633k02.17a", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) 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( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) )
ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) 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( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) )
ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) )
ROM_REGION( 0x0400, "proms", 0 ) ROM_REGION( 0x0400, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_REGION( 0x0001, "pals", 0 ) 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_END
ROM_START( contraj1 ) ROM_START( contraj1 )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "633k03.18a", 0x20000, 0x08000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) ) ROM_LOAD( "633k02.17a", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) )
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "633k03.18a", 0x10000, 0x10000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) )
ROM_LOAD( "633k02.17a", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) 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( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) )
ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) 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( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) )
ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) )
ROM_REGION( 0x0400, "proms", 0 ) ROM_REGION( 0x0400, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_REGION( 0x0001, "pals", 0 ) 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_END
ROM_START( gryzor ) ROM_START( gryzor )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "633j03.18a", 0x20000, 0x08000, CRC(20919162) SHA1(2f375166428ee03f6e8ac0372a373bb8ab35e64c) ) ROM_LOAD( "633j02.17a", 0x00000, 0x10000, CRC(b5922f9a) SHA1(441a23dc99a908ec2c09c855e73070dbab8c5ae2) )
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "633j03.18a", 0x10000, 0x10000, CRC(20919162) SHA1(2f375166428ee03f6e8ac0372a373bb8ab35e64c) )
ROM_LOAD( "633j02.17a", 0x10000, 0x10000, CRC(b5922f9a) SHA1(441a23dc99a908ec2c09c855e73070dbab8c5ae2) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) 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( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) )
ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) 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( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) )
ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) )
ROM_REGION( 0x0400, "proms", 0 ) ROM_REGION( 0x0400, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_REGION( 0x0001, "pals", 0 ) 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_END
ROM_START( gryzor1 ) ROM_START( gryzor1 )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "633g2.18a", 0x20000, 0x08000, CRC(92ca77bd) SHA1(3a56f51a617edff9f2a60df0141dff040881b82a) ) ROM_LOAD( "633g3.17a", 0x00000, 0x10000, CRC(bbd9e95e) SHA1(fd5de1bcc485de7b8fc2e321351c2e3ddd25d053) )
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "633g2.18a", 0x10000, 0x10000, CRC(92ca77bd) SHA1(3a56f51a617edff9f2a60df0141dff040881b82a) )
ROM_LOAD( "633g3.17a", 0x10000, 0x10000, CRC(bbd9e95e) SHA1(fd5de1bcc485de7b8fc2e321351c2e3ddd25d053) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "633e01.12a", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) 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( "633e04.7d", 0x00000, 0x40000, CRC(14ddc542) SHA1(c7d8592672a6e50c2fe6b0670001c340022f16f9) )
ROM_LOAD16_BYTE( "633e05.7f", 0x00001, 0x40000, CRC(42185044) SHA1(a6e2598d766e6995c1a912e4a04987e6f4d547ff) ) 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( "633e06.16d", 0x00000, 0x40000, CRC(9cf6faae) SHA1(9ab79c06cb541ce6fdac322886b8a14a2f3f5cf7) )
ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) ) ROM_LOAD16_BYTE( "633e07.16f", 0x00001, 0x40000, CRC(f2d06638) SHA1(0fa0fbfc53ab5c31b9de22f90153d9af37ff22ce) )
ROM_REGION( 0x0400, "proms", 0 ) ROM_REGION( 0x0400, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_REGION( 0x0001, "pals", 0 ) 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_END
/* Bootlegs */ // Bootlegs
ROM_START( contrab ) ROM_START( contrab )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "3.ic20", 0x20000, 0x08000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) ) /* == 633m03.18a */ ROM_LOAD( "1.ic19", 0x00000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) // == 633i03.18a
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "3.ic20", 0x10000, 0x10000, CRC(d045e1da) SHA1(ec781e98a6efb14861223250c6239b06ec98ed0b) ) // == 633m03.18a
ROM_LOAD( "1.ic19", 0x10000, 0x10000, CRC(b2f7bd9a) SHA1(6c29568419bc49f0be3995b0c34edd9038f6f8d9) ) /* == 633i03.18a */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "3.ic63", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) /* == 633k01.12a */ ROM_LOAD( "3.ic63", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) // == 633k01.12a
ROM_REGION( 0x80000, "gfx1", 0 ) ROM_REGION( 0x80000, "k007121_1", 0 )
/* bootleg versions use smaller gfx ROMs, but the data is the same */ // bootleg versions use smaller gfx ROMs, but the data is the same
ROM_LOAD( "7.rom", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) ) ROM_LOAD( "7.rom", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) )
ROM_LOAD( "10.rom", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) ) ROM_LOAD( "10.rom", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) )
ROM_LOAD( "9.rom", 0x20000, 0x10000, CRC(875c61de) SHA1(e8dc42fef810a9f5471d96cb5297eb29296ba472) ) 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( "17.rom", 0x60000, 0x10000, CRC(ce4330b9) SHA1(0a2bd31baa0bc5e3745ee5ddac995557a551d58c) )
ROM_LOAD( "18.rom", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) ) ROM_LOAD( "18.rom", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) )
ROM_REGION( 0x80000, "gfx2", 0 ) ROM_REGION( 0x80000, "k007121_2", 0 )
/* bootleg versions use smaller gfx ROMs, but the data is the same */ // bootleg versions use smaller gfx ROMs, but the data is the same
ROM_LOAD( "4.rom", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) ) ROM_LOAD( "4.rom", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) )
ROM_LOAD( "5.rom", 0x10000, 0x10000, CRC(e01a5b9c) SHA1(58c99cf99f209c584da757320a2f107244056d4c) ) ROM_LOAD( "5.rom", 0x10000, 0x10000, CRC(e01a5b9c) SHA1(58c99cf99f209c584da757320a2f107244056d4c) )
ROM_LOAD( "6.rom", 0x20000, 0x10000, CRC(aeea6744) SHA1(220b42f707db99967bdcbd9ac66fcc83675a72aa) ) 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( "11.rom", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) )
ROM_LOAD( "12.rom", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) ) ROM_LOAD( "12.rom", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) )
ROM_LOAD( "13.rom", 0x60000, 0x10000, CRC(2b513d12) SHA1(152ebd849751cc2e95513134ce773a6b2eeb320e) ) 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_REGION( 0x0500, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "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( "conprom.53", 0x0400, 0x0100, CRC(05a1da7e) SHA1(ec0bdfc9da05c99e6a283014769db6d641f1a0aa) ) // unknown (only present in this bootleg)
ROM_END ROM_END
ROM_START( contrabj ) ROM_START( contrabj )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "2.2k", 0x20000, 0x08000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) ) /* == 633n03.18a */ ROM_LOAD( "1.2h", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) // == 633k02.17a
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "2.2k", 0x10000, 0x10000, CRC(fedab568) SHA1(7fd4546335bdeef7f8326d4cbde7fa36d74e5cfc) ) // == 633n03.18a
ROM_LOAD( "1.2h", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) /* == 633k02.17a */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "a3.4p", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) /* == 633k01.12a */ ROM_LOAD( "a3.4p", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) // == 633k01.12a
ROM_REGION( 0x80000, "gfx1", 0 ) ROM_REGION( 0x80000, "k007121_1", 0 )
/* bootleg versions use smaller gfx ROMs, but the data is the same */ // bootleg versions use smaller gfx ROMs, but the data is the same
ROM_LOAD( "a7.14f", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) ) ROM_LOAD( "a7.14f", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) )
ROM_LOAD( "a10.14l", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) ) ROM_LOAD( "a10.14l", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) )
ROM_LOAD( "a9.14k", 0x20000, 0x10000, CRC(875c61de) SHA1(e8dc42fef810a9f5471d96cb5297eb29296ba472) ) 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( "a17.14v", 0x60000, 0x10000, CRC(ce4330b9) SHA1(0a2bd31baa0bc5e3745ee5ddac995557a551d58c) )
ROM_LOAD( "a18.14w", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) ) ROM_LOAD( "a18.14w", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) )
ROM_REGION( 0x80000, "gfx2", 0 ) ROM_REGION( 0x80000, "k007121_2", 0 )
/* bootleg versions use smaller gfx ROMs, but the data is the same */ // bootleg versions use smaller gfx ROMs, but the data is the same
ROM_LOAD( "a4.14a", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) ) ROM_LOAD( "a4.14a", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) )
ROM_LOAD( "a5.14c", 0x10000, 0x10000, CRC(e01a5b9c) SHA1(58c99cf99f209c584da757320a2f107244056d4c) ) 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( "a14.14q", 0x30000, 0x10000, CRC(765afdc7) SHA1(b7f6871cb154ee7e42e683bce08b73b00e61b0bc) )
ROM_LOAD( "a11.14m", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) ) ROM_LOAD( "a11.14m", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) )
ROM_LOAD( "a12.14n", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) ) ROM_LOAD( "a12.14n", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) )
ROM_LOAD( "a13.14p", 0x60000, 0x10000, CRC(2b513d12) SHA1(152ebd849751cc2e95513134ce773a6b2eeb320e) ) 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_REGION( 0x0400, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_END ROM_END
ROM_START( contrabj1 ) ROM_START( contrabj1 )
ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 96k for banked ROMs */ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "2__,contrabtj2.2k", 0x20000, 0x08000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) ) /* == 633k03.18a */ ROM_LOAD( "1.2h", 0x00000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) // == 633k02.17a
ROM_CONTINUE( 0x08000, 0x08000 ) ROM_LOAD( "2__,contrabtj2.2k", 0x10000, 0x10000, CRC(bdb9196d) SHA1(fad170e8fda94c9c9d7b82433daa30b80af12efc) ) // == 633k03.18a
ROM_LOAD( "1.2h", 0x10000, 0x10000, CRC(5d5f7438) SHA1(489fe56ca57ef4f6a7792fba07a9656009f3f285) ) /* == 633k02.17a */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for SOUND code */ ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "a3.4p", 0x08000, 0x08000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) /* == 633k01.12a */ ROM_LOAD( "a3.4p", 0x0000, 0x8000, CRC(d1549255) SHA1(d700c7de36746ba247e3a5d0410b7aa036aa4073) ) // == 633k01.12a
ROM_REGION( 0x80000, "gfx1", 0 ) ROM_REGION( 0x80000, "k007121_1", 0 )
/* bootleg versions use smaller gfx ROMs, but the data is the same */ // bootleg versions use smaller gfx ROMs, but the data is the same
ROM_LOAD( "a7.14f", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) ) ROM_LOAD( "a7.14f", 0x00000, 0x10000, CRC(57f467d2) SHA1(e30be315980f421143d1357174af678362836285) )
ROM_LOAD( "a10.14l", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) ) ROM_LOAD( "a10.14l", 0x10000, 0x10000, CRC(e6db9685) SHA1(4d5ccfe95b082fe9830e7a316f88fd6f02464900) )
ROM_LOAD( "a9.14k", 0x20000, 0x10000, CRC(875c61de) SHA1(e8dc42fef810a9f5471d96cb5297eb29296ba472) ) 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( "a17.14v", 0x60000, 0x10000, CRC(ce4330b9) SHA1(0a2bd31baa0bc5e3745ee5ddac995557a551d58c) )
ROM_LOAD( "a18.14w", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) ) ROM_LOAD( "a18.14w", 0x70000, 0x10000, CRC(1571ce42) SHA1(04082ed78b5e7f20b99d6edfb6c363574abd6158) )
ROM_REGION( 0x80000, "gfx2", 0 ) ROM_REGION( 0x80000, "k007121_2", 0 )
/* bootleg versions use smaller gfx ROMs, but the data is the same */ // bootleg versions use smaller gfx ROMs, but the data is the same
ROM_LOAD( "a4.14a", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) ) ROM_LOAD( "a4.14a", 0x00000, 0x10000, CRC(2cc7e52c) SHA1(7598a63346bf06dd34fd643fdff53fc3de6768a6) )
ROM_LOAD( "a5.14c", 0x10000, 0x10000, CRC(e01a5b9c) SHA1(58c99cf99f209c584da757320a2f107244056d4c) ) 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( "a14.14q", 0x30000, 0x10000, CRC(765afdc7) SHA1(b7f6871cb154ee7e42e683bce08b73b00e61b0bc) )
ROM_LOAD( "a11.14m", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) ) ROM_LOAD( "a11.14m", 0x40000, 0x10000, CRC(bd9ba92c) SHA1(e7f65ed20cd7754cc476e8fab7e56105cedcdb98) )
ROM_LOAD( "a12.14n", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) ) ROM_LOAD( "a12.14n", 0x50000, 0x10000, CRC(d0be7ec2) SHA1(5aa829b8ffbe3f5f92ba672b1c24bfb7836ba1a3) )
ROM_LOAD( "a13.14p", 0x60000, 0x10000, CRC(2b513d12) SHA1(152ebd849751cc2e95513134ce773a6b2eeb320e) ) 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_REGION( 0x0400, "proms", 0 )
ROM_LOAD( "633e08.10g", 0x0000, 0x0100, CRC(9f0949fa) SHA1(7c8fefdcae4523d008a7d39062194c7a80aa3500) ) /* 007121 #0 sprite 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( "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( "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( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) // 007121 #1 char lookup table
ROM_END 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, 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, 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 ) GAME( 1987, contrae, contra, contra, contra, contra_state, empty_init, ROT90, "Konami", "Contra (US / Asia, set 3)", MACHINE_SUPPORTS_SAVE )

View File

@ -17,13 +17,13 @@ Notes:
The 0x6000-0x7fff ROM space doesn't seem to be used: instead the game writes The 0x6000-0x7fff ROM space doesn't seem to be used: instead the game writes
to 6048 and reads from 6000. Silly copy protection? to 6048 and reads from 6000. Silly copy protection?
- Increased "gfx3" to address 0x400 sprites, to avoid Ghosts'n Goblins - Increased "sprites" to address 0x400 sprites, to avoid Ghosts'n Goblins
from drawing a bad sprite. (18/08/2005 Pierpaolo Prazzoli) drawing a bad sprite. (18/08/2005 Pierpaolo Prazzoli)
Notes by Jose Tejada (jotego) Notes by Jose Tejada (jotego)
There is no watchdog in GnG, as previously stated in the MAME driver. 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. 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 The DMA is triggered when a certain memory location is addressed. That location was
thought to be a watchdog before. thought to be a watchdog before.
@ -31,22 +31,225 @@ thought to be a watchdog before.
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
#include "includes/gng.h"
#include "cpu/z80/z80.h"
#include "cpu/m6809/m6809.h" #include "cpu/m6809/m6809.h"
#include "cpu/z80/z80.h"
#include "machine/74259.h" #include "machine/74259.h"
#include "machine/gen_latch.h" #include "machine/gen_latch.h"
#include "sound/ymopn.h"
#include "video/bufsprite.h"
#include "emupal.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
#include "tilemap.h"
void gng_state::gng_bankswitch_w(uint8_t data) 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<buffered_spriteram8_device> m_spriteram;
required_shared_ptr<uint8_t> m_fgvideoram;
required_shared_ptr<uint8_t> 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<cpu_device> m_maincpu;
required_device_array<ym2203_device, 2> m_ym;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_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
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) if (data == 4)
membank("bank1")->set_entry(4); m_mainbank->set_entry(4);
else else
membank("bank1")->set_entry((data & 0x03)); m_mainbank->set_entry(data & 0x03);
} }
WRITE_LINE_MEMBER(gng_state::ym_reset_w) WRITE_LINE_MEMBER(gng_state::ym_reset_w)
@ -63,12 +266,12 @@ uint8_t gng_state::diamond_hack_r()
return 0; return 0;
} }
void gng_state::gng_map(address_map &map) void gng_state::gng_main_map(address_map &map)
{ {
map(0x0000, 0x1dff).ram(); map(0x0000, 0x1dff).ram();
map(0x1e00, 0x1fff).ram().share("spriteram"); map(0x1e00, 0x1fff).ram().share("spriteram");
map(0x2000, 0x27ff).ram().w(FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram"); map(0x2000, 0x27ff).ram().w(FUNC(gng_state::fgvideoram_w)).share(m_fgvideoram);
map(0x2800, 0x2fff).ram().w(FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram"); map(0x2800, 0x2fff).ram().w(FUNC(gng_state::bgvideoram_w)).share(m_bgvideoram);
map(0x3000, 0x3000).portr("SYSTEM"); map(0x3000, 0x3000).portr("SYSTEM");
map(0x3001, 0x3001).portr("P1"); map(0x3001, 0x3001).portr("P1");
map(0x3002, 0x3002).portr("P2"); 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(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(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x3b08, 0x3b09).w(FUNC(gng_state::gng_bgscrollx_w)); map(0x3b08, 0x3b09).w(FUNC(gng_state::bgscrollx_w));
map(0x3b0a, 0x3b0b).w(FUNC(gng_state::gng_bgscrolly_w)); map(0x3b0a, 0x3b0b).w(FUNC(gng_state::bgscrolly_w));
// 0x3c00 is the DMA trigger. Not emulated. // 0x3c00 is the DMA trigger. Not emulated.
map(0x3d00, 0x3d07).w("mainlatch", FUNC(ls259_device::write_d0)); map(0x3d00, 0x3d07).w("mainlatch", FUNC(ls259_device::write_d0));
map(0x3e00, 0x3e00).w(FUNC(gng_state::gng_bankswitch_w)); map(0x3e00, 0x3e00).w(FUNC(gng_state::bankswitch_w));
map(0x4000, 0x5fff).bankr("bank1"); map(0x4000, 0x5fff).bankr(m_mainbank);
map(0x6000, 0xffff).rom(); 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(0x0000, 0x1dff).ram();
map(0x1e00, 0x1fff).ram().share("spriteram"); map(0x1e00, 0x1fff).ram().share("spriteram");
map(0x2000, 0x27ff).ram().w(FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram"); map(0x2000, 0x27ff).ram().w(FUNC(gng_state::fgvideoram_w)).share(m_fgvideoram);
map(0x2800, 0x2fff).ram().w(FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram"); map(0x2800, 0x2fff).ram().w(FUNC(gng_state::bgvideoram_w)).share(m_bgvideoram);
map(0x3000, 0x33ff).noprw(); // faulty POST? map(0x3000, 0x33ff).noprw(); // faulty POST?
map(0x3000, 0x3000).portr("SYSTEM"); map(0x3000, 0x3000).portr("SYSTEM");
map(0x3001, 0x3001).portr("P1"); 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(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(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x3b08, 0x3b09).w(FUNC(gng_state::gng_bgscrollx_w)); map(0x3b08, 0x3b09).w(FUNC(gng_state::bgscrollx_w));
map(0x3b0a, 0x3b0b).w(FUNC(gng_state::gng_bgscrolly_w)); map(0x3b0a, 0x3b0b).w(FUNC(gng_state::bgscrolly_w));
map(0x3c00, 0x3c00).noprw(); /* watchdog? */ map(0x3c00, 0x3c00).noprw(); // watchdog?
map(0x3d00, 0x3d00).nopw(); // ? (writes $01 and $0F) map(0x3d00, 0x3d00).nopw(); // ? (writes $01 and $0F)
map(0x3d01, 0x3d01).nopw(); // ? map(0x3d01, 0x3d01).nopw(); // ?
map(0x3e00, 0x3e00).w(FUNC(gng_state::gng_bankswitch_w)); map(0x3e00, 0x3e00).w(FUNC(gng_state::bankswitch_w));
map(0x4000, 0x5fff).bankr("bank1"); map(0x4000, 0x5fff).bankr(m_mainbank);
map(0x6000, 0xffff).rom(); map(0x6000, 0xffff).rom();
map(0x6000, 0x6000).r(FUNC(gng_state::diamond_hack_r)); map(0x6000, 0x6000).r(FUNC(gng_state::diamond_hack_r));
map(0x6048, 0x6048).nopw(); // ? map(0x6048, 0x6048).nopw(); // ?
@ -204,10 +407,10 @@ static INPUT_PORTS_START( gng )
PORT_DIPSETTING( 0x60, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x60, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) ) PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) )
PORT_DIPSETTING( 0x00, DEF_STR( Very_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 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 ) static INPUT_PORTS_START( makaimur )
PORT_INCLUDE( gng ) PORT_INCLUDE( gng )
@ -342,9 +545,9 @@ static const gfx_layout spritelayout =
static GFXDECODE_START( gfx_gng ) static GFXDECODE_START( gfx_gng )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x80, 16 ) /* colors 0x80-0xbf */ GFXDECODE_ENTRY( "chars", 0, charlayout, 0x80, 16 ) // colors 0x80-0xbf
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0x00, 8 ) /* colors 0x00-0x3f */ GFXDECODE_ENTRY( "tiles", 0, tilelayout, 0x00, 8 ) // colors 0x00-0x3f
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x40, 4 ) /* colors 0x40-0x7f */ GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0x40, 4 ) // colors 0x40-0x7f
GFXDECODE_END GFXDECODE_END
@ -353,8 +556,8 @@ GFXDECODE_END
void gng_state::machine_start() void gng_state::machine_start()
{ {
uint8_t *rombase = memregion("maincpu")->base(); uint8_t *rombase = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 4, &rombase[0x10000], 0x2000); m_mainbank->configure_entries(0, 4, &rombase[0x10000], 0x2000);
membank("bank1")->configure_entry(4, &rombase[0x4000]); m_mainbank->configure_entry(4, &rombase[0x4000]);
save_item(NAME(m_scrollx)); save_item(NAME(m_scrollx));
save_item(NAME(m_scrolly)); save_item(NAME(m_scrolly));
@ -368,34 +571,32 @@ void gng_state::machine_reset()
m_scrolly[1] = 0; m_scrolly[1] = 0;
{ {
int i;
/* TODO: PCB reference clearly shows that the POST has random/filled data on the paletteram. /* 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 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, 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 + 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 + 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->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 + 0, 0x00, 0x00, 0x00);
m_palette->set_pen_color(i+1,0x55,0x55,0x55); 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 + 2, 0xaa, 0xaa, 0xaa);
m_palette->set_pen_color(i+3,0xff,0xff,0xff); m_palette->set_pen_color(i + 3, 0xff, 0xff, 0xff);
} }
} }
} }
void gng_state::gng(machine_config &config) void gng_state::gng(machine_config &config)
{ {
/* basic machine hardware */ // basic machine hardware
MC6809(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */ MC6809(config, m_maincpu, XTAL(12'000'000) / 2); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::gng_map); m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::gng_main_map);
m_maincpu->set_vblank_int("screen", FUNC(gng_state::irq0_line_hold)); 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_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 ls259_device &mainlatch(LS259(config, "mainlatch")); // 9B on A board
mainlatch.q_out_cb<0>().set(FUNC(gng_state::flipscreen_w)); 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<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); }); 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); BUFFERED_SPRITERAM8(config, m_spriteram);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); 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_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_screen_update(FUNC(gng_state::screen_update));
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
screen.set_palette(m_palette); 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); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 256);
/* sound hardware */ // sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, "soundlatch"); 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(0, "mono", 0.40);
m_ym[0]->add_route(1, "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(2, "mono", 0.40);
m_ym[0]->add_route(3, "mono", 0.20); 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(0, "mono", 0.40);
m_ym[1]->add_route(1, "mono", 0.40); m_ym[1]->add_route(1, "mono", 0.40);
m_ym[1]->add_route(2, "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) void gng_state::diamond(machine_config &config)
{ {
gng(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"); config.device_remove("mainlatch");
} }
@ -453,35 +654,35 @@ void gng_state::diamond(machine_config &config)
ROM_START( gng ) ROM_START( gng )
ROM_REGION( 0x18000, "maincpu", 0 ) 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( "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_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_REGION( 0x0100, "plds", 0 ) ROM_REGION( 0x0100, "plds", 0 )
ROM_LOAD( "gg-pal10l8.bin", 0x0000, 0x002c, CRC(87f1b7e0) SHA1(b719c3be7bd4a02660bb0887f752e9769cbd37d2) ) ROM_LOAD( "gg-pal10l8.bin", 0x0000, 0x002c, CRC(87f1b7e0) SHA1(b719c3be7bd4a02660bb0887f752e9769cbd37d2) )
@ -498,28 +699,28 @@ ROM_START( gnga )
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_END ROM_END
ROM_START( gngbl ) ROM_START( gngbl )
@ -533,24 +734,24 @@ ROM_START( gngbl )
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "2.8529.13h", 0x0000, 0x8000, CRC(55cfb196) SHA1(df9cdbb24c26bca226d7274225725d62ea854c7a) ) ROM_LOAD( "2.8529.13h", 0x0000, 0x8000, CRC(55cfb196) SHA1(df9cdbb24c26bca226d7274225725d62ea854c7a) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "1.84490.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "1.84490.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "13.84490.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ 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) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ 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) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ 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) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "8.84490.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "19.84472.4n", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "14.84490.1l", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_END ROM_END
ROM_START( gngprot ) ROM_START( gngprot )
@ -564,24 +765,24 @@ ROM_START( gngprot )
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg14h.bin", 0x0000, 0x8000, CRC(55cfb196) SHA1(df9cdbb24c26bca226d7274225725d62ea854c7a) ) ROM_LOAD( "gg14h.bin", 0x0000, 0x8000, CRC(55cfb196) SHA1(df9cdbb24c26bca226d7274225725d62ea854c7a) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg11e.bin", 0x00000, 0x4000, CRC(ccea9365) SHA1(bb567529fa376afc0a5afd331dcecef4f61cc8a3) ) /* characters */ ROM_LOAD( "gg11e.bin", 0x00000, 0x4000, CRC(ccea9365) SHA1(bb567529fa376afc0a5afd331dcecef4f61cc8a3) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg3e.bin", 0x00000, 0x4000, CRC(68db22c8) SHA1(ada859bfa60d9563a8a86b1b6526f626b932981c) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg3e.bin", 0x00000, 0x4000, CRC(68db22c8) SHA1(ada859bfa60d9563a8a86b1b6526f626b932981c) ) // 0-1 Plane 1
ROM_LOAD( "gg1e.bin", 0x04000, 0x4000, CRC(dad8dd2f) SHA1(30a6dd2f6b26acaab0a003f5099a2fcb46644d45) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg3c.bin", 0x08000, 0x4000, CRC(7a158323) SHA1(183f33f214b4c04e9130cbe2c24e08b5303bb2de) ) // 0-1 Plane 2
ROM_LOAD( "gg1c.bin", 0x0c000, 0x4000, CRC(7314d095) SHA1(1288eaf0d82ac65a1bb94e68114b4b2f84910901) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg3b.bin", 0x10000, 0x4000, CRC(03a96d9b) SHA1(5d74e156b0cd1b54d7bd61e1664834f768d5b9f8) ) // 0-1 Plane 3
ROM_LOAD( "gg1b.bin", 0x14000, 0x4000, CRC(7b9899bc) SHA1(be9b7b18542f38c8fb8b075760995acecace79ad) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg1b.bin", 0x14000, 0x4000, CRC(7b9899bc) SHA1(be9b7b18542f38c8fb8b075760995acecace79ad) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gg4l.bin", 0x00000, 0x4000, CRC(49cf81b4) SHA1(b87aba71446884f9926ced28716876ad701b183f) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg1n.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_END ROM_END
@ -594,28 +795,28 @@ ROM_START( gngblita )
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_REGION( 0x0100, "plds", 0 ) ROM_REGION( 0x0100, "plds", 0 )
ROM_LOAD( "gg-pal10l8.bin", 0x0000, 0x002c, CRC(87f1b7e0) SHA1(b719c3be7bd4a02660bb0887f752e9769cbd37d2) ) ROM_LOAD( "gg-pal10l8.bin", 0x0000, 0x002c, CRC(87f1b7e0) SHA1(b719c3be7bd4a02660bb0887f752e9769cbd37d2) )
@ -630,28 +831,28 @@ ROM_START( gngc )
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gg17.bin", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_END ROM_END
@ -664,166 +865,167 @@ ROM_END
ROM_START( gngt ) ROM_START( gngt )
ROM_REGION( 0x18000, "maincpu", 0 ) 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( "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_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "mm02.14h", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "mm02.14h", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "mm01.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "mm01.11e", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "mm11.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "mm11.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "mm10.1e", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "mm09.3c", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "mm08.1c", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "mm07.3b", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "mm06.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "mm06.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "mm17.4n", 0x00000, 0x4000, CRC(93e50a8f) SHA1(42d367f57bb2fdf60a0445ac1533da99cfeaa617) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "mm12.1l", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "m-02.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* 63s141, video timing (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_LOAD( "m-01.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // 63s141, priority (not used)
ROM_END ROM_END
ROM_START( makaimur ) ROM_START( makaimur )
ROM_REGION( 0x18000, "maincpu", 0 ) 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( "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_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_END ROM_END
ROM_START( makaimurc ) ROM_START( makaimurc )
ROM_REGION( 0x18000, "maincpu", 0 ) 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( "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_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_END ROM_END
ROM_START( makaimurg ) ROM_START( makaimurg )
ROM_REGION( 0x18000, "maincpu", 0 ) 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( "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_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "gg2.bin", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ ROM_LOAD( "gg1.bin", 0x00000, 0x4000, CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "gg11.bin", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) // 0-1 Plane 1
ROM_LOAD( "gg10.bin", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "gg9.bin", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) // 0-1 Plane 2
ROM_LOAD( "gg8.bin", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 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) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "gg7.bin", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) // 0-1 Plane 3
ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "gg6.bin", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "gng13.n4", 0x00000, 0x4000, CRC(4613afdc) SHA1(13e5a38a134bd7cfa16c63a18fa332c6d66b9345) ) /* sprites 0 Plane 1-2 */ 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( "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( "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( "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( "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_LOAD( "gg12.bin", 0x18000, 0x4000, CRC(7780a925) SHA1(3f129ca6d695548b659955fe538584bd9ac2ff17) ) // sprites 2 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tbp24s10.14k", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "63s141.2e", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_END ROM_END
ROM_START( diamond ) ROM_START( diamond )
ROM_REGION( 0x20000, "maincpu", 0 ) 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( "d3", 0x08000, 0x8000, CRC(f436d6fa) SHA1(18287ac51e717ea2ba9b307a738f76735120f21b) )
ROM_LOAD( "d5o", 0x10000, 0x8000, CRC(ae58bd3a) SHA1(674611c7107cae53150fc249ffc616df891698fe) ) /* page 0, 1, 2, 3 */ 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( "d5", 0x18000, 0x8000, CRC(453f3f9e) SHA1(b4dcf2eb0e6d4eca8ccde6e1a60f5e002e49a57b) ) // is this supposed to be used?
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "d2", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) ) ROM_LOAD( "d2", 0x0000, 0x8000, CRC(615f5b6f) SHA1(7ef9ec5c2072e21c787a6bbf700033f50c759c1d) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "d1", 0x00000, 0x4000, CRC(3a24e504) SHA1(56bc38413b8a0dc2829e9c8f7bcfabafe26fd257) ) /* characters */ ROM_LOAD( "d1", 0x00000, 0x4000, CRC(3a24e504) SHA1(56bc38413b8a0dc2829e9c8f7bcfabafe26fd257) )
ROM_REGION( 0x18000, "gfx2", 0 ) ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "d11", 0x00000, 0x4000, CRC(754357d7) SHA1(eb6e07a5f2d02687306711845001205bf0efa61b) ) /* tiles 0-1 Plane 1*/ ROM_LOAD( "d11", 0x00000, 0x4000, CRC(754357d7) SHA1(eb6e07a5f2d02687306711845001205bf0efa61b) ) // 0-1 Plane 1
ROM_LOAD( "d10", 0x04000, 0x4000, CRC(7531edcd) SHA1(dc3eabf7e7503f0588f65620d26c1bc5eebde211) ) /* tiles 2-3 Plane 1*/ ROM_LOAD( "d10", 0x04000, 0x4000, CRC(7531edcd) SHA1(dc3eabf7e7503f0588f65620d26c1bc5eebde211) ) // 2-3 Plane 1
ROM_LOAD( "d9", 0x08000, 0x4000, CRC(22eeca08) SHA1(6454b6c0a7a0991744386b79d4988a2517ad0636) ) /* tiles 0-1 Plane 2*/ ROM_LOAD( "d9", 0x08000, 0x4000, CRC(22eeca08) SHA1(6454b6c0a7a0991744386b79d4988a2517ad0636) ) // 0-1 Plane 2
ROM_LOAD( "d8", 0x0c000, 0x4000, CRC(6b61be60) SHA1(a92ff6e922da523caec1919f53bea48dab4ca564) ) /* tiles 2-3 Plane 2*/ ROM_LOAD( "d8", 0x0c000, 0x4000, CRC(6b61be60) SHA1(a92ff6e922da523caec1919f53bea48dab4ca564) ) // 2-3 Plane 2
ROM_LOAD( "d7", 0x10000, 0x4000, CRC(fd595274) SHA1(8d22f89a7251ecc8b56ee3f8cfaab2fd5a716b3f) ) /* tiles 0-1 Plane 3*/ ROM_LOAD( "d7", 0x10000, 0x4000, CRC(fd595274) SHA1(8d22f89a7251ecc8b56ee3f8cfaab2fd5a716b3f) ) // 0-1 Plane 3
ROM_LOAD( "d6", 0x14000, 0x4000, CRC(7f51dcd2) SHA1(ff4a68a7a6a5caa558898b03ba4a4dc3ab43ce30) ) /* tiles 2-3 Plane 3*/ ROM_LOAD( "d6", 0x14000, 0x4000, CRC(7f51dcd2) SHA1(ff4a68a7a6a5caa558898b03ba4a4dc3ab43ce30) ) // 2-3 Plane 3
ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASEFF ) ROM_REGION( 0x20000, "sprites", ROMREGION_ERASEFF )
ROM_LOAD( "d17", 0x00000, 0x4000, CRC(8164b005) SHA1(d03bf62734b03c90a8393a23f8ce0a3769c43bf7) ) /* sprites 0 Plane 1-2 */ 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_LOAD( "d14", 0x10000, 0x4000, CRC(6f132163) SHA1(cd1ebf9671bcce58896dadbf20f036eaadbe8bd5) ) // sprites 0 Plane 3-4
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "prom1", 0x0000, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (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_LOAD( "prom2", 0x0100, 0x0100, CRC(4a1285a4) SHA1(5018c3950b675af58db499e2883ecbc55419b491) ) // priority (not used)
ROM_END 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 ) GAME( 1985, gng, 0, gng, gng, gng_state, empty_init, ROT0, "Capcom", "Ghosts'n Goblins (World? set 1)", MACHINE_SUPPORTS_SAVE )

View File

@ -17,6 +17,7 @@
#include "sound/msm5205.h" #include "sound/msm5205.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "sound/ymopn.h" #include "sound/ymopn.h"
#include "video/bufsprite.h"
#include "emupal.h" #include "emupal.h"
#include "screen.h" #include "screen.h"
@ -34,9 +35,7 @@ public:
m_bg_data(*this, "bg_data"), m_bg_data(*this, "bg_data"),
m_fg_data(*this, "fg_data"), m_fg_data(*this, "fg_data"),
m_tx_data(*this, "tx_data"), m_tx_data(*this, "tx_data"),
m_spriteram(*this, "spriteram"),
m_scrollram(*this, "scrollram"), m_scrollram(*this, "scrollram"),
m_buffered_spriteram(*this, "buffered_spriteram", 0x800, ENDIANNESS_BIG),
m_soundbank(*this, "soundbank"), m_soundbank(*this, "soundbank"),
m_in(*this, "IN%u", 1U), m_in(*this, "IN%u", 1U),
m_dsw(*this, "DSW%u", 1U), m_dsw(*this, "DSW%u", 1U),
@ -44,7 +43,8 @@ public:
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_msm(*this, "msm"), m_msm(*this, "msm"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") m_palette(*this, "palette"),
m_buffered_spriteram(*this, "buffered_spriteram")
{ } { }
void goal92(machine_config &config); void goal92(machine_config &config);
@ -59,9 +59,7 @@ private:
required_shared_ptr<uint16_t> m_bg_data; required_shared_ptr<uint16_t> m_bg_data;
required_shared_ptr<uint16_t> m_fg_data; required_shared_ptr<uint16_t> m_fg_data;
required_shared_ptr<uint16_t> m_tx_data; required_shared_ptr<uint16_t> m_tx_data;
required_shared_ptr<uint16_t> m_spriteram;
required_shared_ptr<uint16_t> m_scrollram; required_shared_ptr<uint16_t> m_scrollram;
memory_share_creator<uint16_t> m_buffered_spriteram;
required_memory_bank m_soundbank; required_memory_bank m_soundbank;
// video-related // video-related
@ -82,6 +80,7 @@ private:
required_device<msm5205_device> m_msm; required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<buffered_spriteram16_device> m_buffered_spriteram;
uint16_t inputs_r(offs_t offset, uint16_t mem_mask = ~0); uint16_t inputs_r(offs_t offset, uint16_t mem_mask = ~0);
void adpcm_data_w(uint8_t data); 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_back_tile_info);
TILE_GET_INFO_MEMBER(get_fore_tile_info); TILE_GET_INFO_MEMBER(get_fore_tile_info);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 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); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri);
DECLARE_WRITE_LINE_MEMBER(irqhandler); DECLARE_WRITE_LINE_MEMBER(irqhandler);
DECLARE_WRITE_LINE_MEMBER(adpcm_int); 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) 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) 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) if (y & 0x8000)
break; break;
@ -197,12 +197,12 @@ void goal92_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
if (!(data & 0x8000)) if (!(data & 0x8000))
continue; continue;
int sprite = m_buffered_spriteram[offs + 1]; int sprite = buffered_spriteram[offs + 1];
if ((sprite >> 14) != pri) if ((sprite >> 14) != pri)
continue; continue;
int x = m_buffered_spriteram[offs + 3]; int x = buffered_spriteram[offs + 3];
sprite &= 0x1fff; sprite &= 0x1fff;
@ -270,13 +270,6 @@ uint32_t goal92_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
return 0; return 0;
} }
WRITE_LINE_MEMBER(goal92_state::screen_vblank)
{
// rising edge
if (state)
memcpy(m_buffered_spriteram, m_spriteram, 0x400 * 2);
}
// machine // 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(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(0x103000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x104000, 0x13ffff).ram(); map(0x104000, 0x13ffff).ram();
map(0x140000, 0x1407ff).ram().share(m_spriteram); map(0x140000, 0x1407ff).ram().share("buffered_spriteram");
map(0x140800, 0x140801).nopw(); map(0x140800, 0x140801).nopw();
map(0x140802, 0x140803).nopw(); map(0x140802, 0x140803).nopw();
map(0x180000, 0x18000f).r(FUNC(goal92_state::inputs_r)); 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 m_audiocpu->set_addrmap(AS_PROGRAM, &goal92_state::sound_map); // IRQs are triggered by the main CPU
// video hardware // video hardware
BUFFERED_SPRITERAM16(config, m_buffered_spriteram);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60); screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8); 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_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.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); screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_goal92); GFXDECODE(config, m_gfxdecode, m_palette, gfx_goal92);

View File

@ -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<uint8_t[]> m_buffered_spriteram;
std::unique_ptr<uint8_t[]> m_buffered_spriteram_2;
required_shared_ptr<uint8_t> m_fg_cram;
required_shared_ptr<uint8_t> m_fg_vram;
required_shared_ptr<uint8_t> m_tx_cram;
required_shared_ptr<uint8_t> m_tx_vram;
required_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<uint8_t> m_spriteram_2;
required_shared_ptr<uint8_t> m_bg_cram;
required_shared_ptr<uint8_t> 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<cpu_device> m_audiocpu;
required_device<k007121_device> m_k007121_1;
required_device<k007121_device> m_k007121_2;
required_device<k007452_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<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
void contra_map(address_map &map);
void sound_map(address_map &map);
};
#endif // MAME_INCLUDES_CONTRA_H

View File

@ -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<buffered_spriteram8_device> m_spriteram;
required_shared_ptr<uint8_t> m_fgvideoram;
required_shared_ptr<uint8_t> 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<cpu_device> m_maincpu;
required_device_array<ym2203_device, 2> m_ym;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
};
#endif // MAME_INCLUDES_GNG_H

View File

@ -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<uint8_t[]>(0x800);
m_buffered_spriteram_2 = std::make_unique<uint8_t[]>(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;
}

View File

@ -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;
}