diff options
Diffstat (limited to 'src/mame/drivers/1942.cpp')
-rw-r--r-- | src/mame/drivers/1942.cpp | 939 |
1 files changed, 0 insertions, 939 deletions
diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp deleted file mode 100644 index ee44a0caaf0..00000000000 --- a/src/mame/drivers/1942.cpp +++ /dev/null @@ -1,939 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Paul Leaman, Couriersud -/*************************************************************************** - -1942 - -driver by Paul Leaman - - -MAIN CPU: - -0000-bfff ROM (8000-bfff banked) -cc00-cc7f Sprites -d000-d3ff Video RAM -d400-d7ff Color RAM -d800-dbff Background RAM (groups of 32 bytes, 16 code, 16 color/attribute) -e000-efff RAM - -read: -c000 IN0 -c001 IN1 -c002 IN2 -c003 DSW0 -c004 DSW1 - -write: -c800 command for the audio CPU -c802-c803 background scroll -c804 bit 7: flip screen - bit 4: cpu B reset - bit 0: coin counter -c805 background palette bank selector -c806 bit 0-1 ROM bank selector 00=1-N5.BIN - 01=1-N6.BIN - 10=1-N7.BIN - - - -SOUND CPU: - -0000-3fff ROM -4000-47ff RAM -6000 command from the main CPU -8000 8910 #1 control -8001 8910 #1 write -c000 8910 #2 control -c001 8910 #2 write - - - -Game runs in interrupt mode 0 (the devices supply the interrupt number). - -Two interrupts must be triggered per refresh for the game to function -correctly. - -0x10 is the video retrace. This controls the speed of the game and generally - drives the code. This must be triggered for each video retrace. -0x08 is the sound card service interrupt. The game uses this to throw sounds - at the sound CPU. - - -***************************************************************************/ - -#include "emu.h" -#include "includes/1942.h" - -#include "cpu/z80/z80.h" -#include "sound/ay8910.h" -#include "machine/netlist.h" -#include "speaker.h" - -#include "audio/nl_1942.h" - -namespace { - -/* 12mhz OSC */ -constexpr XTAL MASTER_CLOCK(12_MHz_XTAL); -constexpr XTAL MAIN_CPU_CLOCK(MASTER_CLOCK/3); -constexpr XTAL SOUND_CPU_CLOCK(MASTER_CLOCK/4); -constexpr XTAL AUDIO_CLOCK(MASTER_CLOCK/8); -/* 20mhz OSC - both Z80s are 4 MHz */ -constexpr XTAL MASTER_CLOCK_1942P(20_MHz_XTAL); -constexpr XTAL MAIN_CPU_CLOCK_1942P(MASTER_CLOCK_1942P/5); -constexpr XTAL SOUND_CPU_CLOCK_1942P(MASTER_CLOCK_1942P/5); -constexpr XTAL AUDIO_CLOCK_1942P(MASTER_CLOCK_1942P/16); - -} // anonymous namespace - -void _1942_state::_1942_bankswitch_w(uint8_t data) -{ - membank("bank1")->set_entry(data & 0x03); -} - -TIMER_DEVICE_CALLBACK_MEMBER(_1942_state::_1942_scanline) -{ - int scanline = param; - - if (scanline == 0x2c) // audio irq point 1 - m_audiocpu->set_input_line(0, HOLD_LINE); - - if (scanline == 0x6d) // periodic irq (writes to the soundlatch and drives freeze dip-switch), + audio irq point 2 - { - m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); /* Z80 - RST 08h */ - m_audiocpu->set_input_line(0, HOLD_LINE); - } - - if (scanline == 0xaf) // audio irq point 3 - m_audiocpu->set_input_line(0, HOLD_LINE); - - if (scanline == 0xf0) // vblank-out irq, audio irq point 4 - { - m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* Z80 - RST 10h - vblank */ - m_audiocpu->set_input_line(0, HOLD_LINE); - } -} - - - - -void _1942_state::_1942_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("bank1"); - map(0xc000, 0xc000).portr("SYSTEM"); - map(0xc001, 0xc001).portr("P1"); - map(0xc002, 0xc002).portr("P2"); - map(0xc003, 0xc003).portr("DSWA"); - map(0xc004, 0xc004).portr("DSWB"); - map(0xc800, 0xc800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0xc802, 0xc803).w(FUNC(_1942_state::_1942_scroll_w)); - map(0xc804, 0xc804).w(FUNC(_1942_state::_1942_c804_w)); - map(0xc805, 0xc805).w(FUNC(_1942_state::_1942_palette_bank_w)); - map(0xc806, 0xc806).w(FUNC(_1942_state::_1942_bankswitch_w)); - map(0xcc00, 0xcc7f).ram().share("spriteram"); - map(0xd000, 0xd7ff).ram().w(FUNC(_1942_state::_1942_fgvideoram_w)).share("fg_videoram"); - map(0xd800, 0xdbff).ram().w(FUNC(_1942_state::_1942_bgvideoram_w)).share("bg_videoram"); - map(0xe000, 0xefff).ram(); -} - -void _1942p_state::_1942p_f600_w(uint8_t data) -{ -// printf("_1942p_f600_w %02x\n", data); -} - -void _1942p_state::_1942p_palette_w(offs_t offset, uint8_t data) -{ - m_protopal[offset] = data; - - int r = (data & 0x07) >> 0; - int g = (data & 0x38) >> 3; - int b = (data & 0xc0) >> 6; - - m_palette->set_indirect_color(offset, rgb_t(r<<5,g<<5,b<<6)); -} - -void _1942p_state::_1942p_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("bank1"); - - map(0xd000, 0xd7ff).ram().w(FUNC(_1942p_state::_1942_fgvideoram_w)).share("fg_videoram"); - map(0xd800, 0xdbff).ram().w(FUNC(_1942p_state::_1942_bgvideoram_w)).share("bg_videoram"); - - map(0xe000, 0xefff).ram(); - - map(0xce00, 0xcfff).ram().share("spriteram"); - - map(0xdc02, 0xdc03).w(FUNC(_1942p_state::_1942_scroll_w)); - map(0xc804, 0xc804).w(FUNC(_1942p_state::_1942_c804_w)); - map(0xc805, 0xc805).w(FUNC(_1942p_state::_1942_palette_bank_w)); - - map(0xf000, 0xf3ff).ram().w(FUNC(_1942p_state::_1942p_palette_w)).share("protopal"); - - map(0xf400, 0xf400).w(FUNC(_1942p_state::_1942_bankswitch_w)); - map(0xf500, 0xf500).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0xf600, 0xf600).w(FUNC(_1942p_state::_1942p_f600_w)); - - map(0xf700, 0xf700).portr("DSWA"); - map(0xf701, 0xf701).portr("SYSTEM"); - map(0xf702, 0xf702).portr("DSWB"); - map(0xf703, 0xf703).portr("P1"); - map(0xf704, 0xf704).portr("P2"); -} - - -void _1942p_state::_1942p_sound_map(address_map &map) -{ - map(0x0000, 0x3fff).rom(); - map(0x4000, 0x47ff).ram(); - map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); -} - -void _1942p_state::_1942p_sound_io(address_map &map) -{ - map.global_mask(0xff); - map(0x0000, 0x0000).nopw(); - map(0x0014, 0x0015).w("ay1", FUNC(ay8910_device::address_data_w)); - map(0x0018, 0x0019).w("ay2", FUNC(ay8910_device::address_data_w)); -} - - - -void _1942_state::sound_map(address_map &map) -{ - map(0x0000, 0x3fff).rom(); - map(0x4000, 0x47ff).ram(); - map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); - map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); - map(0xc000, 0xc001).w("ay2", FUNC(ay8910_device::address_data_w)); -} - - -static INPUT_PORTS_START( 1942 ) - PORT_START("SYSTEM") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("P1") - 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_DOWN ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("P2") - 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_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:8,7,6") - PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SWA:5") - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWA:4,3") - PORT_DIPSETTING( 0x30, "20K 80K 80K+" ) - PORT_DIPSETTING( 0x20, "20K 100K 100K+" ) - PORT_DIPSETTING( 0x10, "30K 80K 80K+" ) - PORT_DIPSETTING( 0x00, "30K 100K 100K+" ) - PORT_DIPNAME( 0xc0, 0x40, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWA:2,1") - PORT_DIPSETTING( 0x80, "1" ) - PORT_DIPSETTING( 0x40, "2" ) - PORT_DIPSETTING( 0xc0, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - - PORT_START("DSWB") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWB:8,7,6") - PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_SERVICE_DIPLOC(0x08, IP_ACTIVE_LOW, "SWB:5" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SWB:4") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SWB:3,2") - PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x60, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Very_Difficult ) ) - PORT_DIPNAME( 0x80, 0x80, "Screen Stop" ) PORT_DIPLOCATION("SWB:1") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - - -static INPUT_PORTS_START( 1942p ) - PORT_START("SYSTEM") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - - - PORT_START("P1") - 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_DOWN ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) - - PORT_START("P2") - PORT_DIPNAME( 0x0001, 0x0001, "B" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - - PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:8,7,6") - PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SWA:5") - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWA:4,3") - PORT_DIPSETTING( 0x30, "20K 80K 80K+" ) - PORT_DIPSETTING( 0x20, "20K 100K 100K+" ) - PORT_DIPSETTING( 0x10, "30K 80K 80K+" ) - PORT_DIPSETTING( 0x00, "30K 100K 100K+" ) - PORT_DIPNAME( 0xc0, 0x40, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWA:2,1") - PORT_DIPSETTING( 0x80, "1" ) - PORT_DIPSETTING( 0x40, "2" ) - PORT_DIPSETTING( 0xc0, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - - PORT_START("DSWB") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWB:8,7,6") - PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_SERVICE_DIPLOC(0x08, IP_ACTIVE_LOW, "SWB:5" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SWB:4") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SWB:3,2") - PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x60, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Very_Difficult ) ) - PORT_DIPNAME( 0x80, 0x80, "Screen Stop" ) PORT_DIPLOCATION("SWB:1") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,1), - 2, - { 4, 0 }, - { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, - 16*8 -}; - -static const gfx_layout tilelayout = -{ - 16,16, - RGN_FRAC(1,3), - 3, - { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, - { 0, 1, 2, 3, 4, 5, 6, 7, - 16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+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 -}; - -static const gfx_layout spritelayout = -{ - 16,16, - RGN_FRAC(1,2), - 4, - { RGN_FRAC(1,2)+4, RGN_FRAC(1,2)+0, 4, 0 }, - { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3, - 16*16+0, 16*16+1, 16*16+2, 16*16+3, 16*16+8+0, 16*16+8+1, 16*16+8+2, 16*16+8+3 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, - 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 }, - 64*8 -}; - -static GFXDECODE_START( gfx_1942 ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 ) - GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 64*4, 4*32 ) - GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 64*4+4*32*8, 16 ) -GFXDECODE_END - - -static const gfx_layout charlayout_p = -{ - 8,8, - RGN_FRAC(1,1), - 2, - { 0, 4 }, - { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, - 16*8 -}; - -static const gfx_layout tilelayout_p = -{ - 16,16, - RGN_FRAC(1,12), - 3, - { RGN_FRAC(1,3), RGN_FRAC(2,3), RGN_FRAC(0,3) }, - { 0, 1, 2, 3, 4, 5, 6, 7, - 0x2000*8, 0x2000*8 +1, 0x2000*8 +2, 0x2000*8 +3, 0x2000*8 +4, 0x2000*8 +5, 0x2000*8 + 6, 0x2000*8 +7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 0x1000*8 + 0*8, 0x1000*8 + 1*8, 0x1000*8 + 2*8, 0x1000*8 + 3*8, 0x1000*8 + 4*8, 0x1000*8 + 5*8, 0x1000*8 + 6*8, 0x1000*8 + 7*8 }, - 8*8 -}; - -static const gfx_layout spritelayout_p = -{ - 16,16, - RGN_FRAC(1,4), - 4, - { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, - { 0, 1, 2, 3, 4, 5, 6, 7, - 8*16+0, 8*16+1, 8*16+2, 8*16+3, 8*16+4, 8*16+5, 8*16+6, 8*16+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 -}; - -static GFXDECODE_START( gfx_1942p ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout_p, 0x000, 64 ) - GFXDECODE_ENTRY( "gfx2", 0, tilelayout_p, 0x300, 32 ) - GFXDECODE_ENTRY( "gfx3", 0, spritelayout_p, 0x400, 16 ) -GFXDECODE_END - - - -void _1942_state::machine_start() -{ - save_item(NAME(m_palette_bank)); - save_item(NAME(m_scroll)); -} - -void _1942_state::machine_reset() -{ - m_palette_bank = 0; - m_scroll[0] = 0; - m_scroll[1] = 0; -} - -void _1942_state::_1942(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, MAIN_CPU_CLOCK); /* 4 MHz ??? */ - m_maincpu->set_addrmap(AS_PROGRAM, &_1942_state::_1942_map); - - TIMER(config, "scantimer").configure_scanline(FUNC(_1942_state::_1942_scanline), "screen", 0, 1); - - Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 3 MHz ??? */ - m_audiocpu->set_addrmap(AS_PROGRAM, &_1942_state::sound_map); - - /* video hardware */ - GFXDECODE(config, m_gfxdecode, m_palette, gfx_1942); - - PALETTE(config, m_palette, FUNC(_1942_state::_1942_palette), 64*4+4*32*8+16*16, 256); - - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(32*8, 32*8); - m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); - m_screen->set_screen_update(FUNC(_1942_state::screen_update)); - m_screen->set_palette(m_palette); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - - GENERIC_LATCH_8(config, m_soundlatch); - - ay8910_device &ay1(AY8910(config, "ay1", AUDIO_CLOCK)); /* 1.5 MHz */ - ay1.set_flags(AY8910_RESISTOR_OUTPUT); - ay1.set_resistors_load(10000.0, 10000.0, 10000.0); - ay1.add_route(0, "snd_nl", 1.0, 0); - ay1.add_route(1, "snd_nl", 1.0, 1); - ay1.add_route(2, "snd_nl", 1.0, 2); - - ay8910_device &ay2(AY8910(config, "ay2", AUDIO_CLOCK)); /* 1.5 MHz */ - ay2.set_flags(AY8910_RESISTOR_OUTPUT); - ay2.set_resistors_load(10000.0, 10000.0, 10000.0); - ay2.add_route(0, "snd_nl", 1.0, 3); - ay2.add_route(1, "snd_nl", 1.0, 4); - ay2.add_route(2, "snd_nl", 1.0, 5); - - /* NETLIST configuration using internal AY8910 resistor values */ - - /* Minimize resampling between ay8910 and netlist */ - NETLIST_SOUND(config, "snd_nl", AUDIO_CLOCK / 8 / 2) - .set_source(NETLIST_NAME(1942)) - .add_route(ALL_OUTPUTS, "mono", 5.0); - NETLIST_STREAM_INPUT(config, "snd_nl:cin0", 0, "R_AY1_1.R"); - NETLIST_STREAM_INPUT(config, "snd_nl:cin1", 1, "R_AY1_2.R"); - NETLIST_STREAM_INPUT(config, "snd_nl:cin2", 2, "R_AY1_3.R"); - NETLIST_STREAM_INPUT(config, "snd_nl:cin3", 3, "R_AY2_1.R"); - NETLIST_STREAM_INPUT(config, "snd_nl:cin4", 4, "R_AY2_2.R"); - NETLIST_STREAM_INPUT(config, "snd_nl:cin5", 5, "R_AY2_3.R"); - - NETLIST_STREAM_OUTPUT(config, "snd_nl:cout0", 0, "R1.1").set_mult_offset(70000.0 / 32768.0, 0.0); - //NETLIST_STREAM_OUTPUT(config, "snd_nl:cout0", 0, "VR.2"); -} - - -void _1942p_state::_1942p(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, MAIN_CPU_CLOCK_1942P); /* 4 MHz - verified on PCB */ - m_maincpu->set_addrmap(AS_PROGRAM, &_1942p_state::_1942p_map); - m_maincpu->set_vblank_int("screen", FUNC(_1942p_state::irq0_line_hold)); // note, powerups won't move down the screen with the original '1942' logic. - - Z80(config, m_audiocpu, SOUND_CPU_CLOCK_1942P); /* 4 MHz - verified on PCB */ - m_audiocpu->set_addrmap(AS_PROGRAM, &_1942p_state::_1942p_sound_map); - m_audiocpu->set_addrmap(AS_IO, &_1942p_state::_1942p_sound_io); - m_audiocpu->set_periodic_int(FUNC(_1942p_state::irq0_line_hold), attotime::from_hz(4*60)); - - - /* video hardware */ - GFXDECODE(config, m_gfxdecode, m_palette, gfx_1942p); - - PALETTE(config, m_palette, FUNC(_1942p_state::_1942p_palette), 0x500, 0x400); - - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(32*8, 32*8); - m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); - m_screen->set_screen_update(FUNC(_1942p_state::screen_update)); - m_screen->set_palette(m_palette); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - - GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); - - AY8910(config, "ay1", AUDIO_CLOCK_1942P).add_route(ALL_OUTPUTS, "mono", 0.25); // 1.25 MHz - verified on PCB - AY8910(config, "ay2", AUDIO_CLOCK_1942P).add_route(ALL_OUTPUTS, "mono", 0.25); // 1.25 MHz - verified on PCB -} - - -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ - -ROM_START( 1942 ) - ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "srb-03.m3", 0x00000, 0x4000, CRC(d9dafcc3) SHA1(a089a9bc55fb7d6d0ac53f91b258396d5d62677a) ) - ROM_LOAD( "srb-04.m4", 0x04000, 0x4000, CRC(da0cf924) SHA1(856fbb302c9a4ec7850a26ab23dab8467f79bba4) ) - ROM_LOAD( "srb-05.m5", 0x10000, 0x4000, CRC(d102911c) SHA1(35ba1d82bd901940f61d8619273463d02fc0a952) ) - ROM_LOAD( "srb-06.m6", 0x14000, 0x2000, CRC(466f8248) SHA1(2ccc8fc59962d3001fbc10e8d2f20a254a74f251) ) - ROM_LOAD( "srb-07.m7", 0x18000, 0x4000, CRC(0d31038c) SHA1(b588eaf6fddd66ecb2d9832dc197f286f1ccd846) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "sr-02.f2", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ - - ROM_REGION( 0xc000, "gfx2", 0 ) - ROM_LOAD( "sr-08.a1", 0x0000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) ) /* tiles */ - ROM_LOAD( "sr-09.a2", 0x2000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) ) - ROM_LOAD( "sr-10.a3", 0x4000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) ) - ROM_LOAD( "sr-11.a4", 0x6000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) ) - ROM_LOAD( "sr-12.a5", 0x8000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) ) - ROM_LOAD( "sr-13.a6", 0xa000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "sr-14.l1", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) ) /* sprites */ - ROM_LOAD( "sr-15.l2", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) ) - ROM_LOAD( "sr-16.n1", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) ) - ROM_LOAD( "sr-17.n2", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) ) - - ROM_REGION( 0x0300, "palproms", 0 ) - ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) ) /* red component */ - ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) ) /* green component */ - ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) ) /* blue component */ - - ROM_REGION( 0x0100, "charprom", 0 ) - ROM_LOAD( "sb-0.f1", 0x0000, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) ) /* char lookup table */ - - ROM_REGION( 0x0100, "tileprom", 0 ) - ROM_LOAD( "sb-4.d6", 0x0000, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) ) /* tile lookup table */ - - ROM_REGION( 0x0100, "sprprom", 0 ) - ROM_LOAD( "sb-8.k3", 0x0000, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) /* sprite lookup table */ - - ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "sb-2.d1", 0x0000, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-3.d2", 0x0100, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-1.k6", 0x0200, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */ - ROM_LOAD( "sb-9.m11", 0x0300, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) /* video timing? (not used) */ -ROM_END - -ROM_START( 1942a ) - ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "sra-03.m3", 0x00000, 0x4000, CRC(40201bab) SHA1(4886c07a4602223c21419118e10aadce9c99fa5a) ) - ROM_LOAD( "sr-04.m4", 0x04000, 0x4000, CRC(a60ac644) SHA1(f37862db3cf5e6cc9ab3276f3bc45fd629fd70dd) ) - ROM_LOAD( "sr-05.m5", 0x10000, 0x4000, CRC(835f7b24) SHA1(24b66827f08c43fbf5b9517d638acdfc38e1b1e7) ) - ROM_LOAD( "sr-06.m6", 0x14000, 0x2000, CRC(821c6481) SHA1(06becb6bf8b4bde3a458098498eecad566a87711) ) - ROM_LOAD( "sr-07.m7", 0x18000, 0x4000, CRC(5df525e1) SHA1(70cd2910e2945db76bd6ebfa0ff09a5efadc2d0b) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "sr-02.f2", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ - - ROM_REGION( 0xc000, "gfx2", 0 ) - ROM_LOAD( "sr-08.a1", 0x0000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) ) /* tiles */ - ROM_LOAD( "sr-09.a2", 0x2000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) ) - ROM_LOAD( "sr-10.a3", 0x4000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) ) - ROM_LOAD( "sr-11.a4", 0x6000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) ) - ROM_LOAD( "sr-12.a5", 0x8000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) ) - ROM_LOAD( "sr-13.a6", 0xa000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "sr-14.l1", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) ) /* sprites */ - ROM_LOAD( "sr-15.l2", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) ) - ROM_LOAD( "sr-16.n1", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) ) - ROM_LOAD( "sr-17.n2", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) ) - - ROM_REGION( 0x0300, "palproms", 0 ) - ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) ) /* red component */ - ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) ) /* green component */ - ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) ) /* blue component */ - - ROM_REGION( 0x0100, "charprom", 0 ) - ROM_LOAD( "sb-0.f1", 0x0000, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) ) /* char lookup table */ - - ROM_REGION( 0x0100, "tileprom", 0 ) - ROM_LOAD( "sb-4.d6", 0x0000, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) ) /* tile lookup table */ - - ROM_REGION( 0x0100, "sprprom", 0 ) - ROM_LOAD( "sb-8.k3", 0x0000, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) /* sprite lookup table */ - - ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "sb-2.d1", 0x0000, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-3.d2", 0x0100, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-1.k6", 0x0200, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */ - ROM_LOAD( "sb-9.m11", 0x0300, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) /* video timing? (not used) */ -ROM_END - -/* this is the same as the 1942a set, but with a different rom arrangement (larger roms), it appears to be a common bootleg */ -ROM_START( 1942abl ) - ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "3.bin", 0x00000, 0x8000, CRC(f3184f5a) SHA1(a566c344ee1f63580d41aca95ece9ad1f7a135d2) ) - ROM_LOAD( "5.bin", 0x10000, 0x4000, CRC(835f7b24) SHA1(24b66827f08c43fbf5b9517d638acdfc38e1b1e7) ) - ROM_LOAD( "7.bin", 0x14000, 0x8000, CRC(2f456c6e) SHA1(b728c72f97ccdb57a4aac53ef7ca3f4516fc2ecb) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "1.bin", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "2.bin", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ - - ROM_REGION( 0xc000, "gfx2", 0 ) - ROM_LOAD( "9.bin", 0x0000, 0x4000, CRC(60329fa4) SHA1(8f66c283c992a6bc676f5f0f739b7e9d07bbf9ee) ) /* tiles */ - ROM_LOAD( "11.bin", 0x4000, 0x4000, CRC(66bac116) SHA1(ce21a693ad8d7592d21e05d0cb9eabb36e7e8fef) ) - ROM_LOAD( "13.bin", 0x8000, 0x4000, CRC(623fcec1) SHA1(b3eea37d705e3871dc94e4cf6f2aacc6fbd09216) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "14.bin", 0x04000, 0x4000, CRC(df2345ef) SHA1(3776edebda7bc9c72117f4b764f3bdaec0a632b4) ) /* sprites */ - ROM_CONTINUE(0x0000,0x4000) - ROM_LOAD( "16.bin", 0x0c000, 0x4000, CRC(c106b1ed) SHA1(a16520752fb02e403c93975ecf12b75854d58d69) ) - ROM_CONTINUE(0x8000,0x4000) - - // proms not in the set, assumed to be the same - ROM_REGION( 0x0300, "palproms", 0 ) - ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) ) /* red component */ - ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) ) /* green component */ - ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) ) /* blue component */ - - ROM_REGION( 0x0100, "charprom", 0 ) - ROM_LOAD( "sb-0.f1", 0x0000, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) ) /* char lookup table */ - - ROM_REGION( 0x0100, "tileprom", 0 ) - ROM_LOAD( "sb-4.d6", 0x0000, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) ) /* tile lookup table */ - - ROM_REGION( 0x0100, "sprprom", 0 ) - ROM_LOAD( "sb-8.k3", 0x0000, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) /* sprite lookup table */ - - ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "sb-2.d1", 0x0000, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-3.d2", 0x0100, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-1.k6", 0x0200, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */ - ROM_LOAD( "sb-9.m11", 0x0300, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) /* video timing? (not used) */ -ROM_END - -/* set contained only three program ROMs, other ROMs should be checked against a real PCB */ -ROM_START( 1942h ) - ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "supercharger_1942_@3.m3", 0x00000, 0x4000, CRC(ec70785f) SHA1(2010a945e1d5c984a14cf7f47a883d04bd71567d) ) /* label confirmed from auction post */ - ROM_LOAD( "supercharger_1942_@4.m4", 0x04000, 0x4000, CRC(cc11355f) SHA1(44fceb449f406f657494eeee4e6b43bf063f2013) ) /* label confirmed from auction post */ - ROM_LOAD( "supercharger_1942_@5.m5", 0x10000, 0x4000, CRC(42746d75) SHA1(ede6919b84653b94fddeb40b3004e44336880ba2) ) /* label confirmed from auction post */ - ROM_LOAD( "srb-06.m6", 0x14000, 0x2000, CRC(466f8248) SHA1(2ccc8fc59962d3001fbc10e8d2f20a254a74f251) ) - ROM_LOAD( "srb-07.m7", 0x18000, 0x4000, CRC(0d31038c) SHA1(b588eaf6fddd66ecb2d9832dc197f286f1ccd846) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "sr-02.f2", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ - - ROM_REGION( 0xc000, "gfx2", 0 ) - ROM_LOAD( "sr-08.a1", 0x0000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) ) /* tiles */ - ROM_LOAD( "sr-09.a2", 0x2000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) ) - ROM_LOAD( "sr-10.a3", 0x4000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) ) - ROM_LOAD( "sr-11.a4", 0x6000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) ) - ROM_LOAD( "sr-12.a5", 0x8000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) ) - ROM_LOAD( "sr-13.a6", 0xa000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "sr-14.l1", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) ) /* sprites */ - ROM_LOAD( "sr-15.l2", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) ) - ROM_LOAD( "sr-16.n1", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) ) - ROM_LOAD( "sr-17.n2", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) ) - - ROM_REGION( 0x0300, "palproms", 0 ) - ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) ) /* red component */ - ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) ) /* green component */ - ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) ) /* blue component */ - - ROM_REGION( 0x0100, "charprom", 0 ) - ROM_LOAD( "sb-0.f1", 0x0000, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) ) /* char lookup table */ - - ROM_REGION( 0x0100, "tileprom", 0 ) - ROM_LOAD( "sb-4.d6", 0x0000, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) ) /* tile lookup table */ - - ROM_REGION( 0x0100, "sprprom", 0 ) - ROM_LOAD( "sb-8.k3", 0x0000, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) /* sprite lookup table */ - - ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "sb-2.d1", 0x0000, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-3.d2", 0x0100, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-1.k6", 0x0200, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */ - ROM_LOAD( "sb-9.m11", 0x0300, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) /* video timing? (not used) */ -ROM_END - -ROM_START( 1942b ) - ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "sr-03.m3", 0x00000, 0x4000, CRC(612975f2) SHA1(f3744335862dd4c53925cc32792badd4a378c837) ) - ROM_LOAD( "sr-04.m4", 0x04000, 0x4000, CRC(a60ac644) SHA1(f37862db3cf5e6cc9ab3276f3bc45fd629fd70dd) ) - ROM_LOAD( "sr-05.m5", 0x10000, 0x4000, CRC(835f7b24) SHA1(24b66827f08c43fbf5b9517d638acdfc38e1b1e7) ) - ROM_LOAD( "sr-06.m6", 0x14000, 0x2000, CRC(821c6481) SHA1(06becb6bf8b4bde3a458098498eecad566a87711) ) - ROM_LOAD( "sr-07.m7", 0x18000, 0x4000, CRC(5df525e1) SHA1(70cd2910e2945db76bd6ebfa0ff09a5efadc2d0b) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "sr-02.f2", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ - - ROM_REGION( 0xc000, "gfx2", 0 ) - ROM_LOAD( "sr-08.a1", 0x0000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) ) /* tiles */ - ROM_LOAD( "sr-09.a2", 0x2000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) ) - ROM_LOAD( "sr-10.a3", 0x4000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) ) - ROM_LOAD( "sr-11.a4", 0x6000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) ) - ROM_LOAD( "sr-12.a5", 0x8000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) ) - ROM_LOAD( "sr-13.a6", 0xa000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "sr-14.l1", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) ) /* sprites */ - ROM_LOAD( "sr-15.l2", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) ) - ROM_LOAD( "sr-16.n1", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) ) - ROM_LOAD( "sr-17.n2", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) ) - - ROM_REGION( 0x0300, "palproms", 0 ) - ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) ) /* red component */ - ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) ) /* green component */ - ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) ) /* blue component */ - - ROM_REGION( 0x0100, "charprom", 0 ) - ROM_LOAD( "sb-0.f1", 0x0000, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) ) /* char lookup table */ - - ROM_REGION( 0x0100, "tileprom", 0 ) - ROM_LOAD( "sb-4.d6", 0x0000, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) ) /* tile lookup table */ - - ROM_REGION( 0x0100, "sprprom", 0 ) - ROM_LOAD( "sb-8.k3", 0x0000, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) /* sprite lookup table */ - - ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "sb-2.d1", 0x0000, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-3.d2", 0x0100, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-1.k6", 0x0200, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */ - ROM_LOAD( "sb-9.m11", 0x0300, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) /* video timing? (not used) */ -ROM_END - -ROM_START( 1942w ) - ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "sw-03.m3", 0x00000, 0x4000, CRC(afd79770) SHA1(74c7a887fe3d4abfce1dcfec4c75b21ab81adc8c) ) - ROM_LOAD( "sw-04.m4", 0x04000, 0x4000, CRC(933d9910) SHA1(9c73ef880f56e30a865be959f8bbdbe79c7ef8e2) ) - ROM_LOAD( "sw-05.m5", 0x10000, 0x4000, CRC(e9a71bb6) SHA1(1f0d52c9282d15f9e4898b3b144ece25d345b71f) ) - ROM_LOAD( "sw-06.m6", 0x14000, 0x2000, CRC(466f8248) SHA1(2ccc8fc59962d3001fbc10e8d2f20a254a74f251) ) /* matches srb-06.m6 from 1942 (Revision B) */ - ROM_LOAD( "sw-07.m7", 0x18000, 0x4000, CRC(ec41655e) SHA1(dbe4bb11f2e88574cb43ba5cd216354c3b7f69a6) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "sw-02.f2", 0x0000, 0x2000, CRC(f8e9ada2) SHA1(028f554e70425c53faa30a6fe1c45cc16724560a) ) /* characters */ - - ROM_REGION( 0xc000, "gfx2", 0 ) - ROM_LOAD( "sr-08.a1", 0x0000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) ) /* tiles */ - ROM_LOAD( "sr-09.a2", 0x2000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) ) - ROM_LOAD( "sr-10.a3", 0x4000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) ) - ROM_LOAD( "sr-11.a4", 0x6000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) ) - ROM_LOAD( "sr-12.a5", 0x8000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) ) - ROM_LOAD( "sr-13.a6", 0xa000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "sr-14.l1", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) ) /* sprites */ - ROM_LOAD( "sr-15.l2", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) ) - ROM_LOAD( "sr-16.n1", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) ) - ROM_LOAD( "sr-17.n2", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) ) - - ROM_REGION( 0x0300, "palproms", 0 ) - ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) ) /* red component */ - ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) ) /* green component */ - ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) ) /* blue component */ - - ROM_REGION( 0x0100, "charprom", 0 ) - ROM_LOAD( "sb-0.f1", 0x0000, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) ) /* char lookup table */ - - ROM_REGION( 0x0100, "tileprom", 0 ) - ROM_LOAD( "sb-4.d6", 0x0000, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) ) /* tile lookup table */ - - ROM_REGION( 0x0100, "sprprom", 0 ) - ROM_LOAD( "sb-8.k3", 0x0000, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) /* sprite lookup table */ - - ROM_REGION( 0x0400, "proms", 0 ) - ROM_LOAD( "sb-2.d1", 0x0000, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-3.d2", 0x0100, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) ) /* tile palette selector? (not used) */ - ROM_LOAD( "sb-1.k6", 0x0200, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */ - ROM_LOAD( "sb-9.m11", 0x0300, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) /* video timing? (not used) */ -ROM_END - - - -ROM_START( 1942p ) - ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "1.bin", 0x00000, 0x8000, CRC(d8506aee) SHA1(aebdce3203e7743d70a8465a5e5766f9f47cb33f) ) // sldh - ROM_LOAD( "2.bin", 0x10000, 0x4000, CRC(793a8fbc) SHA1(57f27a2b59cbc7e82e41683ddfd58055350f80bc) ) // sldh - ROM_CONTINUE( 0x18000, 0x4000) - ROM_LOAD( "3.bin", 0x14000, 0x4000, CRC(108fda63) SHA1(6ffdf57a04bcfae9fdb2343f30cff50926188cbf) ) // sldh - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "04.bin", 0x0000, 0x4000, CRC(b4efd1af) SHA1(015b687b1714f892c3b2528bceb2df8ca48b6b8e) ) - - ROM_REGION( 0x2000, "gfx1", ROMREGION_INVERT ) - ROM_LOAD( "8.bin", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ // sldh - - ROM_REGION( 0xc000, "gfx2", ROMREGION_INVERT ) - ROM_LOAD( "5.bin", 0x0000, 0x4000, CRC(1081b88c) SHA1(f3026e72206c96573fd6ba28d15e865b51735004) ) /* tiles */ // sldh - ROM_LOAD( "6.bin", 0x4000, 0x4000, CRC(2d6acd8c) SHA1(914bb971c8f1364d0c44bd11f5f7e8da1f4953bb) ) // sldh - ROM_LOAD( "7.bin", 0x8000, 0x4000, CRC(30f13e78) SHA1(51b9c0dfc53db705b75dd7ce643cec807533af5a) ) // sldh - - ROM_REGION( 0x10000, "gfx3", ROMREGION_INVERT ) - ROM_LOAD( "9.bin", 0x0000, 0x4000, CRC(755a4762) SHA1(b8747e02854a2dd8fa1251e206dbf0a0fc017b38) ) /* tiles */ // sldh - ROM_LOAD( "10.bin", 0x4000, 0x4000, CRC(4a5a9084) SHA1(dcf9834e58324f9c94206728a055083e335bc862) ) // sldh - ROM_LOAD( "11.bin", 0x8000, 0x4000, CRC(d2ce3eb6) SHA1(ebe71bd413b169ff2cea6973faf48527a8283eef) ) // sldh - ROM_LOAD( "12.bin", 0xc000, 0x4000, CRC(aaa86493) SHA1(b0f6c59b5369b565bf863544a26cde2105aa35be) ) // sldh - - ROM_REGION( 0x0100, "proms", 0 ) // only one prom was in the dump - uses paletteram instead of proms - ROM_LOAD( "ic22.bin", 0x0000, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) /* sprite lookup table */ // sldh -ROM_END - - -void _1942_state::driver_init() -{ - uint8_t *ROM = memregion("maincpu")->base(); - membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x4000); -} - - -GAME( 1984, 1942, 0, _1942, 1942, _1942_state, driver_init, ROT270, "Capcom", "1942 (Revision B)", MACHINE_SUPPORTS_SAVE) -GAME( 1984, 1942a, 1942, _1942, 1942, _1942_state, driver_init, ROT270, "Capcom", "1942 (Revision A)", MACHINE_SUPPORTS_SAVE) -GAME( 1984, 1942abl, 1942, _1942, 1942, _1942_state, driver_init, ROT270, "bootleg", "1942 (Revision A, bootleg)", MACHINE_SUPPORTS_SAVE) // data is the same as 1942a set, different rom format -GAME( 1991, 1942h, 1942, _1942, 1942, _1942_state, driver_init, ROT270, "hack (Two Bit Score)", "Supercharger 1942", MACHINE_SUPPORTS_SAVE) -GAME( 1984, 1942b, 1942, _1942, 1942, _1942_state, driver_init, ROT270, "Capcom", "1942 (First Version)", MACHINE_SUPPORTS_SAVE) -GAME( 1985, 1942w, 1942, _1942, 1942, _1942_state, driver_init, ROT270, "Capcom (Williams Electronics license)", "1942 (Williams Electronics license)", MACHINE_SUPPORTS_SAVE) /* Based on 1942 (Revision B) */ -GAME( 1984, 1942p, 1942, _1942p, 1942p, _1942p_state, driver_init, ROT270, "bootleg", "1942 (Tecfri PCB, bootleg?)", MACHINE_SUPPORTS_SAVE ) |