From 19a665dc702e1ea2f739c95b35cd6acd55105f18 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 5 Jul 2023 18:13:17 +0200 Subject: New clones marked not working ----------------------------- Mr. and Mrs. PacMan (set 2) [caius] - dataeast/compgolf.cpp, dataeast/dassault.cpp: consolidated drivers in single files --- src/mame/dataeast/compgolf.cpp | 286 ++++++++++++--- src/mame/dataeast/compgolf.h | 69 ---- src/mame/dataeast/compgolf_v.cpp | 129 ------- src/mame/dataeast/dassault.cpp | 726 +++++++++++++++++++++++++-------------- src/mame/dataeast/dassault.h | 73 ---- src/mame/dataeast/dassault_v.cpp | 142 -------- src/mame/mame.lst | 13 +- src/mame/pinball/by35.cpp | 15 +- 8 files changed, 728 insertions(+), 725 deletions(-) delete mode 100644 src/mame/dataeast/compgolf.h delete mode 100644 src/mame/dataeast/compgolf_v.cpp delete mode 100644 src/mame/dataeast/dassault.h delete mode 100644 src/mame/dataeast/dassault_v.cpp diff --git a/src/mame/dataeast/compgolf.cpp b/src/mame/dataeast/compgolf.cpp index f5c8e8f2b58..8eed6387d8c 100644 --- a/src/mame/dataeast/compgolf.cpp +++ b/src/mame/dataeast/compgolf.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail +// copyright-holders: Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail + /******************************************************************************************* Competition Golf Final Round (c) 1986 / 1985 Data East @@ -12,14 +13,200 @@ *******************************************************************************************/ + #include "emu.h" + #include "cpu/m6809/m6809.h" #include "sound/ymopn.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +namespace { + +class compgolf_state : public driver_device +{ +public: + compgolf_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_videoram(*this, "videoram"), + m_bg_ram(*this, "bg_ram"), + m_spriteram(*this, "spriteram"), + m_rombank(*this, "rombank"), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette") + { } + + void init_compgolf() ATTR_COLD; + void compgolf(machine_config &config) ATTR_COLD; + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + virtual void video_start() override ATTR_COLD; + +private: + // memory pointers + required_shared_ptr m_videoram; + required_shared_ptr m_bg_ram; + required_shared_ptr m_spriteram; + required_memory_bank m_rombank; + + // devices + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; + + // video-related + tilemap_t *m_text_tilemap = nullptr; + tilemap_t *m_bg_tilemap = nullptr; + uint8_t m_scrollx_lo = 0; + uint16_t m_scrollx_hi = 0; + uint8_t m_scrolly_lo = 0; + uint16_t m_scrolly_hi = 0; + + // misc + int8_t m_bank = 0; + + void ctrl_w(uint8_t data); + void video_w(offs_t offset, uint8_t data); + void back_w(offs_t offset, uint8_t data); + void scrollx_lo_w(uint8_t data); + void scrolly_lo_w(uint8_t data); + TILE_GET_INFO_MEMBER(get_text_info); + TILEMAP_MAPPER_MEMBER(back_scan); + TILE_GET_INFO_MEMBER(get_back_info); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + void expand_bg() ATTR_COLD; + void program_map(address_map &map) ATTR_COLD; +}; + + +// video + +void compgolf_state::palette(palette_device &palette) const +{ + uint8_t const *const color_prom = memregion("proms")->base(); + + for (int i = 0; i < palette.entries(); i++) + { + int bit0, bit1, bit2; + bit0 = (color_prom[i] >> 0) & 0x01; + bit1 = (color_prom[i] >> 1) & 0x01; + bit2 = (color_prom[i] >> 2) & 0x01; + int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + bit0 = (color_prom[i] >> 3) & 0x01; + bit1 = (color_prom[i] >> 4) & 0x01; + bit2 = (color_prom[i] >> 5) & 0x01; + int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + bit0 = 0; + bit1 = (color_prom[i] >> 6) & 0x01; + bit2 = (color_prom[i] >> 7) & 0x01; + int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + palette.set_pen_color(i, rgb_t(r, g, b)); + } +} + +void compgolf_state::video_w(offs_t offset, uint8_t data) +{ + m_videoram[offset] = data; + m_text_tilemap->mark_tile_dirty(offset / 2); +} + +void compgolf_state::back_w(offs_t offset, uint8_t data) +{ + m_bg_ram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset / 2); +} + +TILE_GET_INFO_MEMBER(compgolf_state::get_text_info) +{ + tile_index <<= 1; + tileinfo.set(2, m_videoram[tile_index + 1] | (m_videoram[tile_index] << 8), m_videoram[tile_index] >> 2, 0); +} -#include "compgolf.h" +TILEMAP_MAPPER_MEMBER(compgolf_state::back_scan) +{ + // logical (col,row) -> memory offset + return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x10) << 4) + ((row & 0x10) << 5); +} +TILE_GET_INFO_MEMBER(compgolf_state::get_back_info) +{ + int const attr = m_bg_ram[tile_index * 2]; + int const code = m_bg_ram[tile_index * 2 + 1] + ((attr & 1) << 8); + int const color = (attr & 0x3e) >> 1; + + tileinfo.set(1, code, color, 0); +} + +void compgolf_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_back_info)), tilemap_mapper_delegate(*this, FUNC(compgolf_state::back_scan)), 16, 16, 32, 32); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_text_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + + m_text_tilemap->set_transparent_pen(0); +} + +/* +preliminary sprite list: + 0 1 2 3 +xx------ xxxxxxxx -------- -------- sprite code +---x---- -------- -------- -------- Double Height +----x--- -------- -------- -------- Color,all of it? +-------- -------- xxxxxxxx -------- Y pos +-------- -------- -------- xxxxxxxx X pos +-----x-- -------- -------- -------- Flip X +-------- -------- -------- -------- Flip Y(used?) +*/ +void compgolf_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + for (int offs = 0; offs < 0x60; offs += 4) + { + int const sprite = m_spriteram[offs + 1] + (((m_spriteram[offs] & 0xc0) >> 6) * 0x100); + int const x = 240 - m_spriteram[offs + 3]; + int const y = m_spriteram[offs + 2]; + int const color = (m_spriteram[offs] & 8) >> 3; + int const fx = m_spriteram[offs] & 4; + int const fy = 0; // ? + + m_gfxdecode->gfx(0)->transpen(bitmap, cliprect, + sprite, + color, fx, fy, x, y, 0); + + // Double Height + if(m_spriteram[offs] & 0x10) + { + m_gfxdecode->gfx(0)->transpen(bitmap, cliprect, + sprite + 1, + color, fx, fy, x, y + 16, 0); + } + } +} + +uint32_t compgolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + int const scrollx = m_scrollx_hi + m_scrollx_lo; + int const scrolly = m_scrolly_hi + m_scrolly_lo; + + m_bg_tilemap->set_scrollx(0, scrollx); + m_bg_tilemap->set_scrolly(0, scrolly); + + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_text_tilemap->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap, cliprect); + return 0; +} + + +// machine /************************************* * @@ -27,26 +214,26 @@ * *************************************/ -void compgolf_state::compgolf_scrollx_lo_w(uint8_t data) +void compgolf_state::scrollx_lo_w(uint8_t data) { m_scrollx_lo = data; } -void compgolf_state::compgolf_scrolly_lo_w(uint8_t data) +void compgolf_state::scrolly_lo_w(uint8_t data) { m_scrolly_lo = data; } -void compgolf_state::compgolf_ctrl_w(uint8_t data) +void compgolf_state::ctrl_w(uint8_t data) { - /* bit 4 and 6 are always set */ + // bit 4 and 6 are always set - int new_bank = (data & 4) >> 2; + int const new_bank = (data & 4) >> 2; if (m_bank != new_bank) { m_bank = new_bank; - membank("bank1")->set_entry(m_bank); + m_rombank->set_entry(m_bank); } m_scrollx_hi = (data & 1) << 8; @@ -60,19 +247,19 @@ void compgolf_state::compgolf_ctrl_w(uint8_t data) * *************************************/ -void compgolf_state::compgolf_map(address_map &map) +void compgolf_state::program_map(address_map &map) { map(0x0000, 0x07ff).ram(); - map(0x1000, 0x17ff).ram().w(FUNC(compgolf_state::compgolf_video_w)).share("videoram"); - map(0x1800, 0x1fff).ram().w(FUNC(compgolf_state::compgolf_back_w)).share("bg_ram"); - map(0x2000, 0x2060).ram().share("spriteram"); + map(0x1000, 0x17ff).ram().w(FUNC(compgolf_state::video_w)).share(m_videoram); + map(0x1800, 0x1fff).ram().w(FUNC(compgolf_state::back_w)).share(m_bg_ram); + map(0x2000, 0x2060).ram().share(m_spriteram); map(0x2061, 0x2061).nopw(); map(0x3000, 0x3000).portr("P1"); - map(0x3001, 0x3001).portr("P2").w(FUNC(compgolf_state::compgolf_ctrl_w)); + map(0x3001, 0x3001).portr("P2").w(FUNC(compgolf_state::ctrl_w)); map(0x3002, 0x3002).portr("DSW1"); map(0x3003, 0x3003).portr("DSW2"); map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); - map(0x4000, 0x7fff).bankr("bank1"); + map(0x4000, 0x7fff).bankr(m_rombank); map(0x8000, 0xffff).rom(); } @@ -138,7 +325,7 @@ static INPUT_PORTS_START( compgolf ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) /* Manual states dips 4-8 are "Unused" */ + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) // Manual states dips 4-8 are "Unused" PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) @@ -192,9 +379,9 @@ static const gfx_layout tilelayout8 = }; static GFXDECODE_START( gfx_compgolf ) - GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 0x10 ) - GFXDECODE_ENTRY( "gfx2", 0, tilelayoutbg, 0, 0x20 ) - GFXDECODE_ENTRY( "gfx3", 0, tilelayout8, 0, 0x10 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 0x10 ) + GFXDECODE_ENTRY( "bgtiles", 0, tilelayoutbg, 0, 0x20 ) + GFXDECODE_ENTRY( "chars", 0, tilelayout8, 0, 0x10 ) GFXDECODE_END @@ -206,6 +393,8 @@ GFXDECODE_END void compgolf_state::machine_start() { + m_rombank->configure_entries(0, 2, memregion("bgdata")->base(), 0x4000); + save_item(NAME(m_bank)); save_item(NAME(m_scrollx_lo)); save_item(NAME(m_scrollx_hi)); @@ -224,30 +413,30 @@ void compgolf_state::machine_reset() void compgolf_state::compgolf(machine_config &config) { - /* basic machine hardware */ - MC6809E(config, m_maincpu, 2000000); // HD68B09EP - m_maincpu->set_addrmap(AS_PROGRAM, &compgolf_state::compgolf_map); + // basic machine hardware + MC6809E(config, m_maincpu, 2'000'000); // HD68B09EP + m_maincpu->set_addrmap(AS_PROGRAM, &compgolf_state::program_map); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(256, 256); screen.set_visarea(1*8, 32*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(compgolf_state::screen_update_compgolf)); + screen.set_screen_update(FUNC(compgolf_state::screen_update)); screen.set_palette(m_palette); screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); - PALETTE(config, m_palette, FUNC(compgolf_state::compgolf_palette), 0x100); + PALETTE(config, m_palette, FUNC(compgolf_state::palette), 0x100); GFXDECODE(config, m_gfxdecode, m_palette, gfx_compgolf); SPEAKER(config, "mono").front_center(); - ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1'500'000)); ymsnd.irq_handler().set_inputline(m_maincpu, 0); - ymsnd.port_a_write_callback().set(FUNC(compgolf_state::compgolf_scrollx_lo_w)); - ymsnd.port_b_write_callback().set(FUNC(compgolf_state::compgolf_scrolly_lo_w)); + ymsnd.port_a_write_callback().set(FUNC(compgolf_state::scrollx_lo_w)); + ymsnd.port_b_write_callback().set(FUNC(compgolf_state::scrolly_lo_w)); ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -262,22 +451,22 @@ ROM_START( compgolf ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "cv05-3.bin", 0x08000, 0x8000, CRC(af9805bf) SHA1(bdde482906bb267e76317067785ac0ab7816df63) ) - ROM_REGION( 0x8000, "user1", 0 ) // background data + ROM_REGION( 0x8000, "bgdata", 0 ) ROM_LOAD( "cv06.bin", 0x00000, 0x8000, CRC(8f76979d) SHA1(432f6a1402fd3276669f5f45f03fd12380900178) ) - ROM_REGION( 0x18000, "gfx1", 0 ) // Sprites + ROM_REGION( 0x18000, "sprites", 0 ) ROM_LOAD( "cv00.bin", 0x00000, 0x8000, CRC(aa3d3b99) SHA1(eb968e40bcc7e7dd1acc0bbe885fd3f7d70d4bb5) ) ROM_LOAD( "cv01.bin", 0x08000, 0x8000, CRC(f68c2ff6) SHA1(dda9159fb59d3855025b98c272722b031617c89a) ) ROM_LOAD( "cv02.bin", 0x10000, 0x8000, CRC(979cdb5a) SHA1(25c1f3e6ddf50168c7e1a967bfa2753bea6106ec) ) - ROM_REGION( 0x10000, "gfx2", 0 ) + ROM_REGION( 0x10000, "bgtiles", 0 ) ROM_LOAD( "cv03.bin", 0x00000, 0x8000, CRC(cc7ed6d8) SHA1(4ffcfa3f720414e1b7e929bdf29359ebcd8717c3) ) - /* we expand rom cv04.bin to 0x8000 - 0xffff */ + // we expand ROM cv04.bin to 0x8000 - 0xffff - ROM_REGION( 0x8000, "gfx3", 0 ) + ROM_REGION( 0x8000, "chars", 0 ) ROM_LOAD( "cv07.bin", 0x00000, 0x8000, CRC(ed5441ba) SHA1(69d50695e8b92544f9857c6f3de0efb399899a2c) ) - ROM_REGION( 0x4000, "gfx4", 0 ) + ROM_REGION( 0x4000, "bgtiles2", 0 ) ROM_LOAD( "cv04.bin", 0x00000, 0x4000, CRC(df693a04) SHA1(45bef98c7e66881f8c62affecc1ab90dd2707240) ) ROM_REGION( 0x100, "proms", 0 ) @@ -288,22 +477,22 @@ ROM_START( compgolfo ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "cv05.bin", 0x08000, 0x8000, CRC(3cef62c9) SHA1(c4827b45faf7aa4c80ddd3c57f1ed6ba76b5c49b) ) - ROM_REGION( 0x8000, "user1", 0 ) // background data + ROM_REGION( 0x8000, "bgdata", 0 ) ROM_LOAD( "cv06.bin", 0x00000, 0x8000, CRC(8f76979d) SHA1(432f6a1402fd3276669f5f45f03fd12380900178) ) - ROM_REGION( 0x18000, "gfx1", 0 ) // Sprites + ROM_REGION( 0x18000, "sprites", 0 ) ROM_LOAD( "cv00.bin", 0x00000, 0x8000, CRC(aa3d3b99) SHA1(eb968e40bcc7e7dd1acc0bbe885fd3f7d70d4bb5) ) ROM_LOAD( "cv01.bin", 0x08000, 0x8000, CRC(f68c2ff6) SHA1(dda9159fb59d3855025b98c272722b031617c89a) ) ROM_LOAD( "cv02.bin", 0x10000, 0x8000, CRC(979cdb5a) SHA1(25c1f3e6ddf50168c7e1a967bfa2753bea6106ec) ) - ROM_REGION( 0x10000, "gfx2", 0 ) + ROM_REGION( 0x10000, "bgtiles", 0 ) ROM_LOAD( "cv03.bin", 0x00000, 0x8000, CRC(cc7ed6d8) SHA1(4ffcfa3f720414e1b7e929bdf29359ebcd8717c3) ) - /* we expand rom cv04.bin to 0x8000 - 0xffff */ + // we expand ROM cv04.bin to 0x8000 - 0xffff - ROM_REGION( 0x8000, "gfx3", 0 ) + ROM_REGION( 0x8000, "chars", 0 ) ROM_LOAD( "cv07.bin", 0x00000, 0x8000, CRC(ed5441ba) SHA1(69d50695e8b92544f9857c6f3de0efb399899a2c) ) - ROM_REGION( 0x4000, "gfx4", 0 ) + ROM_REGION( 0x4000, "bgtiles2", 0 ) ROM_LOAD( "cv04.bin", 0x00000, 0x4000, CRC(df693a04) SHA1(45bef98c7e66881f8c62affecc1ab90dd2707240) ) ROM_REGION( 0x100, "proms", 0 ) @@ -317,14 +506,12 @@ ROM_END * *************************************/ -void compgolf_state::compgolf_expand_bg() +void compgolf_state::expand_bg() { - uint8_t *GFXDST = memregion("gfx2")->base(); - uint8_t *GFXSRC = memregion("gfx4")->base(); - - int x; + uint8_t *GFXDST = memregion("bgtiles")->base(); + uint8_t *GFXSRC = memregion("bgtiles2")->base(); - for (x = 0; x < 0x4000; x++) + for (int x = 0; x < 0x4000; x++) { GFXDST[0x8000 + x] = (GFXSRC[x] & 0x0f) << 4; GFXDST[0xc000 + x] = (GFXSRC[x] & 0xf0); @@ -333,10 +520,11 @@ void compgolf_state::compgolf_expand_bg() void compgolf_state::init_compgolf() { - membank("bank1")->configure_entries(0, 2, memregion("user1")->base(), 0x4000); - compgolf_expand_bg(); + expand_bg(); } +} // anonymous namespace + /************************************* * @@ -344,5 +532,5 @@ void compgolf_state::init_compgolf() * *************************************/ -GAME( 1986, compgolf, 0, compgolf, compgolf, compgolf_state, init_compgolf, ROT0, "Data East", "Competition Golf Final Round (revision 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, compgolf, 0, compgolf, compgolf, compgolf_state, init_compgolf, ROT0, "Data East", "Competition Golf Final Round (revision 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, compgolfo, compgolf, compgolf, compgolf, compgolf_state, init_compgolf, ROT0, "Data East", "Competition Golf Final Round (Japan, old version)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/dataeast/compgolf.h b/src/mame/dataeast/compgolf.h deleted file mode 100644 index fb4f38767c2..00000000000 --- a/src/mame/dataeast/compgolf.h +++ /dev/null @@ -1,69 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail -/************************************************************************* - - Competition Golf Final Round - -*************************************************************************/ -#ifndef MAME_DATAEAST_COMPGOLF_H -#define MAME_DATAEAST_COMPGOLF_H - -#pragma once - -#include "emupal.h" -#include "tilemap.h" - -class compgolf_state : public driver_device -{ -public: - compgolf_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_bg_ram(*this, "bg_ram"), - m_spriteram(*this, "spriteram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") - { } - - void init_compgolf(); - void compgolf(machine_config &config); - -private: - /* memory pointers */ - required_shared_ptr m_videoram; - required_shared_ptr m_bg_ram; - required_shared_ptr m_spriteram; - - /* video-related */ - tilemap_t *m_text_tilemap = nullptr; - tilemap_t *m_bg_tilemap = nullptr; - int m_scrollx_lo = 0; - int m_scrollx_hi = 0; - int m_scrolly_lo = 0; - int m_scrolly_hi = 0; - - /* misc */ - int m_bank = 0; - void compgolf_ctrl_w(uint8_t data); - void compgolf_video_w(offs_t offset, uint8_t data); - void compgolf_back_w(offs_t offset, uint8_t data); - void compgolf_scrollx_lo_w(uint8_t data); - void compgolf_scrolly_lo_w(uint8_t data); - TILE_GET_INFO_MEMBER(get_text_info); - TILEMAP_MAPPER_MEMBER(back_scan); - TILE_GET_INFO_MEMBER(get_back_info); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - void compgolf_palette(palette_device &palette) const; - uint32_t screen_update_compgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); - void compgolf_expand_bg(); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; - void compgolf_map(address_map &map); -}; - -#endif // MAME_DATAEAST_COMPGOLF_H diff --git a/src/mame/dataeast/compgolf_v.cpp b/src/mame/dataeast/compgolf_v.cpp deleted file mode 100644 index 550fe6e21bc..00000000000 --- a/src/mame/dataeast/compgolf_v.cpp +++ /dev/null @@ -1,129 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail -/**************************************************************************************** - - Competition Golf Final Round - video hardware emulation - -****************************************************************************************/ - -#include "emu.h" -#include "compgolf.h" - - -void compgolf_state::compgolf_palette(palette_device &palette) const -{ - uint8_t const *const color_prom = memregion("proms")->base(); - - for (int i = 0; i < palette.entries(); i++) - { - int bit0,bit1,bit2; - bit0 = (color_prom[i] >> 0) & 0x01; - bit1 = (color_prom[i] >> 1) & 0x01; - bit2 = (color_prom[i] >> 2) & 0x01; - int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - bit0 = (color_prom[i] >> 3) & 0x01; - bit1 = (color_prom[i] >> 4) & 0x01; - bit2 = (color_prom[i] >> 5) & 0x01; - int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - bit0 = 0; - bit1 = (color_prom[i] >> 6) & 0x01; - bit2 = (color_prom[i] >> 7) & 0x01; - int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - palette.set_pen_color(i, rgb_t(r, g, b)); - } -} - -void compgolf_state::compgolf_video_w(offs_t offset, uint8_t data) -{ - m_videoram[offset] = data; - m_text_tilemap->mark_tile_dirty(offset / 2); -} - -void compgolf_state::compgolf_back_w(offs_t offset, uint8_t data) -{ - m_bg_ram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset / 2); -} - -TILE_GET_INFO_MEMBER(compgolf_state::get_text_info) -{ - tile_index <<= 1; - tileinfo.set(2, m_videoram[tile_index + 1] | (m_videoram[tile_index] << 8), m_videoram[tile_index] >> 2, 0); -} - -TILEMAP_MAPPER_MEMBER(compgolf_state::back_scan) -{ - /* logical (col,row) -> memory offset */ - return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x10) << 4) + ((row & 0x10) << 5); -} - -TILE_GET_INFO_MEMBER(compgolf_state::get_back_info) -{ - int attr = m_bg_ram[tile_index * 2]; - int code = m_bg_ram[tile_index * 2 + 1] + ((attr & 1) << 8); - int color = (attr & 0x3e) >> 1; - - tileinfo.set(1, code, color, 0); -} - -void compgolf_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_back_info)), tilemap_mapper_delegate(*this, FUNC(compgolf_state::back_scan)), 16, 16, 32, 32); - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_text_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - - m_text_tilemap->set_transparent_pen(0); -} - -/* -preliminary sprite list: - 0 1 2 3 -xx------ xxxxxxxx -------- -------- sprite code ----x---- -------- -------- -------- Double Height -----x--- -------- -------- -------- Color,all of it? --------- -------- xxxxxxxx -------- Y pos --------- -------- -------- xxxxxxxx X pos ------x-- -------- -------- -------- Flip X --------- -------- -------- -------- Flip Y(used?) -*/ -void compgolf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) -{ - int offs, fx, fy, x, y, color, sprite; - - for (offs = 0; offs < 0x60; offs += 4) - { - sprite = m_spriteram[offs + 1] + (((m_spriteram[offs] & 0xc0) >> 6) * 0x100); - x = 240 - m_spriteram[offs + 3]; - y = m_spriteram[offs + 2]; - color = (m_spriteram[offs] & 8)>>3; - fx = m_spriteram[offs] & 4; - fy = 0; /* ? */ - - m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, - sprite, - color,fx,fy,x,y,0); - - /* Double Height */ - if(m_spriteram[offs] & 0x10) - { - m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, - sprite + 1, - color, fx, fy, x, y + 16, 0); - } - } -} - -uint32_t compgolf_state::screen_update_compgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - int scrollx = m_scrollx_hi + m_scrollx_lo; - int scrolly = m_scrolly_hi + m_scrolly_lo; - - m_bg_tilemap->set_scrollx(0, scrollx); - m_bg_tilemap->set_scrolly(0, scrolly); - - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - m_text_tilemap->draw(screen, bitmap, cliprect, 0, 0); - draw_sprites(bitmap, cliprect); - return 0; -} diff --git a/src/mame/dataeast/dassault.cpp b/src/mame/dataeast/dassault.cpp index 3fb99741b16..2f4f53d097e 100644 --- a/src/mame/dataeast/dassault.cpp +++ b/src/mame/dataeast/dassault.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Bryan McPhail +// copyright-holders: Bryan McPhail + /*************************************************************************** Thunder Zone / Desert Assault (c) 1991 Data East Corporation @@ -210,16 +211,231 @@ TODO: ***************************************************************************/ #include "emu.h" -#include "dassault.h" +#include "deco16ic.h" +#include "decocomn.h" +#include "decospr.h" + +#include "cpu/h6280/h6280.h" #include "cpu/m68000/m68000.h" +#include "machine/gen_latch.h" #include "machine/mb8421.h" +#include "sound/okim6295.h" #include "sound/ymopm.h" #include "sound/ymopn.h" +#include "video/bufsprite.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +namespace { + +class dassault_state : public driver_device +{ +public: + dassault_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_audiocpu(*this, "audiocpu") + , m_subcpu(*this, "sub") + , m_deco_tilegen(*this, "tilegen%u", 1U) + , m_oki2(*this, "oki2") + , m_spriteram(*this, "spriteram%u", 1U) + , m_sprgen(*this, "spritegen%u", 1U) + , m_palette(*this, "palette") + , m_soundlatch(*this, "soundlatch") + , m_pf2_rowscroll(*this, "pf2_rowscroll") + , m_pf4_rowscroll(*this, "pf4_rowscroll") + , m_input(*this, { "P1_P2", "P3_P4", "DSW1", "DSW2", "SYSTEM" }) + { } + + void dassault(machine_config &config) ATTR_COLD; + + void init_dassault() ATTR_COLD; + +protected: + virtual void machine_reset() override ATTR_COLD; + virtual void video_start() override ATTR_COLD; + +private: + // devices + required_device m_maincpu; + required_device m_audiocpu; + required_device m_subcpu; + required_device_array m_deco_tilegen; + required_device m_oki2; + required_device_array m_spriteram; + required_device_array m_sprgen; + required_device m_palette; + required_device m_soundlatch; + + // memory pointers + required_shared_ptr m_pf2_rowscroll; + required_shared_ptr m_pf4_rowscroll; + + required_ioport_array<5> m_input; + + uint16_t m_priority = 0U; + + void priority_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void main_irq_ack_w(uint16_t data); + void sub_irq_ack_w(uint16_t data); + uint16_t control_r(offs_t offset); + void control_w(uint16_t data); + void sound_bankswitch_w(uint8_t data); + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + void mix_layer(bitmap_rgb32 &bitmap, bitmap_ind16 *sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha); + DECO16IC_BANK_CB_MEMBER(bank_callback); + void main_map(address_map &map) ATTR_COLD; + void sub_map(address_map &map) ATTR_COLD; + void sound_map(address_map &map) ATTR_COLD; +}; + + +// video + +/*************************************************************************** + + Desert Assault Video emulation - Bryan McPhail, mish@tendril.co.uk + + I'm not sure if one of the alpha blending effects is correct (mode 0x8000, + the usual mode 0x4000 should be correct). It may be some kind of orthogonal + priority effect where it should cut a hole in other higher priority sprites + to reveal a non-alpha'd hole, or alpha against a further back tilemap. + (is this the helicopter shadow at the end of lv.1 ?) + + Also, some priorities are still a little questionable. + + +****************************************************************************/ + +/******************************************************************************/ + +void dassault_state::video_start() +{ + m_priority = 0; + m_sprgen[0]->alloc_sprite_bitmap(); + m_sprgen[1]->alloc_sprite_bitmap(); + save_item(NAME(m_priority)); +} + +void dassault_state::mix_layer(bitmap_rgb32 &bitmap, bitmap_ind16 *sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha) +{ + pen_t const *const paldata = &m_palette->pen(0); + + for (int y = cliprect.top(); y <= cliprect.bottom(); y++) + { + uint16_t const *const srcline = &sprite_bitmap->pix(y, 0); + uint32_t *const dstline = &bitmap.pix(y, 0); + + for (int x = cliprect.left(); x <= cliprect.right(); x++) + { + uint16_t const pix = srcline[x]; + + if ((pix & primask) != pri) + continue; + + if (pix & 0xf) + { + uint16_t pen = pix & 0x1ff; + if (pix & 0x800) pen += 0x200; + + if (alpha != 0xff) + { + if (pix & 0x400) // TODO, Additive/Subtractive Blending? + { + uint32_t const base = dstline[x]; + dstline[x] = alpha_blend_r32(base, paldata[pen + penbase], alpha); + } + else if (pix & 0x200) + { + uint32_t const base = dstline[x]; + dstline[x] = alpha_blend_r32(base, paldata[pen + penbase], alpha); + } + else + { + dstline[x] = paldata[pen + penbase]; + } + } + else + { + dstline[x] = paldata[pen + penbase]; + } + } + } + } +} + +// are the priorities 100% correct? they're the same as they were before conversion to DECO52 sprite device, but if (for example) you walk to the side of the crates in the first part of the game you appear over them... +uint32_t dassault_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + uint16_t const flip = m_deco_tilegen[0]->pf_control_r(0); + uint16_t const priority = m_priority; + + flip_screen_set(BIT(flip, 7)); + m_sprgen[0]->set_flip_screen(BIT(flip, 7)); + m_sprgen[1]->set_flip_screen(BIT(flip, 7)); + + m_sprgen[1]->draw_sprites(bitmap, cliprect, m_spriteram[1]->buffer(), 0x400); + m_sprgen[0]->draw_sprites(bitmap, cliprect, m_spriteram[0]->buffer(), 0x400); + bitmap_ind16 *sprite_bitmap1 = &m_sprgen[0]->get_sprite_temp_bitmap(); + bitmap_ind16 *sprite_bitmap2 = &m_sprgen[1]->get_sprite_temp_bitmap(); + + // Update tilemaps + m_deco_tilegen[0]->pf_update(nullptr, m_pf2_rowscroll); + m_deco_tilegen[1]->pf_update(nullptr, m_pf4_rowscroll); + + // Draw playfields/update priority bitmap + screen.priority().fill(0, cliprect); + bitmap.fill(m_palette->pen(3072), cliprect); + m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + + // The middle playfields can be swapped priority-wise + if ((priority & 3) == 0) + { + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1 + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); // 2 + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8 + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 16); // 16 + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32 + mix_layer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 64? + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128 + + } + else if ((priority & 3) == 1) + { + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1 + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); // 2 + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8 + mix_layer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 16? + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32 + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 64); // 64 + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128 + } + else if ((priority & 3) == 3) + { + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1 + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); // 2 + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8 + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 16); // 16 + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32 + mix_layer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 64? + mix_layer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128 + } + else + { + // Unused + } + + m_deco_tilegen[0]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +// machine + /**********************************************************************************/ void dassault_state::priority_w(offs_t offset, uint16_t data, uint16_t mem_mask) @@ -237,85 +453,80 @@ void dassault_state::sub_irq_ack_w(uint16_t data) m_subcpu->set_input_line(M68K_IRQ_5, CLEAR_LINE); } -uint16_t dassault_state::dassault_control_r(offs_t offset) +uint16_t dassault_state::control_r(offs_t offset) { switch (offset << 1) { - case 0: /* Player 1 & Player 2 joysticks & fire buttons */ - return ioport("P1_P2")->read(); + case 0: // Player 1 & Player 2 joysticks & fire buttons + return m_input[0]->read(); - case 2: /* Player 3 & Player 4 joysticks & fire buttons */ - return ioport("P3_P4")->read(); + case 2: // Player 3 & Player 4 joysticks & fire buttons + return m_input[1]->read(); - case 4: /* Dip 1 (stored at 0x3f8035) */ - return ioport("DSW1")->read(); + case 4: // Dip 1 (stored at 0x3f8035) + return m_input[2]->read(); - case 6: /* Dip 2 (stored at 0x3f8034) */ - return ioport("DSW2")->read(); + case 6: // Dip 2 (stored at 0x3f8034) + return m_input[3]->read(); - case 8: /* VBL, Credits */ - return ioport("SYSTEM")->read(); + case 8: // VBL, Credits + return m_input[4]->read(); } return 0xffff; } -void dassault_state::dassault_control_w(uint16_t data) +void dassault_state::control_w(uint16_t data) { machine().bookkeeping().coin_counter_w(0, data & 1); if (data & 0xfffe) logerror("Coin cointrol %04x\n", data); } -uint16_t dassault_state::dassault_sub_control_r() -{ - return ioport("VBLANK1")->read(); -} - /**********************************************************************************/ -void dassault_state::dassault_map(address_map &map) +void dassault_state::main_map(address_map &map) { map(0x000000, 0x07ffff).rom(); map(0x100000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x140004, 0x140005).w(FUNC(dassault_state::main_irq_ack_w)); - map(0x140006, 0x140007).nopw(); /* ? */ + map(0x140006, 0x140007).nopw(); // ? map(0x180001, 0x180001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0x1c0000, 0x1c000f).r(FUNC(dassault_state::dassault_control_r)); + map(0x1c0000, 0x1c000f).r(FUNC(dassault_state::control_r)); map(0x1c000a, 0x1c000b).w(FUNC(dassault_state::priority_w)); map(0x1c000c, 0x1c000d).w(m_spriteram[1], FUNC(buffered_spriteram16_device::write)); - map(0x1c000e, 0x1c000f).w(FUNC(dassault_state::dassault_control_w)); + map(0x1c000e, 0x1c000f).w(FUNC(dassault_state::control_w)); map(0x200000, 0x201fff).rw(m_deco_tilegen[0], FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); map(0x202000, 0x203fff).rw(m_deco_tilegen[0], FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); - map(0x212000, 0x212fff).writeonly().share("pf2_rowscroll"); + map(0x212000, 0x212fff).writeonly().share(m_pf2_rowscroll); map(0x220000, 0x22000f).w(m_deco_tilegen[0], FUNC(deco16ic_device::pf_control_w)); map(0x240000, 0x240fff).rw(m_deco_tilegen[1], FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); map(0x242000, 0x242fff).rw(m_deco_tilegen[1], FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); - map(0x252000, 0x252fff).writeonly().share("pf4_rowscroll"); + map(0x252000, 0x252fff).writeonly().share(m_pf4_rowscroll); map(0x260000, 0x26000f).w(m_deco_tilegen[1], FUNC(deco16ic_device::pf_control_w)); - map(0x3f8000, 0x3fbfff).ram(); /* Main ram */ - map(0x3fc000, 0x3fcfff).ram().share("spriteram2"); /* Spriteram (2nd) */ + map(0x3f8000, 0x3fbfff).ram(); // Main RAM + map(0x3fc000, 0x3fcfff).ram().share("spriteram2"); map(0x3fe000, 0x3fefff).rw("sharedram", FUNC(mb8421_mb8431_16_device::left_r), FUNC(mb8421_mb8431_16_device::left_w)); } -void dassault_state::dassault_sub_map(address_map &map) +void dassault_state::sub_map(address_map &map) { map(0x000000, 0x07ffff).rom(); map(0x100000, 0x100001).w(m_spriteram[0], FUNC(buffered_spriteram16_device::write)); map(0x100002, 0x100003).w(FUNC(dassault_state::sub_irq_ack_w)); - map(0x100004, 0x100007).nopw(); /* ? */ - map(0x100004, 0x100005).r(FUNC(dassault_state::dassault_sub_control_r)); + map(0x100004, 0x100007).nopw(); // ? + map(0x100004, 0x100005).portr("VBLANK1"); - map(0x3f8000, 0x3fbfff).ram(); /* Sub cpu ram */ - map(0x3fc000, 0x3fcfff).ram().share("spriteram1"); /* Sprite ram */ + map(0x3f8000, 0x3fbfff).ram(); + map(0x3fc000, 0x3fcfff).ram().share("spriteram1"); map(0x3fe000, 0x3fefff).rw("sharedram", FUNC(mb8421_mb8431_16_device::right_r), FUNC(mb8421_mb8431_16_device::right_w)); } @@ -373,18 +584,18 @@ static INPUT_PORTS_START( thndzone ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") - PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW2:1" ) /* OFF & Not to be changed, according to manual */ - PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW2:2" ) /* OFF & Not to be changed, according to manual */ + PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW2:1" ) // OFF & Not to be changed, according to manual + PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW2:2" ) // OFF & Not to be changed, according to manual PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4") PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" ) /* OFF & Not to be changed, according to manual */ + PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" ) // OFF & Not to be changed, according to manual PORT_DIPNAME( 0x20, 0x20, "Max Players" ) PORT_DIPLOCATION("SW2:6") PORT_DIPSETTING( 0x20, "2" ) PORT_DIPSETTING( 0x00, "4" ) - PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" ) /* OFF & Not to be changed, according to manual */ + PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" ) // OFF & Not to be changed, according to manual PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") // Check code at 0x001490 PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -427,19 +638,19 @@ static INPUT_PORTS_START( thndzone ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN4 ) - PORT_START("VBLANK1") /* Cpu 1 vblank */ + PORT_START("VBLANK1") // Cpu 1 vblank PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") INPUT_PORTS_END -static INPUT_PORTS_START( thndzone4 ) /* Coin-B selectable values work for this set */ +static INPUT_PORTS_START( thndzone4 ) // Coin-B selectable values work for this set PORT_INCLUDE( thndzone ) PORT_MODIFY("P1_P2") - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) /* Start Buttons not used, hit Player Button1 to start for that player */ - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) /* Start Buttons not used, hit Player Button1 to start for that player */ + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) // Start Buttons not used, hit Player Button1 to start for that player + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) // Start Buttons not used, hit Player Button1 to start for that player PORT_MODIFY("DSW2") - PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" ) /* No selectable number of players DSW */ + PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" ) // No selectable number of players DSW INPUT_PORTS_END static INPUT_PORTS_START( dassault ) @@ -450,23 +661,23 @@ static INPUT_PORTS_START( dassault ) PORT_DIPSETTING( 0x30, "2" ) PORT_DIPSETTING( 0x20, "3" ) PORT_DIPSETTING( 0x10, "4" ) -// PORT_DIPSETTING( 0x00, "4 (buggy)" ) + PORT_DIPSETTING( 0x00, "4 (buggy)" ) INPUT_PORTS_END static INPUT_PORTS_START( dassault4 ) PORT_INCLUDE( thndzone ) PORT_MODIFY("P1_P2") - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) /* Start Buttons not used, hit Player Button1 to start for that player */ - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) /* Start Buttons not used, hit Player Button1 to start for that player */ + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) // Start Buttons not used, hit Player Button1 to start for that player + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) // Start Buttons not used, hit Player Button1 to start for that player PORT_MODIFY("DSW1") - PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW1:4" ) /* No selectable Coin-B values */ + PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW1:4" ) // No selectable Coin-B values PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW1:5" ) PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW1:6" ) PORT_MODIFY("DSW2") - PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" ) /* No selectable number of players DSW */ + PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" ) // No selectable number of players DSW INPUT_PORTS_END /**********************************************************************************/ @@ -494,19 +705,19 @@ static const gfx_layout tilelayout = }; static GFXDECODE_START( gfx_dassault ) - /* "gfx1" is copied to "gfx2" at runtime */ - GFXDECODE_ENTRY( "gfx2", 0, charlayout, 0, 32 ) /* Characters 8x8 */ - GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 32 ) /* Tiles 16x16 */ - GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 512, 32 ) /* Tiles 16x16 */ - GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 0/*1024*/, 64 ) /* Sprites 16x16 */ - GFXDECODE_ENTRY( "gfx5", 0, tilelayout, 0/*2048*/, 64 ) /* Sprites 16x16 */ + // "chars" is copied to "tiles1" at runtime + GFXDECODE_ENTRY( "tiles1", 0, charlayout, 0, 32 ) // 8x8 + GFXDECODE_ENTRY( "tiles1", 0, tilelayout, 0, 32 ) // 16x16 + GFXDECODE_ENTRY( "tiles2", 0, tilelayout, 512, 32 ) // 16x16 + GFXDECODE_ENTRY( "sprites1", 0, tilelayout, 0/*1024*/, 64 ) // 16x16 + GFXDECODE_ENTRY( "sprites2", 0, tilelayout, 0/*2048*/, 64 ) // 16x16 GFXDECODE_END /**********************************************************************************/ void dassault_state::sound_bankswitch_w(uint8_t data) { - /* the second OKIM6295 ROM is bank switched */ + // the second OKIM6295 ROM is bank switched m_oki2->set_rom_bank(data & 1); } @@ -524,31 +735,31 @@ void dassault_state::machine_reset() void dassault_state::dassault(machine_config &config) { - /* basic machine hardware */ - M68000(config, m_maincpu, XTAL(28'000'000)/2); /* 14MHz - Accurate */ - m_maincpu->set_addrmap(AS_PROGRAM, &dassault_state::dassault_map); + // basic machine hardware + M68000(config, m_maincpu, XTAL(28'000'000) / 2); // 14MHz - Accurate + m_maincpu->set_addrmap(AS_PROGRAM, &dassault_state::main_map); m_maincpu->set_vblank_int("screen", FUNC(dassault_state::irq4_line_assert)); - M68000(config, m_subcpu, XTAL(28'000'000)/2); /* 14MHz - Accurate */ - m_subcpu->set_addrmap(AS_PROGRAM, &dassault_state::dassault_sub_map); + M68000(config, m_subcpu, XTAL(28'000'000) / 2); // 14MHz - Accurate + m_subcpu->set_addrmap(AS_PROGRAM, &dassault_state::sub_map); m_subcpu->set_vblank_int("screen", FUNC(dassault_state::irq5_line_assert)); - H6280(config, m_audiocpu, XTAL(32'220'000)/8); /* Accurate */ + H6280(config, m_audiocpu, XTAL(32'220'000) / 8); // Accurate m_audiocpu->set_addrmap(AS_PROGRAM, &dassault_state::sound_map); m_audiocpu->add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0); -// config.set_maximum_quantum(attotime::from_hz(8400)); /* 140 CPU slices per frame */ +// config.set_maximum_quantum(attotime::from_hz(8400)); // 140 CPU slices per frame config.set_perfect_quantum(m_maincpu); // I was seeing random lockups.. let's see if this helps mb8421_mb8431_16_device &sharedram(MB8421_MB8431_16BIT(config, "sharedram")); sharedram.intl_callback().set_inputline("maincpu", M68K_IRQ_5); sharedram.intr_callback().set_inputline("sub", M68K_IRQ_6); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); // same as robocop2(cninja.cpp)? verify this from real pcb. - screen.set_screen_update(FUNC(dassault_state::screen_update_dassault)); + screen.set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); // same as robocop2(cninja.cpp)? verify this from real PCB. + screen.set_screen_update(FUNC(dassault_state::screen_update)); GFXDECODE(config, "gfxdecode", m_palette, gfx_dassault); PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 4096); @@ -590,63 +801,63 @@ void dassault_state::dassault(machine_config &config) m_sprgen[1]->set_gfx_region(4); m_sprgen[1]->set_gfxdecode_tag("gfxdecode"); - /* sound hardware */ + // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); // IRQ1 - ym2203_device &ym1(YM2203(config, "ym1", XTAL(32'220'000)/8)); + ym2203_device &ym1(YM2203(config, "ym1", XTAL(32'220'000) / 8)); ym1.add_route(ALL_OUTPUTS, "lspeaker", 0.40); ym1.add_route(ALL_OUTPUTS, "rspeaker", 0.40); - ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9)); + ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9)); ym2.irq_handler().set_inputline(m_audiocpu, 1); ym2.port_write_handler().set(FUNC(dassault_state::sound_bankswitch_w)); ym2.add_route(0, "lspeaker", 0.45); ym2.add_route(1, "rspeaker", 0.45); - okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH)); // verified + okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)); // verified oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.50); oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.50); - OKIM6295(config, m_oki2, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH); // verified + OKIM6295(config, m_oki2, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH); // verified m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.25); m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.25); } /**********************************************************************************/ -ROM_START( thndzone ) /* World rev 1 set, DSW selectable 2 or 4 players */ - ROM_REGION(0x80000, "maincpu", 0 ) /* 68000 code */ +ROM_START( thndzone ) // World rev 1 set, DSW selectable 2 or 4 players + ROM_REGION(0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE("gz01-1.a15", 0x00000, 0x20000, CRC(20250da6) SHA1(2d01d59b67a2ecc2ddc88eded43f451931a0a33b) ) ROM_LOAD16_BYTE("gz03-1.a17", 0x00001, 0x20000, CRC(3595fad0) SHA1(5d61776cdf2274cb26ea06ce97c35f5ce7f27e66) ) - ROM_LOAD16_BYTE("gt00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) /* Same data as GS00.A14 */ - ROM_LOAD16_BYTE("gt02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) /* Same data as GS02.A16 */ + ROM_LOAD16_BYTE("gt00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) // Same data as GS00.A14 + ROM_LOAD16_BYTE("gt02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) // Same data as GS02.A16 - ROM_REGION(0x80000, "sub", 0 ) /* 68000 code (Sub cpu) */ + ROM_REGION(0x80000, "sub", 0 ) // 68000 code ROM_LOAD16_BYTE("gz10-1.a12", 0x00000, 0x20000, CRC(811d86d7) SHA1(94971acad2c648b7a65ca54d9315414ed3b94f24) ) ROM_LOAD16_BYTE("gz08-1.a9", 0x00001, 0x20000, CRC(8f61ab1e) SHA1(df4e7db889915eca39ed4e1a4b5fcae9cd1a9882) ) - ROM_LOAD16_BYTE("gt11-1.a14", 0x40000, 0x20000, CRC(80cb23de) SHA1(d52426460eea2285c57cfc3fe37aa6dc79990e25) ) /* Same data as GS11.A14 */ - ROM_LOAD16_BYTE("gt09-1.a11", 0x40001, 0x20000, CRC(0a8fa7e1) SHA1(330ae9602b5f56b5dc4961a41991b64412a59880) ) /* Same data as GS09.A11 */ + ROM_LOAD16_BYTE("gt11-1.a14", 0x40000, 0x20000, CRC(80cb23de) SHA1(d52426460eea2285c57cfc3fe37aa6dc79990e25) ) // Same data as GS11.A14 + ROM_LOAD16_BYTE("gt09-1.a11", 0x40001, 0x20000, CRC(0a8fa7e1) SHA1(330ae9602b5f56b5dc4961a41991b64412a59880) ) // Same data as GS09.A11 - ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ - ROM_LOAD( "gt04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) /* Same data for all regions, different label */ + ROM_REGION(0x10000, "audiocpu", 0 ) + ROM_LOAD( "gt04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) // Same data for all regions, different label - ROM_REGION(0x020000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "gt05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) /* Same data for all regions, different label */ - ROM_LOAD16_BYTE( "gt06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) /* Same data for all regions, different label */ + ROM_REGION(0x020000, "chars", 0 ) + ROM_LOAD16_BYTE( "gt05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) // Same data for all regions, different label + ROM_LOAD16_BYTE( "gt06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) // Same data for all regions, different label - ROM_REGION(0x120000, "gfx2", 0 ) + ROM_REGION(0x120000, "tiles1", 0 ) ROM_LOAD( "maj-02.h14", 0x000000, 0x100000, CRC(383bbc37) SHA1(c537ab147a2770ce28ee185b08dd62d35249bfa9) ) - /* Other 0x20000 filled in later */ + // Other 0x20000 filled in later - ROM_REGION(0x200000, "gfx3", 0 ) + ROM_REGION(0x200000, "tiles2", 0 ) ROM_LOAD( "maj-01.c18", 0x000000, 0x100000, CRC(9840a204) SHA1(096c351769da5184c3d9a05495370134acc9507a) ) ROM_LOAD( "maj-00.c17", 0x100000, 0x100000, CRC(87ea8d16) SHA1(db47123aa2ebbb800cfc5cfcf50309bc39cadbcd) ) - ROM_REGION( 0x400000, "gfx4", 0 ) /* sprites chip 1 */ + ROM_REGION( 0x400000, "sprites1", 0 ) ROM_LOAD( "maj-04.r1", 0x000000, 0x80000, CRC(36e49b19) SHA1(bfbc45b635bf3d46ff8b8a514a3f352bf3a95535) ) ROM_LOAD( "maj-05.r2", 0x080000, 0x80000, CRC(80fc71cc) SHA1(65b15afbe5d628051b012777d486b6ce92a3795c) ) ROM_LOAD( "maj-06.r3", 0x100000, 0x80000, CRC(2e7a684b) SHA1(cffeda1a816dad30d6b1cb12458661188d625d40) ) @@ -656,63 +867,63 @@ ROM_START( thndzone ) /* World rev 1 set, DSW selectable 2 or 4 players */ ROM_LOAD( "maj-10.s9", 0x300000, 0x80000, CRC(a02fa641) SHA1(14b999a441964e612700bf21945a948eaebb253e) ) ROM_LOAD( "maj-11.s11", 0x380000, 0x80000, CRC(dabe9305) SHA1(44d69fe55e674de7f4c610d295d4528d4b2eb150) ) - ROM_REGION( 0x80000, "gfx5", 0 ) /* sprites chip 2 */ + ROM_REGION( 0x80000, "sprites2", 0 ) ROM_LOAD16_BYTE( "gt12.n1", 0x000000, 0x20000, CRC(9a86a015) SHA1(968576b8422393ab9a93d98c15428b1c11417b3d) ) ROM_LOAD16_BYTE( "gt13.n2", 0x000001, 0x20000, CRC(f4709905) SHA1(697842a3d7bc2588c77833c3af8938e6f0b1238d) ) ROM_LOAD16_BYTE( "gt14.n3", 0x040000, 0x20000, CRC(750fc523) SHA1(ef8794359ff3a44a97ab402821fbe205a0be8f6a) ) ROM_LOAD16_BYTE( "gt15.n5", 0x040001, 0x20000, CRC(f14edd3d) SHA1(802d576df6dac2c9bf99f963f1955fc3a7ffdac0) ) - ROM_REGION(0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION(0x40000, "oki1", 0 ) ROM_LOAD( "gt07.h15", 0x00000, 0x20000, CRC(750b7e5d) SHA1(d33b17a1d8c9b05d5c1daf0c80fed6381e04b167) ) /* Same data as GS07.H15 */ - ROM_REGION(0x80000, "oki2", 0 ) /* Extra Oki samples */ - ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) /* banked */ + ROM_REGION(0x80000, "oki2", 0 ) + ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) // banked ROM_REGION( 0x1000, "proms", 0 ) - ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) /* Priority? Unused */ + ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) // Priority? Unused ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Timing?? Unused */ /* Above prom also at 16s and 17s */ ROM_REGION( 0x1000, "plds", 0 ) - ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) // PAL is read protected + ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) // PAL is read protected ROM_END ROM_START( thndzonea ) /* World set, DSW selectable 2 or 4 players */ - ROM_REGION(0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION(0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE("gz01.a15", 0x00000, 0x20000, CRC(15e8c328) SHA1(8876b5fde77604c2fe4654271ceb341a8fa460c1) ) ROM_LOAD16_BYTE("gz03.a17", 0x00001, 0x20000, CRC(aab5c86e) SHA1(c3560b15360ddf14e8444d9f70724e698b2bd42f) ) ROM_LOAD16_BYTE("gt00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) /* Same data as GS00.A14 */ ROM_LOAD16_BYTE("gt02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) /* Same data as GS02.A16 */ - ROM_REGION(0x80000, "sub", 0 ) /* 68000 code (Sub cpu) */ + ROM_REGION(0x80000, "sub", 0 ) // 68000 code ROM_LOAD16_BYTE("gz10.a12", 0x00000, 0x20000, CRC(79f919e9) SHA1(b6793173e310b1df07cf3e9209da1fbec3a8a05b) ) ROM_LOAD16_BYTE("gz08.a9", 0x00001, 0x20000, CRC(d47d7836) SHA1(8a5d3e8b89f5dfd6bac83f7b093ddb03d5ecef73) ) ROM_LOAD16_BYTE("gt11-1.a14", 0x40000, 0x20000, CRC(80cb23de) SHA1(d52426460eea2285c57cfc3fe37aa6dc79990e25) ) /* Same data as GS11.A14 */ ROM_LOAD16_BYTE("gt09-1.a11", 0x40001, 0x20000, CRC(0a8fa7e1) SHA1(330ae9602b5f56b5dc4961a41991b64412a59880) ) /* Same data as GS09.A11 */ - ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ - ROM_LOAD( "gt04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) /* Same data for all regions, different label */ + ROM_REGION(0x10000, "audiocpu", 0 ) + ROM_LOAD( "gt04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) // Same data for all regions, different label - ROM_REGION(0x020000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "gt05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) /* Same data for all regions, different label */ - ROM_LOAD16_BYTE( "gt06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) /* Same data for all regions, different label */ + ROM_REGION(0x020000, "chars", 0 ) + ROM_LOAD16_BYTE( "gt05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) // Same data for all regions, different label + ROM_LOAD16_BYTE( "gt06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) // Same data for all regions, different label - ROM_REGION(0x120000, "gfx2", 0 ) + ROM_REGION(0x120000, "tiles1", 0 ) ROM_LOAD( "maj-02.h14", 0x000000, 0x100000, CRC(383bbc37) SHA1(c537ab147a2770ce28ee185b08dd62d35249bfa9) ) - /* Other 0x20000 filled in later */ + // Other 0x20000 filled in later - ROM_REGION(0x200000, "gfx3", 0 ) + ROM_REGION(0x200000, "tiles2", 0 ) ROM_LOAD( "maj-01.c18", 0x000000, 0x100000, CRC(9840a204) SHA1(096c351769da5184c3d9a05495370134acc9507a) ) ROM_LOAD( "maj-00.c17", 0x100000, 0x100000, CRC(87ea8d16) SHA1(db47123aa2ebbb800cfc5cfcf50309bc39cadbcd) ) - ROM_REGION( 0x400000, "gfx4", 0 ) /* sprites chip 1 */ + ROM_REGION( 0x400000, "sprites1", 0 ) ROM_LOAD( "maj-04.r1", 0x000000, 0x80000, CRC(36e49b19) SHA1(bfbc45b635bf3d46ff8b8a514a3f352bf3a95535) ) ROM_LOAD( "maj-05.r2", 0x080000, 0x80000, CRC(80fc71cc) SHA1(65b15afbe5d628051b012777d486b6ce92a3795c) ) ROM_LOAD( "maj-06.r3", 0x100000, 0x80000, CRC(2e7a684b) SHA1(cffeda1a816dad30d6b1cb12458661188d625d40) ) @@ -722,64 +933,64 @@ ROM_START( thndzonea ) /* World set, DSW selectable 2 or 4 players */ ROM_LOAD( "maj-10.s9", 0x300000, 0x80000, CRC(a02fa641) SHA1(14b999a441964e612700bf21945a948eaebb253e) ) ROM_LOAD( "maj-11.s11", 0x380000, 0x80000, CRC(dabe9305) SHA1(44d69fe55e674de7f4c610d295d4528d4b2eb150) ) - ROM_REGION( 0x80000, "gfx5", 0 ) /* sprites chip 2 */ + ROM_REGION( 0x80000, "sprites2", 0 ) ROM_LOAD16_BYTE( "gt12.n1", 0x000000, 0x20000, CRC(9a86a015) SHA1(968576b8422393ab9a93d98c15428b1c11417b3d) ) ROM_LOAD16_BYTE( "gt13.n2", 0x000001, 0x20000, CRC(f4709905) SHA1(697842a3d7bc2588c77833c3af8938e6f0b1238d) ) ROM_LOAD16_BYTE( "gt14.n3", 0x040000, 0x20000, CRC(750fc523) SHA1(ef8794359ff3a44a97ab402821fbe205a0be8f6a) ) ROM_LOAD16_BYTE( "gt15.n5", 0x040001, 0x20000, CRC(f14edd3d) SHA1(802d576df6dac2c9bf99f963f1955fc3a7ffdac0) ) - ROM_REGION(0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION(0x40000, "oki1", 0 ) ROM_LOAD( "gt07.h15", 0x00000, 0x20000, CRC(750b7e5d) SHA1(d33b17a1d8c9b05d5c1daf0c80fed6381e04b167) ) /* Same data as GS07.H15 */ - ROM_REGION(0x80000, "oki2", 0 ) /* Extra Oki samples */ - ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) /* banked */ + ROM_REGION(0x80000, "oki2", 0 ) + ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) // banked ROM_REGION( 0x2000, "proms", 0 ) - ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) /* Priority? Unused */ - ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused - Data identical for 3 proms! */ + ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) // Priority? Unused + ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused - Data identical for 3 proms! ROM_REGION( 0x1000, "plds", 0 ) - ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) // PAL is read protected + ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) // PAL is read protected ROM_END ROM_START( thndzone4 ) /* World set, 4 Player (shared credits) only English set from a Korean PCB without labels */ - ROM_REGION(0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION(0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE("27c010.a15", 0x00000, 0x20000, CRC(30f21608) SHA1(087defd8869faf3f7f4569b98debe691a75fcec4) ) ROM_LOAD16_BYTE("27c010.a17", 0x00001, 0x20000, CRC(60886a33) SHA1(5b215e460845705af4b5e0cd00f6b0ad488520bb) ) ROM_LOAD16_BYTE("gt00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) /* Same data as GS00.A14 */ ROM_LOAD16_BYTE("gt02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) /* Same data as GS02.A16 */ - ROM_REGION(0x80000, "sub", 0 ) /* 68000 code (Sub cpu) */ + ROM_REGION(0x80000, "sub", 0 ) // 68000 code ROM_LOAD16_BYTE("d27c010.a12", 0x00000, 0x20000, CRC(99356cba) SHA1(2bc2b031bd44101e12213bb04a94d2d438f96ee0) ) ROM_LOAD16_BYTE("d27c010.a9", 0x00001, 0x20000, CRC(8bf114e7) SHA1(84b1b8d8aea8788902367cae3b766bb4e6e44d5a) ) ROM_LOAD16_BYTE("d27c010.a14", 0x40000, 0x20000, CRC(3d96d47e) SHA1(e2c01a17237cb6dc914da847642629415eda14a8) ) ROM_LOAD16_BYTE("d27c010.a11", 0x40001, 0x20000, CRC(2ab9b63f) SHA1(2ab06abbdee6e0d9c83004cdcb871c7389624086) ) - ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ - ROM_LOAD( "gu04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) /* Same data for all regions, different label */ + ROM_REGION(0x10000, "audiocpu", 0 ) + ROM_LOAD( "gu04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) // Same data for all regions, different label - ROM_REGION(0x020000, "gfx1", 0 ) + ROM_REGION(0x020000, "chars", 0 ) ROM_LOAD16_BYTE( "27512.j10", 0x000000, 0x10000, CRC(ab22a078) SHA1(246c9ebae5c2f296652395267fa3eeb81b8b52bd) ) /* Only set with different data here! */ ROM_LOAD16_BYTE( "27512.j12", 0x000001, 0x10000, CRC(34fc4428) SHA1(c912441ab8433391193b4199c2553d7909221d93) ) /* Only set with different data here! */ - ROM_REGION(0x120000, "gfx2", 0 ) + ROM_REGION(0x120000, "tiles1", 0 ) ROM_LOAD( "maj-02.h14", 0x000000, 0x100000, CRC(383bbc37) SHA1(c537ab147a2770ce28ee185b08dd62d35249bfa9) ) - /* Other 0x20000 filled in later */ + // Other 0x20000 filled in later - ROM_REGION(0x200000, "gfx3", 0 ) + ROM_REGION(0x200000, "tiles2", 0 ) ROM_LOAD( "maj-01.c18", 0x000000, 0x100000, CRC(9840a204) SHA1(096c351769da5184c3d9a05495370134acc9507a) ) ROM_LOAD( "maj-00.c17", 0x100000, 0x100000, CRC(87ea8d16) SHA1(db47123aa2ebbb800cfc5cfcf50309bc39cadbcd) ) - ROM_REGION( 0x400000, "gfx4", 0 ) /* sprites chip 1 */ + ROM_REGION( 0x400000, "sprites1", 0 ) ROM_LOAD( "maj-04.r1", 0x000000, 0x80000, CRC(36e49b19) SHA1(bfbc45b635bf3d46ff8b8a514a3f352bf3a95535) ) ROM_LOAD( "maj-05.r2", 0x080000, 0x80000, CRC(80fc71cc) SHA1(65b15afbe5d628051b012777d486b6ce92a3795c) ) ROM_LOAD( "maj-06.r3", 0x100000, 0x80000, CRC(2e7a684b) SHA1(cffeda1a816dad30d6b1cb12458661188d625d40) ) @@ -789,64 +1000,64 @@ ROM_START( thndzone4 ) /* World set, 4 Player (shared credits) only English set ROM_LOAD( "maj-10.s9", 0x300000, 0x80000, CRC(a02fa641) SHA1(14b999a441964e612700bf21945a948eaebb253e) ) ROM_LOAD( "maj-11.s11", 0x380000, 0x80000, CRC(dabe9305) SHA1(44d69fe55e674de7f4c610d295d4528d4b2eb150) ) - ROM_REGION( 0x80000, "gfx5", 0 ) /* sprites chip 2 */ + ROM_REGION( 0x80000, "sprites2", 0 ) ROM_LOAD16_BYTE( "gt12.n1", 0x000000, 0x20000, CRC(9a86a015) SHA1(968576b8422393ab9a93d98c15428b1c11417b3d) ) ROM_LOAD16_BYTE( "gt13.n2", 0x000001, 0x20000, CRC(f4709905) SHA1(697842a3d7bc2588c77833c3af8938e6f0b1238d) ) ROM_LOAD16_BYTE( "gt14.n3", 0x040000, 0x20000, CRC(750fc523) SHA1(ef8794359ff3a44a97ab402821fbe205a0be8f6a) ) ROM_LOAD16_BYTE( "gt15.n5", 0x040001, 0x20000, CRC(f14edd3d) SHA1(802d576df6dac2c9bf99f963f1955fc3a7ffdac0) ) - ROM_REGION(0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION(0x40000, "oki1", 0 ) ROM_LOAD( "gs07.h15", 0x00000, 0x20000, CRC(750b7e5d) SHA1(d33b17a1d8c9b05d5c1daf0c80fed6381e04b167) ) - ROM_REGION(0x80000, "oki2", 0 ) /* Extra Oki samples */ - ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) /* banked */ + ROM_REGION(0x80000, "oki2", 0 ) + ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) // banked ROM_REGION( 0x2000, "proms", 0 ) - ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) /* Priority? Unused */ - ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused - Data identical for 3 proms! */ + ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) // Priority? Unused + ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused - Data identical for 3 proms! ROM_REGION( 0x1000, "plds", 0 ) - ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) // PAL is read protected + ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) // PAL is read protected ROM_END ROM_START( thndzonej ) /* Japan set, DSW selectable 2 or 4 players - Japanese language */ - ROM_REGION(0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION(0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE("gu01.a15", 0x00000, 0x20000, CRC(eb28f8e8) SHA1(834f89db3ef48a71d20c0ec3a0c2231e115d7f48) ) ROM_LOAD16_BYTE("gu03.a17", 0x00001, 0x20000, CRC(9ad2b431) SHA1(c2fb88b4d2df93e3f787fe49c240573e1bc2844e) ) ROM_LOAD16_BYTE("gu00.a14", 0x40000, 0x20000, CRC(fca9e84f) SHA1(a0ecf99eace7357b05da8f8fe06b9bbf7d16d95a) ) ROM_LOAD16_BYTE("gu02.a16", 0x40001, 0x20000, CRC(b6026bae) SHA1(673b7f7a432580ec1780d1efa2b48184af428698) ) - ROM_REGION(0x80000, "sub", 0 ) /* 68000 code (Sub cpu) */ + ROM_REGION(0x80000, "sub", 0 ) // 68000 code ROM_LOAD16_BYTE("gu10.a12", 0x00000, 0x20000, CRC(8042e87d) SHA1(dc69b13fc06d94a2bc5569e96931e6d9496bd44f) ) ROM_LOAD16_BYTE("gu08.a9", 0x00001, 0x20000, CRC(c8895bfa) SHA1(6a5421bd926e0aa86c81e345f2dfe5265bd3add2) ) ROM_LOAD16_BYTE("gu11.a14", 0x40000, 0x20000, CRC(c0d6eb82) SHA1(44070e6d37f5327cf7f647e44ea49a1fe6844e5e) ) ROM_LOAD16_BYTE("gu09.a11", 0x40001, 0x20000, CRC(42de13a7) SHA1(f948d31e368499fd8c35da0c7dd7519cfbd4b5f7) ) - ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ - ROM_LOAD( "gu04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) /* Same data for all regions, different label */ + ROM_REGION(0x10000, "audiocpu", 0 ) + ROM_LOAD( "gu04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) // Same data for all regions, different label - ROM_REGION(0x020000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "gu05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) /* Same data for all regions, different label */ - ROM_LOAD16_BYTE( "gu06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) /* Same data for all regions, different label */ + ROM_REGION(0x020000, "chars", 0 ) + ROM_LOAD16_BYTE( "gu05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) // Same data for all regions, different label + ROM_LOAD16_BYTE( "gu06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) // Same data for all regions, different label - ROM_REGION(0x120000, "gfx2", 0 ) + ROM_REGION(0x120000, "tiles1", 0 ) ROM_LOAD( "maj-02.h14", 0x000000, 0x100000, CRC(383bbc37) SHA1(c537ab147a2770ce28ee185b08dd62d35249bfa9) ) - /* Other 0x20000 filled in later */ + // Other 0x20000 filled in later - ROM_REGION(0x200000, "gfx3", 0 ) + ROM_REGION(0x200000, "tiles2", 0 ) ROM_LOAD( "maj-01.c18", 0x000000, 0x100000, CRC(9840a204) SHA1(096c351769da5184c3d9a05495370134acc9507a) ) ROM_LOAD( "maj-00.c17", 0x100000, 0x100000, CRC(87ea8d16) SHA1(db47123aa2ebbb800cfc5cfcf50309bc39cadbcd) ) - ROM_REGION( 0x400000, "gfx4", 0 ) /* sprites chip 1 */ + ROM_REGION( 0x400000, "sprites1", 0 ) ROM_LOAD( "maj-04.r1", 0x000000, 0x80000, CRC(36e49b19) SHA1(bfbc45b635bf3d46ff8b8a514a3f352bf3a95535) ) ROM_LOAD( "maj-05.r2", 0x080000, 0x80000, CRC(80fc71cc) SHA1(65b15afbe5d628051b012777d486b6ce92a3795c) ) ROM_LOAD( "maj-06.r3", 0x100000, 0x80000, CRC(2e7a684b) SHA1(cffeda1a816dad30d6b1cb12458661188d625d40) ) @@ -856,71 +1067,71 @@ ROM_START( thndzonej ) /* Japan set, DSW selectable 2 or 4 players - Japanese la ROM_LOAD( "maj-10.s9", 0x300000, 0x80000, CRC(a02fa641) SHA1(14b999a441964e612700bf21945a948eaebb253e) ) ROM_LOAD( "maj-11.s11", 0x380000, 0x80000, CRC(dabe9305) SHA1(44d69fe55e674de7f4c610d295d4528d4b2eb150) ) - ROM_REGION( 0x80000, "gfx5", 0 ) /* sprites chip 2 */ - /* Although the other Mask ROMs on the PCB are MAJ-xx, for the Japan version, these 4 are actually MAL-xx */ - ROM_LOAD16_BYTE( "mal-12.n1", 0x000000, 0x20000, NO_DUMP ) /* Mask ROM - Need to verify if these are the same or different as the other sets */ - ROM_LOAD16_BYTE( "mal-13.n2", 0x000001, 0x20000, NO_DUMP ) /* Mask ROM - Need to verify if these are the same or different as the other sets */ - ROM_LOAD16_BYTE( "mal-14.n3", 0x040000, 0x20000, NO_DUMP ) /* Mask ROM - Need to verify if these are the same or different as the other sets */ - ROM_LOAD16_BYTE( "mal-15.n5", 0x040001, 0x20000, NO_DUMP ) /* Mask ROM - Need to verify if these are the same or different as the other sets */ - ROM_LOAD16_BYTE( "gt12.n1", 0x000000, 0x20000, CRC(9a86a015) SHA1(968576b8422393ab9a93d98c15428b1c11417b3d) ) /* REMOVE when MAL-12.N1 is dumped & added */ - ROM_LOAD16_BYTE( "gt13.n2", 0x000001, 0x20000, CRC(f4709905) SHA1(697842a3d7bc2588c77833c3af8938e6f0b1238d) ) /* REMOVE when MAL-13.N2 is dumped & added */ - ROM_LOAD16_BYTE( "gt14.n3", 0x040000, 0x20000, CRC(750fc523) SHA1(ef8794359ff3a44a97ab402821fbe205a0be8f6a) ) /* REMOVE when MAL-14.N3 is dumped & added */ - ROM_LOAD16_BYTE( "gt15.n5", 0x040001, 0x20000, CRC(f14edd3d) SHA1(802d576df6dac2c9bf99f963f1955fc3a7ffdac0) ) /* REMOVE when MAL-15.N5 is dumped & added */ - - ROM_REGION(0x40000, "oki1", 0 ) /* Oki samples */ - /* This rom is also a Mask ROM label MAL-07 and _NOT_ MAJ-07 */ - ROM_LOAD( "mal-07.h15", 0x00000, 0x20000, NO_DUMP ) /* Mask ROM - Need to verify if these are the same or different as the other sets */ - ROM_LOAD( "gs07.h15", 0x00000, 0x20000, CRC(750b7e5d) SHA1(d33b17a1d8c9b05d5c1daf0c80fed6381e04b167) ) /* REMOVE when MAL-07.H15 is dumped & added */ - - ROM_REGION(0x80000, "oki2", 0 ) /* Extra Oki samples */ - ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) /* banked */ + ROM_REGION( 0x80000, "sprites2", 0 ) + // Although the other Mask ROMs on the PCB are MAJ-xx, for the Japan version, these 4 are actually MAL-xx + ROM_LOAD16_BYTE( "mal-12.n1", 0x000000, 0x20000, NO_DUMP ) // Mask ROM - Need to verify if these are the same or different as the other sets + ROM_LOAD16_BYTE( "mal-13.n2", 0x000001, 0x20000, NO_DUMP ) // Mask ROM - Need to verify if these are the same or different as the other sets + ROM_LOAD16_BYTE( "mal-14.n3", 0x040000, 0x20000, NO_DUMP ) // Mask ROM - Need to verify if these are the same or different as the other sets + ROM_LOAD16_BYTE( "mal-15.n5", 0x040001, 0x20000, NO_DUMP ) // Mask ROM - Need to verify if these are the same or different as the other sets + ROM_LOAD16_BYTE( "gt12.n1", 0x000000, 0x20000, CRC(9a86a015) SHA1(968576b8422393ab9a93d98c15428b1c11417b3d) ) // REMOVE when MAL-12.N1 is dumped & added + ROM_LOAD16_BYTE( "gt13.n2", 0x000001, 0x20000, CRC(f4709905) SHA1(697842a3d7bc2588c77833c3af8938e6f0b1238d) ) // REMOVE when MAL-13.N2 is dumped & added + ROM_LOAD16_BYTE( "gt14.n3", 0x040000, 0x20000, CRC(750fc523) SHA1(ef8794359ff3a44a97ab402821fbe205a0be8f6a) ) // REMOVE when MAL-14.N3 is dumped & added + ROM_LOAD16_BYTE( "gt15.n5", 0x040001, 0x20000, CRC(f14edd3d) SHA1(802d576df6dac2c9bf99f963f1955fc3a7ffdac0) ) // REMOVE when MAL-15.N5 is dumped & added + + ROM_REGION(0x40000, "oki1", 0 ) + // This rom is also a Mask ROM label MAL-07 and _NOT_ MAJ-07 + ROM_LOAD( "mal-07.h15", 0x00000, 0x20000, NO_DUMP ) // Mask ROM - Need to verify if these are the same or different as the other sets + ROM_LOAD( "gs07.h15", 0x00000, 0x20000, CRC(750b7e5d) SHA1(d33b17a1d8c9b05d5c1daf0c80fed6381e04b167) ) // REMOVE when MAL-07.H15 is dumped & added + + ROM_REGION(0x80000, "oki2", 0 ) + ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) // banked ROM_REGION( 0x2000, "proms", 0 ) - ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) /* Priority? Unused */ - ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused - Data identical for 3 proms! */ + ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) // Priority? Unused + ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused - Data identical for 3 proms! ROM_REGION( 0x1000, "plds", 0 ) - ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) // PAL is read protected + ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) // PAL is read protected ROM_END -ROM_START( dassault ) /* USA set, DSW selectable 2, 3 or 4 players */ - ROM_REGION(0x80000, "maincpu", 0 ) /* 68000 code */ +ROM_START( dassault ) // USA set, DSW selectable 2, 3 or 4 players + ROM_REGION(0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE("01.a15", 0x00000, 0x20000, CRC(14f17ea7) SHA1(0bb8b7dba05f1ea42e68838861f0d4c263eac6b3) ) ROM_LOAD16_BYTE("03.a17", 0x00001, 0x20000, CRC(bed1b90c) SHA1(c100f89b69025e2ff885b35a733abc627da98a07) ) - ROM_LOAD16_BYTE("gs00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) /* Same data as GT00.A14 */ - ROM_LOAD16_BYTE("gs02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) /* Same data as GT02.A16 */ + ROM_LOAD16_BYTE("gs00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) // Same data as GT00.A14 + ROM_LOAD16_BYTE("gs02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) // Same data as GT02.A16 - ROM_REGION(0x80000, "sub", 0 ) /* 68000 code (Sub cpu) */ + ROM_REGION(0x80000, "sub", 0 ) // 68000 code ROM_LOAD16_BYTE("hc10-1.a12", 0x00000, 0x20000, CRC(ac5ac770) SHA1(bf6640900c2f9c8091168bf106edf85350c34652) ) ROM_LOAD16_BYTE("hc08-1.a9", 0x00001, 0x20000, CRC(864dca56) SHA1(0967f613684b539d10b67e4f6033c890e2134ea2) ) - ROM_LOAD16_BYTE("gs11.a14", 0x40000, 0x20000, CRC(80cb23de) SHA1(d52426460eea2285c57cfc3fe37aa6dc79990e25) ) /* Same data as GT11-1.A14 */ - ROM_LOAD16_BYTE("gs09.a11", 0x40001, 0x20000, CRC(0a8fa7e1) SHA1(330ae9602b5f56b5dc4961a41991b64412a59880) ) /* Same data as GT09-1.A11 */ + ROM_LOAD16_BYTE("gs11.a14", 0x40000, 0x20000, CRC(80cb23de) SHA1(d52426460eea2285c57cfc3fe37aa6dc79990e25) ) // Same data as GT11-1.A14 + ROM_LOAD16_BYTE("gs09.a11", 0x40001, 0x20000, CRC(0a8fa7e1) SHA1(330ae9602b5f56b5dc4961a41991b64412a59880) ) // Same data as GT09-1.A11 - ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ - ROM_LOAD( "gs04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) /* Same data for all regions, different label */ + ROM_REGION(0x10000, "audiocpu", 0 ) + ROM_LOAD( "gs04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) // Same data for all regions, different label - ROM_REGION(0x020000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "gs05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) /* Same data for all regions, different label */ - ROM_LOAD16_BYTE( "gs06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) /* Same data for all regions, different label */ + ROM_REGION(0x020000, "chars", 0 ) + ROM_LOAD16_BYTE( "gs05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) // Same data for all regions, different label + ROM_LOAD16_BYTE( "gs06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) // Same data for all regions, different label - ROM_REGION(0x120000, "gfx2", 0 ) + ROM_REGION(0x120000, "tiles1", 0 ) ROM_LOAD( "maj-02.h14", 0x000000, 0x100000, CRC(383bbc37) SHA1(c537ab147a2770ce28ee185b08dd62d35249bfa9) ) - /* Other 0x20000 filled in later */ + // Other 0x20000 filled in later - ROM_REGION(0x200000, "gfx3", 0 ) + ROM_REGION(0x200000, "tiles2", 0 ) ROM_LOAD( "maj-01.c18", 0x000000, 0x100000, CRC(9840a204) SHA1(096c351769da5184c3d9a05495370134acc9507a) ) ROM_LOAD( "maj-00.c17", 0x100000, 0x100000, CRC(87ea8d16) SHA1(db47123aa2ebbb800cfc5cfcf50309bc39cadbcd) ) - ROM_REGION( 0x400000, "gfx4", 0 ) /* sprites chip 1 */ + ROM_REGION( 0x400000, "sprites1", 0 ) ROM_LOAD( "maj-04.r1", 0x000000, 0x80000, CRC(36e49b19) SHA1(bfbc45b635bf3d46ff8b8a514a3f352bf3a95535) ) ROM_LOAD( "maj-05.r2", 0x080000, 0x80000, CRC(80fc71cc) SHA1(65b15afbe5d628051b012777d486b6ce92a3795c) ) ROM_LOAD( "maj-06.r3", 0x100000, 0x80000, CRC(2e7a684b) SHA1(cffeda1a816dad30d6b1cb12458661188d625d40) ) @@ -930,64 +1141,64 @@ ROM_START( dassault ) /* USA set, DSW selectable 2, 3 or 4 players */ ROM_LOAD( "maj-10.s9", 0x300000, 0x80000, CRC(a02fa641) SHA1(14b999a441964e612700bf21945a948eaebb253e) ) ROM_LOAD( "maj-11.s11", 0x380000, 0x80000, CRC(dabe9305) SHA1(44d69fe55e674de7f4c610d295d4528d4b2eb150) ) - ROM_REGION( 0x80000, "gfx5", 0 ) /* sprites chip 2 */ + ROM_REGION( 0x80000, "sprites2", 0 ) ROM_LOAD16_BYTE( "gs12.n1", 0x000000, 0x20000, CRC(9a86a015) SHA1(968576b8422393ab9a93d98c15428b1c11417b3d) ) ROM_LOAD16_BYTE( "gs13.n2", 0x000001, 0x20000, CRC(f4709905) SHA1(697842a3d7bc2588c77833c3af8938e6f0b1238d) ) ROM_LOAD16_BYTE( "gs14.n3", 0x040000, 0x20000, CRC(750fc523) SHA1(ef8794359ff3a44a97ab402821fbe205a0be8f6a) ) ROM_LOAD16_BYTE( "gs15.n5", 0x040001, 0x20000, CRC(f14edd3d) SHA1(802d576df6dac2c9bf99f963f1955fc3a7ffdac0) ) - ROM_REGION(0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION(0x40000, "oki1", 0 ) ROM_LOAD( "gs07.h15", 0x00000, 0x20000, CRC(750b7e5d) SHA1(d33b17a1d8c9b05d5c1daf0c80fed6381e04b167) ) - ROM_REGION(0x80000, "oki2", 0 ) /* Extra Oki samples */ - ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) /* banked */ + ROM_REGION(0x80000, "oki2", 0 ) + ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) // banked ROM_REGION( 0x2000, "proms", 0 ) - ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) /* Priority? Unused */ - ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused - Data identical for 3 proms! */ + ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) // Priority? Unused + ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused - Data identical for 3 proms! ROM_REGION( 0x1000, "plds", 0 ) - ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) // PAL is read protected + ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) // PAL is read protected ROM_END -ROM_START( dassault4 ) /* USA set, 4 player only */ - ROM_REGION(0x80000, "maincpu", 0 ) /* 68000 code */ +ROM_START( dassault4 ) // USA set, 4 player only + ROM_REGION(0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE("gs01.a15", 0x00000, 0x20000, CRC(8613634d) SHA1(69b64e54fde3b5f1ee3435d7327b84e7a7d43f6d) ) ROM_LOAD16_BYTE("gs03.a17", 0x00001, 0x20000, CRC(ea860bd4) SHA1(6e4e2d004433ad5842b4bc895eaa8f55bd1ee168) ) - ROM_LOAD16_BYTE("gs00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) /* Same data as GT00.A14 */ - ROM_LOAD16_BYTE("gs02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) /* Same data as GT02.A16 */ + ROM_LOAD16_BYTE("gs00.a14", 0x40000, 0x20000, CRC(b7277175) SHA1(ffb19c4dd12e0391f01de57c46a7998885fe22bf) ) // Same data as GT00.A14 + ROM_LOAD16_BYTE("gs02.a16", 0x40001, 0x20000, CRC(cde31e35) SHA1(0219845308c9f46e73b0504bd2aefa2fa74f388e) ) // Same data as GT02.A16 - ROM_REGION(0x80000, "sub", 0 ) /* 68000 code (Sub cpu) */ + ROM_REGION(0x80000, "sub", 0 ) // 68000 code ROM_LOAD16_BYTE("gs10.a12", 0x00000, 0x20000, CRC(285f72a3) SHA1(d01972aec500805ca1abed14983064cd14e942d4) ) ROM_LOAD16_BYTE("gs08.a9", 0x00001, 0x20000, CRC(16691ede) SHA1(dc481dfc6104833a6fd18be6275e77ecc0510165) ) - ROM_LOAD16_BYTE("gs11.a14", 0x40000, 0x20000, CRC(80cb23de) SHA1(d52426460eea2285c57cfc3fe37aa6dc79990e25) ) /* Same data as GT11-1.A14 */ - ROM_LOAD16_BYTE("gs09.a11", 0x40001, 0x20000, CRC(0a8fa7e1) SHA1(330ae9602b5f56b5dc4961a41991b64412a59880) ) /* Same data as GT09-1.A11 */ + ROM_LOAD16_BYTE("gs11.a14", 0x40000, 0x20000, CRC(80cb23de) SHA1(d52426460eea2285c57cfc3fe37aa6dc79990e25) ) // Same data as GT11-1.A14 + ROM_LOAD16_BYTE("gs09.a11", 0x40001, 0x20000, CRC(0a8fa7e1) SHA1(330ae9602b5f56b5dc4961a41991b64412a59880) ) // Same data as GT09-1.A11 - ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ - ROM_LOAD( "gs04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) /* Same data for all regions, different label */ + ROM_REGION(0x10000, "audiocpu", 0 ) + ROM_LOAD( "gs04.f18", 0x00000, 0x10000, CRC(81c29ebf) SHA1(1b241277a8e35cdeaeb120970d14a09d33032459) ) // Same data for all regions, different label - ROM_REGION(0x020000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "gs05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) /* Same data for all regions, different label */ - ROM_LOAD16_BYTE( "gs06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) /* Same data for all regions, different label */ + ROM_REGION(0x020000, "chars", 0 ) + ROM_LOAD16_BYTE( "gs05.h11", 0x000000, 0x10000, CRC(0aae996a) SHA1(d37a12b057e9934212362d7eafa575c961819a27) ) // Same data for all regions, different label + ROM_LOAD16_BYTE( "gs06.h12", 0x000001, 0x10000, CRC(4efdf03d) SHA1(835d22829c6d0f4efc76801b449f9a779f460f1c) ) // Same data for all regions, different label - ROM_REGION(0x120000, "gfx2", 0 ) + ROM_REGION(0x120000, "tiles1", 0 ) ROM_LOAD( "maj-02.h14", 0x000000, 0x100000, CRC(383bbc37) SHA1(c537ab147a2770ce28ee185b08dd62d35249bfa9) ) - /* Other 0x20000 filled in later */ + // Other 0x20000 filled in later - ROM_REGION(0x200000, "gfx3", 0 ) + ROM_REGION(0x200000, "tiles2", 0 ) ROM_LOAD( "maj-01.c18", 0x000000, 0x100000, CRC(9840a204) SHA1(096c351769da5184c3d9a05495370134acc9507a) ) ROM_LOAD( "maj-00.c17", 0x100000, 0x100000, CRC(87ea8d16) SHA1(db47123aa2ebbb800cfc5cfcf50309bc39cadbcd) ) - ROM_REGION( 0x400000, "gfx4", 0 ) /* sprites chip 1 */ + ROM_REGION( 0x400000, "sprites1", 0 ) ROM_LOAD( "maj-04.r1", 0x000000, 0x80000, CRC(36e49b19) SHA1(bfbc45b635bf3d46ff8b8a514a3f352bf3a95535) ) ROM_LOAD( "maj-05.r2", 0x080000, 0x80000, CRC(80fc71cc) SHA1(65b15afbe5d628051b012777d486b6ce92a3795c) ) ROM_LOAD( "maj-06.r3", 0x100000, 0x80000, CRC(2e7a684b) SHA1(cffeda1a816dad30d6b1cb12458661188d625d40) ) @@ -997,33 +1208,33 @@ ROM_START( dassault4 ) /* USA set, 4 player only */ ROM_LOAD( "maj-10.s9", 0x300000, 0x80000, CRC(a02fa641) SHA1(14b999a441964e612700bf21945a948eaebb253e) ) ROM_LOAD( "maj-11.s11", 0x380000, 0x80000, CRC(dabe9305) SHA1(44d69fe55e674de7f4c610d295d4528d4b2eb150) ) - ROM_REGION( 0x80000, "gfx5", 0 ) /* sprites chip 2 */ + ROM_REGION( 0x80000, "sprites2", 0 ) ROM_LOAD16_BYTE( "gs12.n1", 0x000000, 0x20000, CRC(9a86a015) SHA1(968576b8422393ab9a93d98c15428b1c11417b3d) ) ROM_LOAD16_BYTE( "gs13.n2", 0x000001, 0x20000, CRC(f4709905) SHA1(697842a3d7bc2588c77833c3af8938e6f0b1238d) ) ROM_LOAD16_BYTE( "gs14.n3", 0x040000, 0x20000, CRC(750fc523) SHA1(ef8794359ff3a44a97ab402821fbe205a0be8f6a) ) ROM_LOAD16_BYTE( "gs15.n5", 0x040001, 0x20000, CRC(f14edd3d) SHA1(802d576df6dac2c9bf99f963f1955fc3a7ffdac0) ) - ROM_REGION(0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION(0x40000, "oki1", 0 ) ROM_LOAD( "gs07.h15", 0x00000, 0x20000, CRC(750b7e5d) SHA1(d33b17a1d8c9b05d5c1daf0c80fed6381e04b167) ) - ROM_REGION(0x80000, "oki2", 0 ) /* Extra Oki samples */ - ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) /* banked */ + ROM_REGION(0x80000, "oki2", 0 ) + ROM_LOAD( "maj-03.h16", 0x00000, 0x80000, CRC(31dcfac3) SHA1(88c7fc139f871991defbc8dc2c9c66b150dd6f6f) ) // banked ROM_REGION( 0x2000, "proms", 0 ) - ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) /* Priority? Unused */ - ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused */ - ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) /* Unknown, Unused - Data identical for 3 proms! */ + ROM_LOAD( "mb7128y.10m", 0x00000, 0x800, CRC(bde780a2) SHA1(94ea9fe6c3a421e976d077e67f564ca5c37a5e88) ) // Priority? Unused + ROM_LOAD( "mb7128y.16p", 0x00800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.16s", 0x01000, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused + ROM_LOAD( "mb7128y.17s", 0x01800, 0x800, CRC(c44d2751) SHA1(7c195650689d5cbbdccba696e0e7d3dc5bb7c506) ) // Unknown, unused - Data identical for 3 proms! ROM_REGION( 0x1000, "plds", 0 ) - ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) /* PAL is read protected */ - ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) /* PAL is read protected */ + ROM_LOAD( "pal16r8a 1h", 0x0000, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7c", 0x0200, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7d", 0x0400, 0x0104, CRC(199e83fd) SHA1(ebb5d66f29935b0a58e79b0db30611b5dce328a6) ) // PAL is read protected + ROM_LOAD( "pal16l8b.7e", 0x0600, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.7l", 0x0800, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.8e", 0x0a00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.9d", 0x0c00, 0x0104, NO_DUMP ) // PAL is read protected + ROM_LOAD( "pal16l8b.10c", 0x0e00, 0x0104, NO_DUMP ) // PAL is read protected ROM_END /**********************************************************************************/ @@ -1031,8 +1242,8 @@ ROM_END void dassault_state::init_dassault() { - const uint8_t *src = memregion("gfx1")->base(); - uint8_t *dst = memregion("gfx2")->base(); + const uint8_t *src = memregion("chars")->base(); + uint8_t *dst = memregion("tiles1")->base(); std::vector tmp(0x80000); /* Playfield 4 also has access to the char graphics, make things easier @@ -1044,6 +1255,9 @@ void dassault_state::init_dassault() memcpy(dst + 0x110000, src + 0x10000, 0x10000); } +} // anonymous namespace + + /**********************************************************************************/ GAME( 1991, thndzone, 0, dassault, thndzone, dassault_state, init_dassault, ROT0, "Data East Corporation", "Thunder Zone (World, Rev 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/dataeast/dassault.h b/src/mame/dataeast/dassault.h deleted file mode 100644 index 107902a2e6d..00000000000 --- a/src/mame/dataeast/dassault.h +++ /dev/null @@ -1,73 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Bryan McPhail -/************************************************************************* - - Desert Assault - -*************************************************************************/ - -#include "machine/gen_latch.h" -#include "cpu/h6280/h6280.h" -#include "sound/okim6295.h" -#include "deco16ic.h" -#include "decocomn.h" -#include "video/bufsprite.h" -#include "decospr.h" -#include "emupal.h" - -class dassault_state : public driver_device -{ -public: - dassault_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_audiocpu(*this, "audiocpu") - , m_subcpu(*this, "sub") - , m_deco_tilegen(*this, "tilegen%u", 1U) - , m_oki2(*this, "oki2") - , m_spriteram(*this, "spriteram%u", 1U) - , m_sprgen(*this, "spritegen%u", 1U) - , m_palette(*this, "palette") - , m_soundlatch(*this, "soundlatch") - , m_pf2_rowscroll(*this, "pf2_rowscroll") - , m_pf4_rowscroll(*this, "pf4_rowscroll") - { } - - void dassault(machine_config &config); - - void init_dassault(); - -private: - /* devices */ - required_device m_maincpu; - required_device m_audiocpu; - required_device m_subcpu; - required_device_array m_deco_tilegen; - required_device m_oki2; - required_device_array m_spriteram; - required_device_array m_sprgen; - required_device m_palette; - required_device m_soundlatch; - - /* memory pointers */ - required_shared_ptr m_pf2_rowscroll; - required_shared_ptr m_pf4_rowscroll; - - uint16_t m_priority = 0U; - - void priority_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - void main_irq_ack_w(uint16_t data); - void sub_irq_ack_w(uint16_t data); - uint16_t dassault_control_r(offs_t offset); - void dassault_control_w(uint16_t data); - uint16_t dassault_sub_control_r(); - void sound_bankswitch_w(uint8_t data); - virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_dassault(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha); - DECO16IC_BANK_CB_MEMBER(bank_callback); - void dassault_map(address_map &map); - void dassault_sub_map(address_map &map); - void sound_map(address_map &map); -}; diff --git a/src/mame/dataeast/dassault_v.cpp b/src/mame/dataeast/dassault_v.cpp deleted file mode 100644 index de2035d17ab..00000000000 --- a/src/mame/dataeast/dassault_v.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Bryan McPhail -/*************************************************************************** - - Desert Assault Video emulation - Bryan McPhail, mish@tendril.co.uk - - I'm not sure if one of the alpha blending effects is correct (mode 0x8000, - the usual mode 0x4000 should be correct). It may be some kind of orthogonal - priority effect where it should cut a hole in other higher priority sprites - to reveal a non-alpha'd hole, or alpha against a further back tilemap. - (is this the helicopter shadow at the end of lv.1 ?) - - Also, some priorities are still a little questionable. - - -****************************************************************************/ - -#include "emu.h" -#include "dassault.h" -#include "screen.h" - -/******************************************************************************/ - -void dassault_state::video_start() -{ - m_priority = 0; - m_sprgen[0]->alloc_sprite_bitmap(); - m_sprgen[1]->alloc_sprite_bitmap(); - save_item(NAME(m_priority)); -} - -void dassault_state::mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha) -{ - pen_t const *const paldata = &m_palette->pen(0); - - for (int y=cliprect.top(); y<=cliprect.bottom(); y++) - { - uint16_t const *const srcline = &sprite_bitmap->pix(y, 0); - uint32_t *const dstline = &bitmap.pix(y, 0); - - for (int x=cliprect.left(); x<=cliprect.right(); x++) - { - uint16_t pix = srcline[x]; - - if ((pix & primask) != pri) - continue; - - if (pix & 0xf) - { - uint16_t pen = pix&0x1ff; - if (pix & 0x800) pen += 0x200; - - if (alpha!=0xff) - { - if (pix&0x400) // TODO, Additive/Subtractive Blending? - { - uint32_t base = dstline[x]; - dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha); - } - else if (pix&0x200) - { - uint32_t base = dstline[x]; - dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha); - } - else - { - dstline[x] = paldata[pen+penbase]; - } - } - else - { - dstline[x] = paldata[pen+penbase]; - } - } - } - } -} - -/* are the priorities 100% correct? they're the same as they were before conversion to DECO52 sprite device, but if (for example) you walk to the side of the crates in the first part of the game you appear over them... */ -uint32_t dassault_state::screen_update_dassault(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - uint16_t flip = m_deco_tilegen[0]->pf_control_r(0); - uint16_t priority = m_priority; - - flip_screen_set(BIT(flip, 7)); - m_sprgen[0]->set_flip_screen(BIT(flip, 7)); - m_sprgen[1]->set_flip_screen(BIT(flip, 7)); - - m_sprgen[1]->draw_sprites(bitmap, cliprect, m_spriteram[1]->buffer(), 0x400); - m_sprgen[0]->draw_sprites(bitmap, cliprect, m_spriteram[0]->buffer(), 0x400); - bitmap_ind16* sprite_bitmap1 = &m_sprgen[0]->get_sprite_temp_bitmap(); - bitmap_ind16* sprite_bitmap2 = &m_sprgen[1]->get_sprite_temp_bitmap(); - - /* Update tilemaps */ - m_deco_tilegen[0]->pf_update(nullptr, m_pf2_rowscroll); - m_deco_tilegen[1]->pf_update(nullptr, m_pf4_rowscroll); - - /* Draw playfields/update priority bitmap */ - screen.priority().fill(0, cliprect); - bitmap.fill(m_palette->pen(3072), cliprect); - m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - - /* The middle playfields can be swapped priority-wise */ - if ((priority & 3) == 0) - { - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1 - m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); // 2 - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8 - m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 16); // 16 - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32 - mixdassaultlayer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 64? - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128 - - } - else if ((priority & 3) == 1) - { - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1 - m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); // 2 - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8 - mixdassaultlayer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 16? - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32 - m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 64); // 64 - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128 - } - else if ((priority & 3) == 3) - { - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1 - m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); // 2 - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8 - m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 16); // 16 - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32 - mixdassaultlayer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 64? - mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128 - } - else - { - /* Unused */ - } - - m_deco_tilegen[0]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); - return 0; -} diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4fc7d78adf7..15c83eb01d4 100755 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34952,7 +34952,7 @@ mkp286 // Morse KP-286 motherboard (286) n8810m15 // 1987 Nixdorf 8810 M15 Laptop - PC07 n8810m16c // 1990 Nixdorf 8810 M16 Laptop - PC17 - CGA version n8810m16v // 1990 Nixdorf 8810 M16 Laptop - PC17 - VGA version -n8810m20 // 1989 Nixdorf 8810/20 Laptop VGA +n8810m20 // 1989 Nixdorf 8810/20 Laptop VGA n8810m30 // 1990 Nixdorf 8810 M30 n8810m55 // 1986 Nixdorf 8810 M55 ncr3302 // NCR Class 3302 Model 0110 @@ -34963,7 +34963,7 @@ necapciv // NEC APC IV o286foxii // Octek Fox II motherboard (286) ocfoxm // Octek Fox M 286 octekg2 // Octek motherboard with Headland G2 chipset (286) -ocxt286 // Octek XT-286 motherboard +ocxt286 // Octek XT-286 motherboard olim203 // Olivetti 286 motherboard olyport40 // AEG Olympia Olyport 40 pc30iii // Commodore PC 30-III @@ -35338,7 +35338,7 @@ gogostrk // @source:pc/pc.cpp ataripc1 // Atari PC1 ataripc3 // Atari PC3 -auvip800 // AUVA VIP 800 +auvip800 // AUVA VIP 800 bw230 // 1985 Bondwell (CGA) cadd810 // CompuAdd 810 comdesk // Compaq Deskpro @@ -35352,8 +35352,8 @@ dtkerso // 198? PC-XT clones with a DTK/ERSO BIOS eaglespirit // Eagle PC Spirit eppc // 1985 Ericsson Portable PC hyo88t // Hyosung Topstar 88T -hyu16t // Hyundai Super 16 T -hyu16te // Hyundai Super 16 TE +hyu16t // Hyundai Super 16 T +hyu16te // Hyundai Super 16 TE ibm5550 // iskr3104 // ittxtra // 1984 ITT XTRA @@ -35371,7 +35371,7 @@ mpc1600 // Columbia Data Products MPC 1600 mc1702 // mk88 // ncrpc4i // NCR PC4i -ncrpc6 // NCR PC6 +ncrpc6 // NCR PC6 nixpc01 // Nixdorf 8810/25 - PC01 olivm15 // Olivetti M15 olystar20f // AEG Olympia Olystar 20F @@ -35745,6 +35745,7 @@ kiss // kosteel // lostwrlp // m_mpac // +m_mpacb // mdntmrdr // medusa // monrobwl // diff --git a/src/mame/pinball/by35.cpp b/src/mame/pinball/by35.cpp index c8c4c5bf039..0a1da2b3977 100644 --- a/src/mame/pinball/by35.cpp +++ b/src/mame/pinball/by35.cpp @@ -2241,6 +2241,18 @@ ROM_START(m_mpac) ROM_LOAD("872-03_5.532", 0xb000, 0x1000, CRC(8fcdf853) SHA1(7c6bffcd974d2684e7f2c69d926f6cabb53e2f90)) ROM_END +ROM_START(m_mpacb) + ROM_REGION(0x8000, "maincpu", 0) + ROM_LOAD( "u2", 0x1000, 0x0800, CRC(a697971a) SHA1(e45cbb7822ac159c447877c4c837be5aaa4ac675)) + ROM_CONTINUE( 0x5000, 0x0800) + ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad)) + ROM_CONTINUE( 0x5800, 0x0800) + ROM_RELOAD( 0x7000, 0x1000) + ROM_REGION(0x10000, "squawk_n_talk_ay:cpu", 0) + ROM_LOAD("872-01_4.532", 0xa000, 0x1000, CRC(d21ce16d) SHA1(3ee6e2629530e7e6e4d7eac713d34c48297a1047)) + ROM_LOAD("872-03_5.532", 0xb000, 0x1000, CRC(8fcdf853) SHA1(7c6bffcd974d2684e7f2c69d926f6cabb53e2f90)) +ROM_END + /*----------------------------------------------------------- / Grand Slam #1311 /-----------------------------------------------------------*/ @@ -2895,7 +2907,8 @@ GAME( 1981, elektra, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_ GAME( 1982, spectrm, 0, squawk_n_talk, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Spectrum", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1982, spectrm4, spectrm, squawk_n_talk, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Spectrum (ver 4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1982, rapidfip, 0, squawk_n_talk, by35, by35_state, init_by35_7, ROT0, "Bally", "Rapid Fire", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, m_mpac, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, m_mpac, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, m_mpacb, m_mpac, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1982, mysteria, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mysterian (prototype)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // uses 2 sound boards // Cheap Squeak sound -- cgit v1.2.3