From c0693975c8066a2f54be8fc1cdf97f10e8d21206 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 13 Mar 2023 18:11:31 +0100 Subject: dataeast/exprraid.cpp: added note about undumped revision, consolidated driver in single file --- src/mame/dataeast/exprraid.cpp | 702 ++++++++++++++++++++++++++------------- src/mame/dataeast/exprraid.h | 87 ----- src/mame/dataeast/exprraid_v.cpp | 131 -------- 3 files changed, 464 insertions(+), 456 deletions(-) delete mode 100644 src/mame/dataeast/exprraid.h delete mode 100644 src/mame/dataeast/exprraid_v.cpp diff --git a/src/mame/dataeast/exprraid.cpp b/src/mame/dataeast/exprraid.cpp index 84c67e7b2c0..0d92395f64b 100644 --- a/src/mame/dataeast/exprraid.cpp +++ b/src/mame/dataeast/exprraid.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Ernesto Corvi +// copyright-holders: Ernesto Corvi + /*************************************************************************** Express Raider - (c) 1986 Data East Corporation / Data East USA @@ -23,7 +24,7 @@ Main CPU: ( DECO CPU-16 ) 4000-ffff ROM ffc0-ffc0 VBlank ( bootleg 3 only ) -Sound Cpu: ( 6809 ) +Sound CPU: ( 6809 ) 0000-1fff RAM 2000-2001 YM2203 4000-4001 YM3526 @@ -31,15 +32,15 @@ Sound Cpu: ( 6809 ) 8000-ffff ROM NOTES: -The main 6502 cpu is a custom one. The differences with a regular 6502 is as follows: -- Extra opcode ( $4b00 ), which i think reads an external port. VBlank irq is on bit 1 ( 0x02 ). +The main 6502 CPU is a custom one. The differences with a regular 6502 is as follows: +- Extra opcode ( $4b00 ), which I think reads an external port. VBlank IRQ is on bit 1 ( 0x02 ). - Reset, IRQ and NMI vectors are moved. Also, there was some protection circuitry which is now emulated. (Note (15/jun/09): CPU is actually a DECO CPU-16, used mostly by the liberate.c games -AS) -The bootleg version patched the rom to get rid of the extra opcode ( bootlegs +The bootleg version patched the ROM to get rid of the extra opcode ( bootlegs used a regular 6502 ), the vectors hardcoded in place, and also had the protection cracked. @@ -48,6 +49,10 @@ decode gfx routine will not be able to decode it without some little help. So thats why exprraid_gfx_expand() is there. Many thanks to Phil Stroffolino, who figured out the encoding. +There's an undumped CZ00-6A program ROM update which fixes a bug which makes it impossible for +player 2 in a two player game to enter initials into the high score table with dips set for an +upright cabinet. + NOTES ON THE BOOTLEGS: 1st bootleg set expects to read vblank status from 0x3800, country warning @@ -206,28 +211,249 @@ Stephh's notes (based on the games M6502 code and some tests) : ***************************************************************************/ #include "emu.h" -#include "exprraid.h" #include "cpu/m6502/deco16.h" #include "cpu/m6502/m6502.h" #include "cpu/m6809/m6809.h" -#include "sound/ymopn.h" +#include "machine/gen_latch.h" #include "sound/ymopl.h" +#include "sound/ymopn.h" +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +// configurable logging +#define LOG_PROT (1U << 1) + +//#define VERBOSE (LOG_GENERAL | LOG_PROT) + +#include "logmacro.h" + +#define LOGPROT(...) LOGMASKED(LOG_PROT, __VA_ARGS__) + + +namespace { + +class exprraid_state : public driver_device +{ +public: + exprraid_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_slave(*this, "slave"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), + m_main_ram(*this, "main_ram"), + m_spriteram(*this, "spriteram"), + m_videoram(*this, "videoram"), + m_colorram(*this, "colorram"), + m_tilerom(*this, "bgtiles2") + { } + + void exprraid(machine_config &config); + void wexpressb2(machine_config &config); + void wexpressb3(machine_config &config); + + void gfx_expand(); + void init_wexpressb(); + + DECLARE_INPUT_CHANGED_MEMBER(coin_inserted_deco16); + DECLARE_INPUT_CHANGED_MEMBER(coin_inserted_nmi); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: + // devices + required_device m_maincpu; + required_device m_slave; + required_device m_gfxdecode; + required_device m_palette; + required_device m_soundlatch; + + // memory pointers + required_shared_ptr m_main_ram; + required_shared_ptr m_spriteram; + required_shared_ptr m_videoram; + required_shared_ptr m_colorram; + required_region_ptr m_tilerom; + + // protection + uint8_t m_prot_value = 0U; + + // video-related + tilemap_t *m_bg_tilemap = nullptr; + tilemap_t *m_fg_tilemap = nullptr; + uint8_t m_bg_index[4]{}; + + void int_clear_w(uint8_t data); + uint8_t prot_status_r(); + uint8_t prot_data_r(); + void prot_data_w(uint8_t data); + void videoram_w(offs_t offset, uint8_t data); + void colorram_w(offs_t offset, uint8_t data); + void flipscreen_w(uint8_t data); + void bgselect_w(offs_t offset, uint8_t data); + void scrollx_w(offs_t offset, uint8_t data); + void scrolly_w(offs_t offset, uint8_t data); + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + void master_io_map(address_map &map); + void master_map(address_map &map); + void slave_map(address_map &map); + void wexpressb2_master_map(address_map &map); + void wexpressb3_master_map(address_map &map); +}; + + +// video + +void exprraid_state::videoram_w(offs_t offset, uint8_t data) +{ + m_videoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); +} + +void exprraid_state::colorram_w(offs_t offset, uint8_t data) +{ + m_colorram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); +} +void exprraid_state::flipscreen_w(uint8_t data) +{ + flip_screen_set(data & 0x01); +} + +void exprraid_state::bgselect_w(offs_t offset, uint8_t data) +{ + if (m_bg_index[offset] != data) + { + m_bg_index[offset] = data; + m_bg_tilemap->mark_all_dirty(); + } +} + +void exprraid_state::scrollx_w(offs_t offset, uint8_t data) +{ + m_bg_tilemap->set_scrollx(offset, data); +} + +void exprraid_state::scrolly_w(offs_t offset, uint8_t data) +{ + m_bg_tilemap->set_scrolly(0, data); +} + +TILE_GET_INFO_MEMBER(exprraid_state::get_bg_tile_info) +{ + int quadrant = 0; + + int sx = tile_index % 32; + int sy = tile_index / 32; + + if (sx >= 16) quadrant++; + if (sy >= 16) quadrant += 2; + + int const offs = (sy % 16) * 16 + (sx % 16) + (m_bg_index[quadrant] & 0x3f) * 0x100; + + int const data = m_tilerom[offs]; + int const attr = m_tilerom[offs + 0x4000]; + int const bank = (2 * (attr & 0x03) + ((data & 0x80) >> 7)) + 2; + int const code = data & 0x7f; + int const color = (attr & 0x18) >> 3; + int const flags = (attr & 0x04) ? TILE_FLIPX : 0; + + tileinfo.category = ((attr & 0x80) ? 1 : 0); + + tileinfo.set(bank, code, color, flags); +} + +TILE_GET_INFO_MEMBER(exprraid_state::get_fg_tile_info) +{ + int const attr = m_colorram[tile_index]; + int const code = m_videoram[tile_index] + ((attr & 0x07) << 8); + int const color = (attr & 0x10) >> 4; + + tileinfo.set(0, code, color, 0); +} + +void exprraid_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exprraid_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exprraid_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + + m_bg_tilemap->set_scroll_rows(2); + m_fg_tilemap->set_transparent_pen(0); +} + +void exprraid_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + for (int offs = 0; offs < m_spriteram.bytes(); offs += 4) + { + int const attr = m_spriteram[offs + 1]; + int const code = m_spriteram[offs + 3] + ((attr & 0xe0) << 3); + int const color = (attr & 0x03) + ((attr & 0x08) >> 1); + int flipx = (attr & 0x04); + int flipy = 0; + int sx = ((248 - m_spriteram[offs + 2]) & 0xff) - 8; + int sy = m_spriteram[offs]; + + if (flip_screen()) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + flipy = !flipy; + } + + m_gfxdecode->gfx(1)->transpen(bitmap, cliprect, + code, color, + flipx, flipy, + sx, sy, 0); + + // double height + if (attr & 0x10) + { + m_gfxdecode->gfx(1)->transpen(bitmap, cliprect, + code + 1, color, + flipx, flipy, + sx, sy + (flip_screen() ? -16 : 16), 0); + } + } +} + +uint32_t exprraid_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap, cliprect); + m_bg_tilemap->draw(screen, bitmap, cliprect, 1, 0); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +// machine /*****************************************************************************************/ -/* Emulate DECO 291 protection (for original express raider, code is cracked on the bootleg)*/ +// Emulate DECO 291 protection (for original express raider, code is cracked on the bootleg) /*****************************************************************************************/ -uint8_t exprraid_state::exprraid_prot_data_r() +uint8_t exprraid_state::prot_data_r() { return m_prot_value; } -uint8_t exprraid_state::exprraid_prot_status_r() +uint8_t exprraid_state::prot_status_r() { /* 76543210 @@ -239,7 +465,7 @@ uint8_t exprraid_state::exprraid_prot_status_r() return 0x02; } -void exprraid_state::exprraid_prot_data_w(uint8_t data) +void exprraid_state::prot_data_w(uint8_t data) { switch (data) { @@ -260,44 +486,52 @@ void exprraid_state::exprraid_prot_data_w(uint8_t data) break; default: - logerror("Unknown protection write: %x at %s\n", data, machine().describe_context()); + LOGPROT("Unknown protection write: %x at %s\n", data, machine().describe_context()); } } -void exprraid_state::exprraid_int_clear_w(uint8_t data) +void exprraid_state::int_clear_w(uint8_t data) { m_maincpu->set_input_line(DECO16_IRQ_LINE, CLEAR_LINE); } -uint8_t exprraid_state::vblank_r() -{ - return ioport("IN0")->read(); -} - - void exprraid_state::master_map(address_map &map) { - map(0x0000, 0x05ff).ram().share("main_ram"); - map(0x0600, 0x07ff).ram().share("spriteram"); - map(0x0800, 0x0bff).ram().w(FUNC(exprraid_state::exprraid_videoram_w)).share("videoram"); - map(0x0c00, 0x0fff).ram().w(FUNC(exprraid_state::exprraid_colorram_w)).share("colorram"); - map(0x1800, 0x1800).portr("DSW0"); /* DSW 0 */ - map(0x1801, 0x1801).portr("IN1"); /* Controls */ - map(0x1802, 0x1802).portr("IN2"); /* Coins */ - map(0x1803, 0x1803).portr("DSW1"); /* DSW 1 */ - map(0x2000, 0x2000).w(FUNC(exprraid_state::exprraid_int_clear_w)); + map(0x0000, 0x05ff).ram().share(m_main_ram); + map(0x0600, 0x07ff).ram().share(m_spriteram); + map(0x0800, 0x0bff).ram().w(FUNC(exprraid_state::videoram_w)).share(m_videoram); + map(0x0c00, 0x0fff).ram().w(FUNC(exprraid_state::colorram_w)).share(m_colorram); + map(0x1800, 0x1800).portr("DSW0"); + map(0x1801, 0x1801).portr("IN1"); // Controls + map(0x1802, 0x1802).portr("IN2"); // Coins + map(0x1803, 0x1803).portr("DSW1"); + map(0x2000, 0x2000).w(FUNC(exprraid_state::int_clear_w)); map(0x2001, 0x2001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0x2002, 0x2002).w(FUNC(exprraid_state::exprraid_flipscreen_w)); + map(0x2002, 0x2002).w(FUNC(exprraid_state::flipscreen_w)); map(0x2003, 0x2003).nopw(); // DMA SWAP - Allow writes to video and sprite RAM - map(0x2800, 0x2800).r(FUNC(exprraid_state::exprraid_prot_data_r)); - map(0x2801, 0x2801).r(FUNC(exprraid_state::exprraid_prot_status_r)); - map(0x2800, 0x2803).w(FUNC(exprraid_state::exprraid_bgselect_w)); - map(0x2804, 0x2804).w(FUNC(exprraid_state::exprraid_scrolly_w)); - map(0x2805, 0x2806).w(FUNC(exprraid_state::exprraid_scrollx_w)); - map(0x2807, 0x2807).w(FUNC(exprraid_state::exprraid_prot_data_w)); + map(0x2800, 0x2800).r(FUNC(exprraid_state::prot_data_r)); + map(0x2801, 0x2801).r(FUNC(exprraid_state::prot_status_r)); + map(0x2800, 0x2803).w(FUNC(exprraid_state::bgselect_w)); + map(0x2804, 0x2804).w(FUNC(exprraid_state::scrolly_w)); + map(0x2805, 0x2806).w(FUNC(exprraid_state::scrollx_w)); + map(0x2807, 0x2807).w(FUNC(exprraid_state::prot_data_w)); map(0x4000, 0xffff).rom(); } +void exprraid_state::wexpressb2_master_map(address_map &map) +{ + master_map(map); + + map(0x3800, 0x3800).portr("IN0"); +} + +void exprraid_state::wexpressb3_master_map(address_map &map) +{ + master_map(map); + + map(0xffc0, 0xffc0).portr("IN0"); +} + void exprraid_state::master_io_map(address_map &map) { map(0x01, 0x01).portr("IN0"); @@ -325,29 +559,29 @@ INPUT_CHANGED_MEMBER(exprraid_state::coin_inserted_nmi) } static INPUT_PORTS_START( exprraid ) - PORT_START("IN0") /* 0x3800 */ + PORT_START("IN0") // 0x3800 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_START("DSW0") /* 0x1800 */ + PORT_START("DSW0") // 0x1800 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2") - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:3,4") - PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) - PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x00) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW0",0x10,EQUALS,0x10) - PORT_DIPNAME( 0x10, 0x10, "Coin Mode" ) PORT_DIPLOCATION("SW1:5") /* see notes */ + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) + PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x00) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW0", 0x10, EQUALS, 0x10) + PORT_DIPNAME( 0x10, 0x10, "Coin Mode" ) PORT_DIPLOCATION("SW1:5") // see notes PORT_DIPSETTING( 0x10, "Mode 1" ) PORT_DIPSETTING( 0x00, "Mode 2" ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:6") @@ -358,7 +592,7 @@ static INPUT_PORTS_START( exprraid ) PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW1:8" ) - PORT_START("IN1") /* 0x1801 */ + PORT_START("IN1") // 0x1801 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY @@ -368,7 +602,7 @@ static INPUT_PORTS_START( exprraid ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - PORT_START("IN2") /* 0x1802 */ + PORT_START("IN2") // 0x1802 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL @@ -378,21 +612,21 @@ static INPUT_PORTS_START( exprraid ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, exprraid_state, coin_inserted_deco16, 0) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, exprraid_state, coin_inserted_deco16, 0) - PORT_START("DSW1") /* 0x1803 */ + PORT_START("DSW1") // 0x1803 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x00, DEF_STR( Infinite ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3") /* see notes */ + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3") // see notes PORT_DIPSETTING( 0x00, "50k 80k" ) PORT_DIPSETTING( 0x04, "50k only" ) - PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5") /* see notes */ + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5") // see notes PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:6") /* see notes */ + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:6") // see notes PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, exprraid_state, coin_inserted_deco16, 0) @@ -401,7 +635,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( exprboot ) PORT_INCLUDE( exprraid ) - PORT_MODIFY("IN2") /* 0x1802 */ + PORT_MODIFY("IN2") // 0x1802 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, exprraid_state, coin_inserted_nmi, 0) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, exprraid_state, coin_inserted_nmi, 0) INPUT_PORTS_END @@ -409,34 +643,34 @@ INPUT_PORTS_END static const gfx_layout charlayout = { - 8,8, /* 8*8 characters */ - 1024, /* 1024 characters */ - 2, /* 2 bits per pixel */ - { 0, 4 }, /* the bitplanes are packed in the same byte */ + 8,8, // 8*8 characters + 1024, // 1024 characters + 2, // 2 bits per pixel + { 0, 4 }, // the bitplanes are packed in the same byte { (0x2000*8)+0, (0x2000*8)+1, (0x2000*8)+2, (0x2000*8)+3, 0, 1, 2, 3 }, { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 /* every char takes 8 consecutive bytes */ + 8*8 // every char takes 8 consecutive bytes }; static const gfx_layout spritelayout = { - 16,16, /* 16*16 sprites */ - 2048, /* 2048 sprites */ - 3, /* 3 bits per pixel */ - { 2*2048*32*8, 2048*32*8, 0 }, /* the bitplanes are separated */ + 16,16, // 16*16 sprites + 2048, // 2048 sprites + 3, // 3 bits per pixel + { 2*2048*32*8, 2048*32*8, 0 }, // the bitplanes are separated { 128+0, 128+1, 128+2, 128+3, 128+4, 128+5, 128+6, 128+7, 0, 1, 2, 3, 4, 5, 6, 7 }, { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, - 32*8 /* every char takes 32 consecutive bytes */ + 32*8 // every char takes 32 consecutive bytes }; static const gfx_layout tile1 = { - 16,16, /* 16*16 tiles */ - 128, /* 128 tiles */ - 3, /* 3 bits per pixel */ + 16,16, // 16*16 tiles + 128, // 128 tiles + 3, // 3 bits per pixel { 4, 0x10000*8+0, 0x10000*8+4 }, { 0, 1, 2, 3, 1024*32*2,1024*32*2+1,1024*32*2+2,1024*32*2+3, - 128+0,128+1,128+2,128+3,128+1024*32*2,128+1024*32*2+1,128+1024*32*2+2,128+1024*32*2+3 }, /* BOGUS */ + 128+0,128+1,128+2,128+3,128+1024*32*2,128+1024*32*2+1,128+1024*32*2+2,128+1024*32*2+3 }, // BOGUS { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8, 64+0*8,64+1*8,64+2*8,64+3*8,64+4*8,64+5*8,64+6*8,64+7*8 }, 32*8 @@ -444,12 +678,12 @@ static const gfx_layout tile1 = static const gfx_layout tile2 = { - 16,16, /* 16*16 tiles */ - 128, /* 128 tiles */ - 3, /* 3 bits per pixel */ + 16,16, // 16*16 tiles + 128, // 128 tiles + 3, // 3 bits per pixel { 0, 0x11000*8+0, 0x11000*8+4 }, { 0, 1, 2, 3, 1024*32*2,1024*32*2+1,1024*32*2+2,1024*32*2+3, - 128+0,128+1,128+2,128+3,128+1024*32*2,128+1024*32*2+1,128+1024*32*2+2,128+1024*32*2+3 }, /* BOGUS */ + 128+0,128+1,128+2,128+3,128+1024*32*2,128+1024*32*2+1,128+1024*32*2+2,128+1024*32*2+3 }, // BOGUS { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8, 64+0*8,64+1*8,64+2*8,64+3*8,64+4*8,64+5*8,64+6*8,64+7*8 }, 32*8 @@ -457,16 +691,16 @@ static const gfx_layout tile2 = static GFXDECODE_START( gfx_exprraid ) - GFXDECODE_ENTRY( "gfx1", 0x00000, charlayout, 128, 2 ) /* characters */ - GFXDECODE_ENTRY( "gfx2", 0x00000, spritelayout, 64, 8 ) /* sprites */ - GFXDECODE_ENTRY( "gfx3", 0x00000, tile1, 0, 4 ) /* background tiles */ - GFXDECODE_ENTRY( "gfx3", 0x00000, tile2, 0, 4 ) - GFXDECODE_ENTRY( "gfx3", 0x04000, tile1, 0, 4 ) - GFXDECODE_ENTRY( "gfx3", 0x04000, tile2, 0, 4 ) - GFXDECODE_ENTRY( "gfx3", 0x08000, tile1, 0, 4 ) - GFXDECODE_ENTRY( "gfx3", 0x08000, tile2, 0, 4 ) - GFXDECODE_ENTRY( "gfx3", 0x0c000, tile1, 0, 4 ) - GFXDECODE_ENTRY( "gfx3", 0x0c000, tile2, 0, 4 ) + GFXDECODE_ENTRY( "chars", 0x00000, charlayout, 128, 2 ) + GFXDECODE_ENTRY( "sprites", 0x00000, spritelayout, 64, 8 ) + GFXDECODE_ENTRY( "bgtiles1", 0x00000, tile1, 0, 4 ) + GFXDECODE_ENTRY( "bgtiles1", 0x00000, tile2, 0, 4 ) + GFXDECODE_ENTRY( "bgtiles1", 0x04000, tile1, 0, 4 ) + GFXDECODE_ENTRY( "bgtiles1", 0x04000, tile2, 0, 4 ) + GFXDECODE_ENTRY( "bgtiles1", 0x08000, tile1, 0, 4 ) + GFXDECODE_ENTRY( "bgtiles1", 0x08000, tile2, 0, 4 ) + GFXDECODE_ENTRY( "bgtiles1", 0x0c000, tile1, 0, 4 ) + GFXDECODE_ENTRY( "bgtiles1", 0x0c000, tile2, 0, 4 ) GFXDECODE_END @@ -487,27 +721,27 @@ void exprraid_state::machine_reset() void exprraid_state::exprraid(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware DECO16(config, m_maincpu, XTAL(12'000'000) / 8); m_maincpu->set_addrmap(AS_PROGRAM, &exprraid_state::master_map); m_maincpu->set_addrmap(AS_IO, &exprraid_state::master_io_map); MC6809(config, m_slave, XTAL(12'000'000) / 2); // MC68B09P m_slave->set_addrmap(AS_PROGRAM, &exprraid_state::slave_map); - /* IRQs are caused by the YM3526 */ + // IRQs are caused by the YM3526 config.set_maximum_quantum(attotime::from_hz(12000)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(12'000'000)/2, 384, 0, 256, 262, 8, 256-8); /* not accurate */ - screen.set_screen_update(FUNC(exprraid_state::screen_update_exprraid)); + screen.set_raw(XTAL(12'000'000) / 2, 384, 0, 256, 262, 8, 256-8); // not accurate + screen.set_screen_update(FUNC(exprraid_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_exprraid); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); @@ -521,12 +755,19 @@ void exprraid_state::exprraid(machine_config &config) ym2.add_route(ALL_OUTPUTS, "mono", 0.60); } -void exprraid_state::exprboot(machine_config &config) +void exprraid_state::wexpressb2(machine_config &config) { exprraid(config); - M6502(config.replace(), m_maincpu, 1500000); /* 1.5 MHz ??? */ - m_maincpu->set_addrmap(AS_PROGRAM, &exprraid_state::master_map); + M6502(config.replace(), m_maincpu, 1'500'000); // 1.5 MHz ??? + m_maincpu->set_addrmap(AS_PROGRAM, &exprraid_state::wexpressb2_master_map); +} + +void exprraid_state::wexpressb3(machine_config &config) +{ + wexpressb2(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &exprraid_state::wexpressb3_master_map); } @@ -541,34 +782,34 @@ ROM_START( exprraid ) ROM_LOAD( "cz01-2e.16b", 0x4000, 0x4000, CRC(a0ae6756) SHA1(7f7ec1efddbb62e9d201c6013bca8ab72c3f75f6) ) ROM_LOAD( "cz00-4e.15a", 0x8000, 0x8000, CRC(910f6ccc) SHA1(1dbf164a7add9335d90ee07b6db9a162a28e407b) ) - ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the sub cpu */ + ROM_REGION( 0x10000, "slave", 0 ) ROM_LOAD( "cz02-1.2a", 0x8000, 0x8000, CRC(552e6112) SHA1(f8412a63cab0aa47321d602f69bf534426c6aa5d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) /* sprites */ + ROM_REGION( 0x30000, "sprites", 0 ) + ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) ROM_LOAD( "cz08.14h", 0x08000, 0x8000, CRC(2293fc61) SHA1(bf81db375f5424396559dcf0e04d34a52f6a020a) ) ROM_LOAD( "cz13.16k", 0x10000, 0x8000, CRC(7c3bfd00) SHA1(87b48e09aaeacf78f3260df893b0922e25d10a5d) ) ROM_LOAD( "cz12.14k", 0x18000, 0x8000, CRC(ea2294c8) SHA1(bc996351921e68e6237cee2d29fee882931ce0ea) ) ROM_LOAD( "cz11.13k", 0x20000, 0x8000, CRC(b7418335) SHA1(e9d08ee651b9221c371e2629a757bceca7b6192b) ) ROM_LOAD( "cz10.11k", 0x28000, 0x8000, CRC(2f611978) SHA1(fb60be573184d2af1dfdd543e68eeec53f2788f2) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "cz04.8e", 0x00000, 0x8000, CRC(643a1bd3) SHA1(b23631d96cb413808f65f3ebe8fe6539b6140606) ) /* tiles */ - /* Save 0x08000-0x0ffff to expand the previous so we can decode the thing */ - ROM_LOAD( "cz05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) /* tiles */ - ROM_LOAD( "cz06.8h", 0x18000, 0x8000, CRC(b9bb448b) SHA1(84974b1f3a5b58cd427d874f805a6dd9244c1101) ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles1", 0 ) + ROM_LOAD( "cz04.8e", 0x00000, 0x8000, CRC(643a1bd3) SHA1(b23631d96cb413808f65f3ebe8fe6539b6140606) ) + // Save 0x08000-0x0ffff to expand the previous so we can decode the thing + ROM_LOAD( "cz05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) + ROM_LOAD( "cz06.8h", 0x18000, 0x8000, CRC(b9bb448b) SHA1(84974b1f3a5b58cd427d874f805a6dd9244c1101) ) - ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ + ROM_REGION( 0x8000, "bgtiles2", 0 ) ROM_LOAD( "cz03.12f", 0x0000, 0x8000, CRC(6ce11971) SHA1(16bfa69b3ad02253e81c8110c9b840be03952790) ) - ROM_REGION( 0x0400, "proms", 0 ) /* All 4 proms are Fujitsu MB7114 or compatible */ - ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) /* red */ - ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) /* green */ - ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) /* blue */ - ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) /* priority */ + ROM_REGION( 0x0400, "proms", 0 ) // All 4 PROMs are Fujitsu MB7114 or compatible + ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) // red + ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) // green + ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) // blue + ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) // priority ROM_REGION( 0x0400, "plds", 0 ) ROM_LOAD( "pal16r4a.5c", 0x0000, 0x0104, CRC(d66aaa87) SHA1(dc29b473238ed6a9de2076c79644b613a9ba6924) ) @@ -580,73 +821,73 @@ ROM_START( exprraidu ) ROM_LOAD( "cz01-5a.16b", 0x4000, 0x4000, CRC(dc8f9fba) SHA1(cae6af54fc0081d606b6884e8873aed356a37ba9) ) ROM_LOAD( "cz00-5.15a", 0x8000, 0x8000, CRC(a81290bc) SHA1(ddb0acda6124427bee691f9926c41fda27ed816e) ) - ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the sub cpu */ + ROM_REGION( 0x10000, "slave", 0 ) ROM_LOAD( "cz02-1.2a", 0x8000, 0x8000, CRC(552e6112) SHA1(f8412a63cab0aa47321d602f69bf534426c6aa5d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) /* sprites */ + ROM_REGION( 0x30000, "sprites", 0 ) + ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) ROM_LOAD( "cz08.14h", 0x08000, 0x8000, CRC(2293fc61) SHA1(bf81db375f5424396559dcf0e04d34a52f6a020a) ) ROM_LOAD( "cz13.16k", 0x10000, 0x8000, CRC(7c3bfd00) SHA1(87b48e09aaeacf78f3260df893b0922e25d10a5d) ) ROM_LOAD( "cz12.14k", 0x18000, 0x8000, CRC(ea2294c8) SHA1(bc996351921e68e6237cee2d29fee882931ce0ea) ) ROM_LOAD( "cz11.13k", 0x20000, 0x8000, CRC(b7418335) SHA1(e9d08ee651b9221c371e2629a757bceca7b6192b) ) ROM_LOAD( "cz10.11k", 0x28000, 0x8000, CRC(2f611978) SHA1(fb60be573184d2af1dfdd543e68eeec53f2788f2) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "cz04.8e", 0x00000, 0x8000, CRC(643a1bd3) SHA1(b23631d96cb413808f65f3ebe8fe6539b6140606) ) /* tiles */ - /* Save 0x08000-0x0ffff to expand the previous so we can decode the thing */ - ROM_LOAD( "cz05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) /* tiles */ - ROM_LOAD( "cz06.8h", 0x18000, 0x8000, CRC(b9bb448b) SHA1(84974b1f3a5b58cd427d874f805a6dd9244c1101) ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles1", 0 ) + ROM_LOAD( "cz04.8e", 0x00000, 0x8000, CRC(643a1bd3) SHA1(b23631d96cb413808f65f3ebe8fe6539b6140606) ) + // Save 0x08000-0x0ffff to expand the previous so we can decode the thing + ROM_LOAD( "cz05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) + ROM_LOAD( "cz06.8h", 0x18000, 0x8000, CRC(b9bb448b) SHA1(84974b1f3a5b58cd427d874f805a6dd9244c1101) ) - ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ + ROM_REGION( 0x8000, "bgtiles2", 0 ) ROM_LOAD( "cz03.12f", 0x0000, 0x8000, CRC(6ce11971) SHA1(16bfa69b3ad02253e81c8110c9b840be03952790) ) - ROM_REGION( 0x0400, "proms", 0 ) /* All 4 proms are Fujitsu MB7114 or compatible */ - ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) /* red */ - ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) /* green */ - ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) /* blue */ - ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) /* priority */ + ROM_REGION( 0x0400, "proms", 0 ) // All 4 PROMs are Fujitsu MB7114 or compatible + ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) // red + ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) // green + ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) // blue + ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) // priority ROM_REGION( 0x0400, "plds", 0 ) ROM_LOAD( "pal16r4a.5c", 0x0000, 0x0104, CRC(d66aaa87) SHA1(dc29b473238ed6a9de2076c79644b613a9ba6924) ) ROM_LOAD( "pal16r4a.5e", 0x0200, 0x0104, CRC(9a8766a7) SHA1(5f84ad9e633daeb14531ef527827ef3d9b269437) ) ROM_END -ROM_START( exprraidi ) /* PCB manufactured in Italy by Gecas under Data East license (custom ICs are all DECO original) */ +ROM_START( exprraidi ) // PCB manufactured in Italy by Gecas under Data East license (custom ICs are all DECO original) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "cz01-2e.16b", 0x4000, 0x4000, CRC(a0ae6756) SHA1(7f7ec1efddbb62e9d201c6013bca8ab72c3f75f6) ) ROM_LOAD( "exraidi6.15a", 0x8000, 0x8000, CRC(a3d98118) SHA1(d35f0fcabef045afcec5119f95ae6da2cae547db) ) - ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the sub cpu */ + ROM_REGION( 0x10000, "slave", 0 ) ROM_LOAD( "cz02-1.2a", 0x8000, 0x8000, CRC(552e6112) SHA1(f8412a63cab0aa47321d602f69bf534426c6aa5d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) /* sprites */ + ROM_REGION( 0x30000, "sprites", 0 ) + ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) ROM_LOAD( "cz08.14h", 0x08000, 0x8000, CRC(2293fc61) SHA1(bf81db375f5424396559dcf0e04d34a52f6a020a) ) ROM_LOAD( "cz13.16k", 0x10000, 0x8000, CRC(7c3bfd00) SHA1(87b48e09aaeacf78f3260df893b0922e25d10a5d) ) ROM_LOAD( "cz12.14k", 0x18000, 0x8000, CRC(ea2294c8) SHA1(bc996351921e68e6237cee2d29fee882931ce0ea) ) ROM_LOAD( "cz11.13k", 0x20000, 0x8000, CRC(b7418335) SHA1(e9d08ee651b9221c371e2629a757bceca7b6192b) ) ROM_LOAD( "cz10.11k", 0x28000, 0x8000, CRC(2f611978) SHA1(fb60be573184d2af1dfdd543e68eeec53f2788f2) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "cz04.8e", 0x00000, 0x8000, CRC(643a1bd3) SHA1(b23631d96cb413808f65f3ebe8fe6539b6140606) ) /* tiles */ - /* Save 0x08000-0x0ffff to expand the previous so we can decode the thing */ - ROM_LOAD( "cz05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) /* tiles */ - ROM_LOAD( "cz06.8h", 0x18000, 0x8000, CRC(b9bb448b) SHA1(84974b1f3a5b58cd427d874f805a6dd9244c1101) ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles1", 0 ) + ROM_LOAD( "cz04.8e", 0x00000, 0x8000, CRC(643a1bd3) SHA1(b23631d96cb413808f65f3ebe8fe6539b6140606) ) + // Save 0x08000-0x0ffff to expand the previous so we can decode the thing + ROM_LOAD( "cz05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) + ROM_LOAD( "cz06.8h", 0x18000, 0x8000, CRC(b9bb448b) SHA1(84974b1f3a5b58cd427d874f805a6dd9244c1101) ) - ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ + ROM_REGION( 0x8000, "bgtiles2", 0 ) ROM_LOAD( "cz03.12f", 0x0000, 0x8000, CRC(6ce11971) SHA1(16bfa69b3ad02253e81c8110c9b840be03952790) ) - ROM_REGION( 0x0400, "proms", 0 ) /* All 4 proms are Fujitsu MB7114 or compatible */ - ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) /* red */ - ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) /* green */ - ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) /* blue */ - ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) /* priority */ + ROM_REGION( 0x0400, "proms", 0 ) // All 4 PROMs are Fujitsu MB7114 or compatible + ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) // red + ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) // green + ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) // blue + ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) // priority ROM_REGION( 0x0400, "plds", 0 ) ROM_LOAD( "pal16r4a.5c", 0x0000, 0x0104, CRC(d66aaa87) SHA1(dc29b473238ed6a9de2076c79644b613a9ba6924) ) @@ -658,34 +899,34 @@ ROM_START( wexpress ) ROM_LOAD( "cy01-2.16b", 0x4000, 0x4000, CRC(a0ae6756) SHA1(7f7ec1efddbb62e9d201c6013bca8ab72c3f75f6) ) ROM_LOAD( "cy00-4.15a", 0x8000, 0x8000, CRC(c66d4dd3) SHA1(3c354e7379b3c3e709039ee2f3dbad7edddfc517) ) - ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the sub cpu */ + ROM_REGION( 0x10000, "slave", 0 ) ROM_LOAD( "cy02-1.2a", 0x8000, 0x8000, CRC(552e6112) SHA1(f8412a63cab0aa47321d602f69bf534426c6aa5d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) /* sprites */ + ROM_REGION( 0x30000, "sprites", 0 ) + ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) ROM_LOAD( "cz08.14h", 0x08000, 0x8000, CRC(2293fc61) SHA1(bf81db375f5424396559dcf0e04d34a52f6a020a) ) ROM_LOAD( "cz13.16k", 0x10000, 0x8000, CRC(7c3bfd00) SHA1(87b48e09aaeacf78f3260df893b0922e25d10a5d) ) ROM_LOAD( "cz12.14k", 0x18000, 0x8000, CRC(ea2294c8) SHA1(bc996351921e68e6237cee2d29fee882931ce0ea) ) ROM_LOAD( "cz11.13k", 0x20000, 0x8000, CRC(b7418335) SHA1(e9d08ee651b9221c371e2629a757bceca7b6192b) ) ROM_LOAD( "cz10.11k", 0x28000, 0x8000, CRC(2f611978) SHA1(fb60be573184d2af1dfdd543e68eeec53f2788f2) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) /* tiles */ - /* Save 0x08000-0x0ffff to expand the previous so we can decode the thing */ - ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) /* tiles */ - ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles1", 0 ) + ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) + // Save 0x08000-0x0ffff to expand the previous so we can decode the thing + ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) + ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) - ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ + ROM_REGION( 0x8000, "bgtiles2", 0 ) ROM_LOAD( "cy03.12f", 0x0000, 0x8000, CRC(242e3e64) SHA1(4fa8e93ef055bfdbe3bd619c53bf2448e1b832f0) ) - ROM_REGION( 0x0400, "proms", 0 ) /* All 4 proms are Fujitsu MB7114 or compatible */ - ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) /* red */ - ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) /* green */ - ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) /* blue */ - ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) /* priority */ + ROM_REGION( 0x0400, "proms", 0 ) // All 4 PROMs are Fujitsu MB7114 or compatible + ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) // red + ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) // green + ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) // blue + ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) // priority ROM_REGION( 0x0400, "plds", 0 ) ROM_LOAD( "pal16r4a.5c", 0x0000, 0x0104, CRC(d66aaa87) SHA1(dc29b473238ed6a9de2076c79644b613a9ba6924) ) @@ -697,34 +938,34 @@ ROM_START( wexpressb1 ) ROM_LOAD( "2.16b", 0x4000, 0x4000, CRC(ea5e5a8f) SHA1(fa92bcb6b97c2966cd330b309eba73f9c059f14e) ) ROM_LOAD( "1.15a", 0x8000, 0x8000, CRC(a7daae12) SHA1(a97f4bc05a3ec096d8c717bdf096f4b0e59dc2c2) ) - ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the sub cpu */ + ROM_REGION( 0x10000, "slave", 0 ) ROM_LOAD( "cy02-1.2a", 0x8000, 0x8000, CRC(552e6112) SHA1(f8412a63cab0aa47321d602f69bf534426c6aa5d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) /* sprites */ + ROM_REGION( 0x30000, "sprites", 0 ) + ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) ROM_LOAD( "cz08.14h", 0x08000, 0x8000, CRC(2293fc61) SHA1(bf81db375f5424396559dcf0e04d34a52f6a020a) ) ROM_LOAD( "cz13.16k", 0x10000, 0x8000, CRC(7c3bfd00) SHA1(87b48e09aaeacf78f3260df893b0922e25d10a5d) ) ROM_LOAD( "cz12.14k", 0x18000, 0x8000, CRC(ea2294c8) SHA1(bc996351921e68e6237cee2d29fee882931ce0ea) ) ROM_LOAD( "cz11.13k", 0x20000, 0x8000, CRC(b7418335) SHA1(e9d08ee651b9221c371e2629a757bceca7b6192b) ) ROM_LOAD( "cz10.11k", 0x28000, 0x8000, CRC(2f611978) SHA1(fb60be573184d2af1dfdd543e68eeec53f2788f2) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) /* tiles */ - /* Save 0x08000-0x0ffff to expand the previous so we can decode the thing */ - ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) /* tiles */ - ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles1", 0 ) + ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) + // Save 0x08000-0x0ffff to expand the previous so we can decode the thing + ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) + ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) - ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ + ROM_REGION( 0x8000, "bgtiles2", 0 ) ROM_LOAD( "cy03.12f", 0x0000, 0x8000, CRC(242e3e64) SHA1(4fa8e93ef055bfdbe3bd619c53bf2448e1b832f0) ) - ROM_REGION( 0x0400, "proms", 0 ) /* All 4 proms are Fujitsu MB7114 or compatible */ - ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) /* red */ - ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) /* green */ - ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) /* blue */ - ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) /* priority */ + ROM_REGION( 0x0400, "proms", 0 ) // All 4 PROMs are Fujitsu MB7114 or compatible + ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) // red + ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) // green + ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) // blue + ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) // priority ROM_REGION( 0x0400, "plds", 0 ) ROM_LOAD( "pal16r4a.5c", 0x0000, 0x0104, CRC(d66aaa87) SHA1(dc29b473238ed6a9de2076c79644b613a9ba6924) ) @@ -736,34 +977,34 @@ ROM_START( wexpressb2 ) ROM_LOAD( "wexpress.3", 0x4000, 0x4000, CRC(b4dd0fa4) SHA1(8d17eb28ae92486c67859871ea2bef8f50f39dbd) ) ROM_LOAD( "wexpress.1", 0x8000, 0x8000, CRC(e8466596) SHA1(dbbd3b84d0f017292595fc19f7412b984851221a) ) - ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the sub cpu */ + ROM_REGION( 0x10000, "slave", 0 ) ROM_LOAD( "cy02-1.2a", 0x8000, 0x8000, CRC(552e6112) SHA1(f8412a63cab0aa47321d602f69bf534426c6aa5d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) /* sprites */ + ROM_REGION( 0x30000, "sprites", 0 ) + ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) ROM_LOAD( "cz08.14h", 0x08000, 0x8000, CRC(2293fc61) SHA1(bf81db375f5424396559dcf0e04d34a52f6a020a) ) ROM_LOAD( "cz13.16k", 0x10000, 0x8000, CRC(7c3bfd00) SHA1(87b48e09aaeacf78f3260df893b0922e25d10a5d) ) ROM_LOAD( "cz12.14k", 0x18000, 0x8000, CRC(ea2294c8) SHA1(bc996351921e68e6237cee2d29fee882931ce0ea) ) ROM_LOAD( "cz11.13k", 0x20000, 0x8000, CRC(b7418335) SHA1(e9d08ee651b9221c371e2629a757bceca7b6192b) ) ROM_LOAD( "cz10.11k", 0x28000, 0x8000, CRC(2f611978) SHA1(fb60be573184d2af1dfdd543e68eeec53f2788f2) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) /* tiles */ - /* Save 0x08000-0x0ffff to expand the previous so we can decode the thing */ - ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) /* tiles */ - ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles1", 0 ) + ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) + // Save 0x08000-0x0ffff to expand the previous so we can decode the thing + ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) + ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) - ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ + ROM_REGION( 0x8000, "bgtiles2", 0 ) ROM_LOAD( "cy03.12f", 0x0000, 0x8000, CRC(242e3e64) SHA1(4fa8e93ef055bfdbe3bd619c53bf2448e1b832f0) ) - ROM_REGION( 0x0400, "proms", 0 ) /* All 4 proms are Fujitsu MB7114 or compatible */ - ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) /* red */ - ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) /* green */ - ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) /* blue */ - ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) /* priority */ + ROM_REGION( 0x0400, "proms", 0 ) // All 4 PROMs are Fujitsu MB7114 or compatible + ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) // red + ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) // green + ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) // blue + ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) // priority ROM_END ROM_START( wexpressb3 ) @@ -771,41 +1012,41 @@ ROM_START( wexpressb3 ) ROM_LOAD( "s2.16b", 0x4000, 0x4000, CRC(40d70fcb) SHA1(1327d39f872a39e020972952e5756ca59c55f9d0) ) ROM_LOAD( "s1.15a", 0x8000, 0x8000, CRC(7c573824) SHA1(f5e4d4f0866c08c88d012a77e8aa2e74a779f986) ) - ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the sub cpu */ + ROM_REGION( 0x10000, "slave", 0 ) ROM_LOAD( "cy02-1.2a", 0x8000, 0x8000, CRC(552e6112) SHA1(f8412a63cab0aa47321d602f69bf534426c6aa5d) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) /* characters */ + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "cz07.5b", 0x00000, 0x4000, CRC(686bac23) SHA1(b6c96ed40e90a8ba32c2e78a65f9589d387b0254) ) - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) /* sprites */ + ROM_REGION( 0x30000, "sprites", 0 ) + ROM_LOAD( "cz09.16h", 0x00000, 0x8000, CRC(1ed250d1) SHA1(c98b0440e4319308e683e857bbfeb6a150c76ff3) ) ROM_LOAD( "cz08.14h", 0x08000, 0x8000, CRC(2293fc61) SHA1(bf81db375f5424396559dcf0e04d34a52f6a020a) ) ROM_LOAD( "cz13.16k", 0x10000, 0x8000, CRC(7c3bfd00) SHA1(87b48e09aaeacf78f3260df893b0922e25d10a5d) ) ROM_LOAD( "cz12.14k", 0x18000, 0x8000, CRC(ea2294c8) SHA1(bc996351921e68e6237cee2d29fee882931ce0ea) ) ROM_LOAD( "cz11.13k", 0x20000, 0x8000, CRC(b7418335) SHA1(e9d08ee651b9221c371e2629a757bceca7b6192b) ) ROM_LOAD( "cz10.11k", 0x28000, 0x8000, CRC(2f611978) SHA1(fb60be573184d2af1dfdd543e68eeec53f2788f2) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) /* tiles */ - /* Save 0x08000-0x0ffff to expand the previous so we can decode the thing */ - ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) /* tiles */ - ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles1", 0 ) + ROM_LOAD( "cy04.8e", 0x00000, 0x8000, CRC(f2e93ff0) SHA1(2e631966e1fa0b2699aa782b589d36801072ba03) ) + // Save 0x08000-0x0ffff to expand the previous so we can decode the thing + ROM_LOAD( "cy05.8f", 0x10000, 0x8000, CRC(c44570bf) SHA1(3e9b8b6b36c7f5ae016dba3987ea19a29bd5ee5b) ) + ROM_LOAD( "cy06.8h", 0x18000, 0x8000, CRC(c3a56de5) SHA1(aefc516c6c69b12291c0bda03729910181a91a17) ) - ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ + ROM_REGION( 0x8000, "bgtiles2", 0 ) ROM_LOAD( "3.12f", 0x0000, 0x8000, CRC(242e3e64) SHA1(4fa8e93ef055bfdbe3bd619c53bf2448e1b832f0) ) ROM_REGION( 0x0400, "proms", 0 ) /* Proms Weren't Present In This Set, Using the One from the Other */ - ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) /* red */ - ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) /* green */ - ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) /* blue */ - ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) /* priority */ + ROM_LOAD( "cy-17.5b", 0x0000, 0x0100, CRC(da31dfbc) SHA1(ac476440864f538918f7bef2e1db82fd19195f89) ) // red + ROM_LOAD( "cy-16.6b", 0x0100, 0x0100, CRC(51f25b4c) SHA1(bfcca57613fbb22919e00db1f6a8c7ca50faa60b) ) // green + ROM_LOAD( "cy-15.7b", 0x0200, 0x0100, CRC(a6168d7f) SHA1(0c7b31adcd764ce2631c3fb5c1a968b01f65e741) ) // blue + ROM_LOAD( "cy-14.9b", 0x0300, 0x0100, CRC(52aad300) SHA1(ff09772b930afa87e28d0628ef85a589a3d149c9) ) // priority ROM_END -void exprraid_state::exprraid_gfx_expand() +void exprraid_state::gfx_expand() { - /* Expand the background rom so we can use regular decode routines */ - uint8_t *gfx = memregion("gfx3")->base(); + // Expand the background ROM so we can use regular decode routines + uint8_t *gfx = memregion("bgtiles1")->base(); int offs = 0x10000 - 0x1000; for (int i = 0x8000 - 0x1000; i >= 0; i-= 0x1000) @@ -822,7 +1063,7 @@ void exprraid_state::init_wexpressb() { uint8_t *rom = memregion("maincpu")->base(); - /* HACK: this set uses M6502 irq vectors but DECO CPU-16 opcodes??? */ + // HACK: this set uses M6502 IRQ vectors but DECO CPU-16 opcodes??? rom[0xfff7] = rom[0xfffa]; rom[0xfff6] = rom[0xfffb]; @@ -832,31 +1073,16 @@ void exprraid_state::init_wexpressb() rom[0xfff3] = rom[0xfffe]; rom[0xfff2] = rom[0xffff]; - exprraid_gfx_expand(); -} - -void exprraid_state::init_exprraid() -{ - exprraid_gfx_expand(); -} - -void exprraid_state::init_wexpressb2() -{ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x3800, 0x3800, read8smo_delegate(*this, FUNC(exprraid_state::vblank_r))); - exprraid_gfx_expand(); + gfx_expand(); } -void exprraid_state::init_wexpressb3() -{ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xffc0, 0xffc0, read8smo_delegate(*this, FUNC(exprraid_state::vblank_r))); - exprraid_gfx_expand(); -} +} // anonymous namespace -GAME( 1986, exprraid, 0, exprraid, exprraid, exprraid_state, init_exprraid, ROT0, "Data East Corporation", "Express Raider (World, Rev 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, exprraidu, exprraid, exprraid, exprraid, exprraid_state, init_exprraid, ROT0, "Data East USA", "Express Raider (US, rev 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, exprraidi, exprraid, exprraid, exprraid, exprraid_state, init_exprraid, ROT0, "Data East Corporation", "Express Raider (Italy)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wexpress, exprraid, exprraid, exprraid, exprraid_state, init_exprraid, ROT0, "Data East Corporation", "Western Express (Japan, rev 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wexpressb1, exprraid, exprraid, exprraid, exprraid_state, init_wexpressb, ROT0, "bootleg", "Western Express (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wexpressb2, exprraid, exprboot, exprboot, exprraid_state, init_wexpressb2, ROT0, "bootleg", "Western Express (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wexpressb3, exprraid, exprboot, exprboot, exprraid_state, init_wexpressb3, ROT0, "bootleg", "Western Express (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, exprraid, 0, exprraid, exprraid, exprraid_state, gfx_expand, ROT0, "Data East Corporation", "Express Raider (World, Rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, exprraidu, exprraid, exprraid, exprraid, exprraid_state, gfx_expand, ROT0, "Data East USA", "Express Raider (US, rev 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, exprraidi, exprraid, exprraid, exprraid, exprraid_state, gfx_expand, ROT0, "Data East Corporation", "Express Raider (Italy)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wexpress, exprraid, exprraid, exprraid, exprraid_state, gfx_expand, ROT0, "Data East Corporation", "Western Express (Japan, rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wexpressb1, exprraid, exprraid, exprraid, exprraid_state, init_wexpressb, ROT0, "bootleg", "Western Express (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wexpressb2, exprraid, wexpressb2, exprboot, exprraid_state, gfx_expand, ROT0, "bootleg", "Western Express (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wexpressb3, exprraid, wexpressb3, exprboot, exprraid_state, gfx_expand, ROT0, "bootleg", "Western Express (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/dataeast/exprraid.h b/src/mame/dataeast/exprraid.h deleted file mode 100644 index 9286aaae2ad..00000000000 --- a/src/mame/dataeast/exprraid.h +++ /dev/null @@ -1,87 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ernesto Corvi -/************************************************************************* - - Express Raider - -*************************************************************************/ - -#include "machine/gen_latch.h" -#include "emupal.h" -#include "tilemap.h" - -class exprraid_state : public driver_device -{ -public: - exprraid_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_slave(*this, "slave"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch"), - m_main_ram(*this, "main_ram"), - m_spriteram(*this, "spriteram"), - m_videoram(*this, "videoram"), - m_colorram(*this, "colorram") - { } - - void exprraid(machine_config &config); - void exprboot(machine_config &config); - - void init_exprraid(); - void init_wexpressb(); - void init_wexpressb2(); - void init_wexpressb3(); - - DECLARE_INPUT_CHANGED_MEMBER(coin_inserted_deco16); - DECLARE_INPUT_CHANGED_MEMBER(coin_inserted_nmi); - -private: - /* devices */ - required_device m_maincpu; - required_device m_slave; - required_device m_gfxdecode; - required_device m_palette; - required_device m_soundlatch; - - /* memory pointers */ - required_shared_ptr m_main_ram; - required_shared_ptr m_spriteram; - required_shared_ptr m_videoram; - required_shared_ptr m_colorram; - - /* protection */ - uint8_t m_prot_value = 0U; - - /* video-related */ - tilemap_t *m_bg_tilemap = nullptr; - tilemap_t *m_fg_tilemap = nullptr; - int m_bg_index[4]{}; - - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - - void exprraid_int_clear_w(uint8_t data); - uint8_t exprraid_prot_status_r(); - uint8_t exprraid_prot_data_r(); - void exprraid_prot_data_w(uint8_t data); - uint8_t vblank_r(); - void exprraid_videoram_w(offs_t offset, uint8_t data); - void exprraid_colorram_w(offs_t offset, uint8_t data); - void exprraid_flipscreen_w(uint8_t data); - void exprraid_bgselect_w(offs_t offset, uint8_t data); - void exprraid_scrollx_w(offs_t offset, uint8_t data); - void exprraid_scrolly_w(offs_t offset, uint8_t data); - - TILE_GET_INFO_MEMBER(get_bg_tile_info); - TILE_GET_INFO_MEMBER(get_fg_tile_info); - - uint32_t screen_update_exprraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); - void exprraid_gfx_expand(); - void master_io_map(address_map &map); - void master_map(address_map &map); - void slave_map(address_map &map); -}; diff --git a/src/mame/dataeast/exprraid_v.cpp b/src/mame/dataeast/exprraid_v.cpp deleted file mode 100644 index 7f020a3912b..00000000000 --- a/src/mame/dataeast/exprraid_v.cpp +++ /dev/null @@ -1,131 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ernesto Corvi -#include "emu.h" -#include "exprraid.h" - - -void exprraid_state::exprraid_videoram_w(offs_t offset, uint8_t data) -{ - m_videoram[offset] = data; - m_fg_tilemap->mark_tile_dirty(offset); -} - -void exprraid_state::exprraid_colorram_w(offs_t offset, uint8_t data) -{ - m_colorram[offset] = data; - m_fg_tilemap->mark_tile_dirty(offset); -} - -void exprraid_state::exprraid_flipscreen_w(uint8_t data) -{ - flip_screen_set(data & 0x01); -} - -void exprraid_state::exprraid_bgselect_w(offs_t offset, uint8_t data) -{ - if (m_bg_index[offset] != data) - { - m_bg_index[offset] = data; - m_bg_tilemap->mark_all_dirty(); - } -} - -void exprraid_state::exprraid_scrollx_w(offs_t offset, uint8_t data) -{ - m_bg_tilemap->set_scrollx(offset, data); -} - -void exprraid_state::exprraid_scrolly_w(offs_t offset, uint8_t data) -{ - m_bg_tilemap->set_scrolly(0, data); -} - -TILE_GET_INFO_MEMBER(exprraid_state::get_bg_tile_info) -{ - uint8_t *tilerom = memregion("gfx4")->base(); - - int data, attr, bank, code, color, flags; - int quadrant = 0, offs; - - int sx = tile_index % 32; - int sy = tile_index / 32; - - if (sx >= 16) quadrant++; - if (sy >= 16) quadrant += 2; - - offs = (sy % 16) * 16 + (sx % 16) + (m_bg_index[quadrant] & 0x3f) * 0x100; - - data = tilerom[offs]; - attr = tilerom[offs + 0x4000]; - bank = (2 * (attr & 0x03) + ((data & 0x80) >> 7)) + 2; - code = data & 0x7f; - color = (attr & 0x18) >> 3; - flags = (attr & 0x04) ? TILE_FLIPX : 0; - - tileinfo.category = ((attr & 0x80) ? 1 : 0); - - tileinfo.set(bank, code, color, flags); -} - -TILE_GET_INFO_MEMBER(exprraid_state::get_fg_tile_info) -{ - int attr = m_colorram[tile_index]; - int code = m_videoram[tile_index] + ((attr & 0x07) << 8); - int color = (attr & 0x10) >> 4; - - tileinfo.set(0, code, color, 0); -} - -void exprraid_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exprraid_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exprraid_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - - m_bg_tilemap->set_scroll_rows(2); - m_fg_tilemap->set_transparent_pen(0); -} - -void exprraid_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) -{ - for (int offs = 0; offs < m_spriteram.bytes(); offs += 4) - { - int attr = m_spriteram[offs + 1]; - int code = m_spriteram[offs + 3] + ((attr & 0xe0) << 3); - int color = (attr & 0x03) + ((attr & 0x08) >> 1); - int flipx = (attr & 0x04); - int flipy = 0; - int sx = ((248 - m_spriteram[offs + 2]) & 0xff) - 8; - int sy = m_spriteram[offs]; - - if (flip_screen()) - { - sx = 240 - sx; - sy = 240 - sy; - flipx = !flipx; - flipy = !flipy; - } - - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - code, color, - flipx, flipy, - sx, sy, 0); - - // double height - if (attr & 0x10) - { - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - code + 1, color, - flipx, flipy, - sx, sy + (flip_screen() ? -16 : 16), 0); - } - } -} - -uint32_t exprraid_state::screen_update_exprraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - draw_sprites(bitmap, cliprect); - m_bg_tilemap->draw(screen, bitmap, cliprect, 1, 0); - m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - return 0; -} -- cgit v1.2.3