diff options
Diffstat (limited to 'src/mame/drivers/markham.cpp')
-rw-r--r-- | src/mame/drivers/markham.cpp | 824 |
1 files changed, 0 insertions, 824 deletions
diff --git a/src/mame/drivers/markham.cpp b/src/mame/drivers/markham.cpp deleted file mode 100644 index 6bf26f788ad..00000000000 --- a/src/mame/drivers/markham.cpp +++ /dev/null @@ -1,824 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Uki -/***************************************************************************** - - Markham (c) 1983 Sun Electronics - Strength & Skill (c) 1984 Sun Electronics - - Driver by Uki - - TODO: - - needs merging with ikki.cpp - - look up schematics for all games - - hook up actual SUN 8212 and figure out ROM mode communications - - Notes: - Banbam has a Fujitsu MB8841 4-Bit MCU for protection labeled SUN 8212. - Its internal ROM has been imaged, manually typed, and decoded as sun-8212.ic3. - Pettan Pyuu is a clone of Banbam although with different levels / play fields. - - The MCU controls: - - general protection startup - - the time between when enemies spawn - - graphics selection for playfields - -*****************************************************************************/ - -#include "emu.h" -#include "includes/markham.h" - -#define MASTER_CLOCK (20_MHz_XTAL) -#define PIXEL_CLOCK (MASTER_CLOCK/4) // guess -#define CPU_CLOCK (8_MHz_XTAL) - -/* also a guess */ -#define HTOTAL (320) -#define HBEND (8) -#define HBSTART (248) -#define VTOTAL (262) -#define VBEND (16) -#define VBSTART (240) - -READ8_MEMBER(markham_state::markham_e004_r) -{ - return 0; -} - -WRITE8_MEMBER(markham_state::coin_output_w) -{ - machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); - - // plain, flat out weird stuff needed to prevent phantom coins - // likely an activation mechanism to test individual chute behavior? - // this can't be boolean wise, because banbam triggers this three times - if (!m_coin2_lock_cnt) - { - machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); - } - else if (BIT(data, 1)) - { - m_coin2_lock_cnt--; - } -} - -WRITE8_MEMBER(markham_state::flipscreen_w) -{ - if (flip_screen() != (BIT(data, 0))) - { - flip_screen_set(BIT(data, 0)); - machine().tilemap().mark_all_dirty(); - } -} - -/****************************************************************************/ - -READ8_MEMBER(markham_state::strnskil_d800_r) -{ - // bit0: interrupt type?, bit1: CPU2 busack? - return (m_irq_source); -} - -WRITE8_MEMBER(markham_state::strnskil_master_output_w) -{ - m_scroll_ctrl = data >> 5; - - flipscreen_w(space, 0, (data >> 3) & 1); - - // bit 0: master CPU bus request? -} - -TIMER_DEVICE_CALLBACK_MEMBER(markham_state::strnskil_scanline) -{ - int scanline = param; - - // same as Ikki, whereas if non-vblank IRQ isn't in-sync with slave CPU irqs then stage 2/3 lacks any sprite whatsoever. - // TODO: maybe this is just a timer device that dispatches irqs to both CPUs and running at VSync*2. Verify on real HW or schematics. - if (scanline == m_irq_scanline_end || scanline == m_irq_scanline_start) - { - m_maincpu->set_input_line(0, HOLD_LINE); - - m_irq_source = (scanline != m_irq_scanline_end); - } -} - -/****************************************************************************/ - -READ8_MEMBER(markham_state::banbam_protection_r) -{ - const uint8_t *prot_rom = (const uint8_t *)memregion("mcu_rom")->base(); - - const uint8_t init = m_packet_buffer[0] & 0x0f; - uint8_t comm = m_packet_buffer[1] & 0xf0; - uint8_t arg = m_packet_buffer[1] & 0x0f; - - if (m_packet_reset) - { - // returning m_packet_buffer[0] breaks demo - return 0xa5; - } - else if (init == 0x08 || init == 0x05) - { - switch (comm) - { - case 0x30: - // palette/gfx select - arg = prot_rom[0x799 + (arg * 4)]; - break; - case 0x40: - // palette/gfx select - arg = prot_rom[0x7C5 + (arg * 4)]; - break; - case 0x60: - // enemy wave timer trigger - // randomized for now - arg = machine().rand(); - break; - case 0x70: - // ?? - arg++; - break; - case 0xb0: - // ?? - arg = arg + 3; - break; - default: - logerror("unknown command %02x, argument is %02x \n", comm, arg); - arg = 0; - } - arg &= 0x0f; - } - else - { - comm = 0xf0; - arg = 0x0f; - } - return comm | arg; -} - -WRITE8_MEMBER(markham_state::banbam_protection_w) -{ - if (m_packet_write_pos) - { - m_packet_reset = false; - } - else - { - m_packet_reset = true; - } - - m_packet_buffer[m_packet_write_pos] = data; - m_packet_write_pos++; - - if (m_packet_write_pos > 1) - { - m_packet_write_pos = 0; - } - logerror("packet buffer is: %02x %02x, status: %s \n", m_packet_buffer[0], m_packet_buffer[1], m_packet_reset ? "reset" : "active" ); -} - -WRITE8_MEMBER(markham_state::mcu_reset_w) -{ - // clear or assert? - logerror("reset = %02x \n", data); -} - -/****************************************************************************/ - -void markham_state::base_master_map(address_map &map) -{ - map(0x0000, 0x5fff).rom(); - - map(0xc000, 0xc7ff).ram(); - map(0xd000, 0xd7ff).ram().w(FUNC(markham_state::videoram_w)).share("videoram"); -} - -void markham_state::markham_master_map(address_map &map) -{ - base_master_map(map); - - map(0xc800, 0xcfff).ram().share("spriteram"); - map(0xd800, 0xdfff).ram().share("share1"); - - map(0xe000, 0xe000).portr("DSW2"); - map(0xe001, 0xe001).portr("DSW1"); - map(0xe002, 0xe002).portr("P1"); - map(0xe003, 0xe003).portr("P2"); - - map(0xe004, 0xe004).r(FUNC(markham_state::markham_e004_r)); /* from CPU2 busack */ - - map(0xe005, 0xe005).portr("SYSTEM"); - - map(0xe008, 0xe008).w(FUNC(markham_state::coin_output_w)); - map(0xe009, 0xe009).nopw(); /* to CPU2 busreq */ - - map(0xe00c, 0xe00d).writeonly().share("xscroll"); - map(0xe00e, 0xe00e).w(FUNC(markham_state::flipscreen_w)); -} - -void markham_state::strnskil_master_map(address_map &map) -{ - base_master_map(map); - - map(0x6000, 0x9fff).rom(); - - map(0xc800, 0xcfff).ram().share("share1"); - - map(0xd800, 0xd800).r(FUNC(markham_state::strnskil_d800_r)); - map(0xd801, 0xd801).portr("DSW1"); - map(0xd802, 0xd802).portr("DSW2"); - map(0xd803, 0xd803).portr("SYSTEM"); - map(0xd804, 0xd804).portr("P1"); - map(0xd805, 0xd805).portr("P2"); - - map(0xd808, 0xd808).w(FUNC(markham_state::strnskil_master_output_w)); - map(0xd809, 0xd809).w(FUNC(markham_state::coin_output_w)); - map(0xd80a, 0xd80b).writeonly().share("xscroll"); -} - -void markham_state::banbam_master_map(address_map &map) -{ - strnskil_master_map(map); - map(0xd806, 0xd806).r(FUNC(markham_state::banbam_protection_r)); /* mcu data read */ - map(0xd80d, 0xd80d).w(FUNC(markham_state::banbam_protection_w)); /* mcu data write */ - map(0xd80c, 0xd80c).w(FUNC(markham_state::mcu_reset_w)); /* mcu reset? */ -} - -void markham_state::markham_slave_map(address_map &map) -{ - map(0x0000, 0x5fff).rom(); - map(0x8000, 0x87ff).ram().share("share1"); - - map(0xc000, 0xc000).w("sn1", FUNC(sn76496_device::write)); - map(0xc001, 0xc001).w("sn2", FUNC(sn76496_device::write)); - - map(0xc002, 0xc002).nopw(); /* unknown */ - map(0xc003, 0xc003).nopw(); /* unknown */ -} - -void markham_state::strnskil_slave_map(address_map &map) -{ - map(0x0000, 0x5fff).rom(); - map(0xc000, 0xc7ff).ram().share("spriteram"); - map(0xc800, 0xcfff).ram().share("share1"); - - map(0xd801, 0xd801).w("sn1", FUNC(sn76496_device::write)); - map(0xd802, 0xd802).w("sn2", FUNC(sn76496_device::write)); -} - -/****************************************************************************/ - -static INPUT_PORTS_START( markham ) - PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x01, "5" ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:2") - PORT_DIPSETTING( 0x02, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:3") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "Coin Chutes" ) PORT_DIPLOCATION("SW1:4") - PORT_DIPSETTING( 0x00, "Individual" ) - PORT_DIPSETTING( 0x08, "Common" ) - PORT_DIPNAME( 0xf0, 0x00, "Coin1 / Coin2" ) PORT_DIPLOCATION("SW1:5,6,7,8") - PORT_DIPSETTING( 0x00, "1C 1C / 1C 1C" ) - PORT_DIPSETTING( 0x10, "2C 1C / 2C 1C" ) - PORT_DIPSETTING( 0x20, "2C 1C / 1C 3C" ) - PORT_DIPSETTING( 0x30, "1C 1C / 1C 2C" ) - PORT_DIPSETTING( 0x40, "1C 1C / 1C 3C" ) - PORT_DIPSETTING( 0x50, "1C 1C / 1C 4C" ) - PORT_DIPSETTING( 0x60, "1C 1C / 1C 5C" ) - PORT_DIPSETTING( 0x70, "1C 1C / 1C 6C" ) - PORT_DIPSETTING( 0x80, "1C 2C / 1C 2C" ) - PORT_DIPSETTING( 0x90, "1C 2C / 1C 4C" ) - PORT_DIPSETTING( 0xa0, "1C 2C / 1C 5C" ) - PORT_DIPSETTING( 0xb0, "1C 2C / 1C 10C" ) - PORT_DIPSETTING( 0xc0, "1C 2C / 1C 11C" ) - PORT_DIPSETTING( 0xd0, "1C 2C / 1C 12C" ) - PORT_DIPSETTING( 0xe0, "1C 2C / 1C 6C" ) - PORT_DIPSETTING( 0xf0, DEF_STR( Free_Play ) ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:1,2") - PORT_DIPSETTING( 0x00, DEF_STR( None ) ) - PORT_DIPSETTING( 0x01, "20000" ) - PORT_DIPSETTING( 0x02, "20000, Every 50000" ) - PORT_DIPSETTING( 0x03, "20000, Every 80000" ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" ) /* These next five dips are unused according to the manual */ - PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:5" ) - PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" ) - PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" ) - PORT_DIPNAME( 0x80, 0x00, "Freeze" ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - - PORT_START("P1") /* e002 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY - - PORT_START("P2") /* e003 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - - PORT_START("SYSTEM") /* e005 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_SERVICE( 0x10, IP_ACTIVE_HIGH ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) -INPUT_PORTS_END - -static INPUT_PORTS_START( strnskil ) - PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, "Unknown 1-2" ) PORT_DIPLOCATION("SW1:2") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:3") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "Coin Chutes" ) PORT_DIPLOCATION("SW1:4") - PORT_DIPSETTING( 0x00, "Individual" ) - PORT_DIPSETTING( 0x08, "Common" ) - PORT_DIPNAME( 0xf0, 0x00, "Coin1 / Coin2" ) PORT_DIPLOCATION("SW1:5,6,7,8") - PORT_DIPSETTING( 0x00, "1C 1C / 1C 1C" ) - PORT_DIPSETTING( 0x10, "2C 1C / 2C 1C" ) - PORT_DIPSETTING( 0x20, "2C 1C / 1C 3C" ) - PORT_DIPSETTING( 0x30, "1C 1C / 1C 2C" ) - PORT_DIPSETTING( 0x40, "1C 1C / 1C 3C" ) - PORT_DIPSETTING( 0x50, "1C 1C / 1C 4C" ) - PORT_DIPSETTING( 0x60, "1C 1C / 1C 5C" ) - PORT_DIPSETTING( 0x70, "1C 1C / 1C 6C" ) - PORT_DIPSETTING( 0x80, "1C 2C / 1C 2C" ) - PORT_DIPSETTING( 0x90, "1C 2C / 1C 4C" ) - PORT_DIPSETTING( 0xa0, "1C 2C / 1C 5C" ) - PORT_DIPSETTING( 0xb0, "1C 2C / 1C 10C" ) - PORT_DIPSETTING( 0xc0, "1C 2C / 1C 11C" ) - PORT_DIPSETTING( 0xd0, "1C 2C / 1C 12C" ) - PORT_DIPSETTING( 0xe0, "1C 2C / 1C 6C" ) - PORT_DIPSETTING( 0xf0, DEF_STR( Free_Play ) ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1") - PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) - PORT_DIPNAME( 0x02, 0x00, "Unknown 2-2" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, "Unknown 2-3" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "Unknown 2-4" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, "Unknown 2-5" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Unknown 2-6" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, "Unknown 2-7" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, "Freeze" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - - PORT_START("P1") /* d804 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY - - PORT_START("P2") /* d805 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - - PORT_START("SYSTEM") /* d803 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_SERVICE( 0x20, IP_ACTIVE_HIGH ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) -INPUT_PORTS_END - -static INPUT_PORTS_START( banbam ) - PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x01, "5" ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:2") - PORT_DIPSETTING( 0x02, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:3") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME(0x08, 0x00, "Coin Chutes") PORT_DIPLOCATION("SW1:4") - PORT_DIPSETTING( 0x00, "Individual") - PORT_DIPSETTING( 0x08, "Common") - PORT_DIPNAME( 0xf0, 0x00, "Coin1 / Coin2" ) PORT_DIPLOCATION("SW1:5,6,7,8") - PORT_DIPSETTING( 0x00, "1C 1C / 1C 1C" ) - PORT_DIPSETTING( 0x10, "2C 1C / 2C 1C" ) - PORT_DIPSETTING( 0x20, "2C 1C / 1C 3C" ) - PORT_DIPSETTING( 0x30, "1C 1C / 1C 2C" ) - PORT_DIPSETTING( 0x40, "1C 1C / 1C 3C" ) - PORT_DIPSETTING( 0x50, "1C 1C / 1C 4C" ) - PORT_DIPSETTING( 0x60, "1C 1C / 1C 5C" ) - PORT_DIPSETTING( 0x70, "1C 1C / 1C 6C" ) - PORT_DIPSETTING( 0x80, "1C 2C / 1C 2C" ) - PORT_DIPSETTING( 0x90, "1C 2C / 1C 4C" ) - PORT_DIPSETTING( 0xa0, "1C 2C / 1C 5C" ) - PORT_DIPSETTING( 0xb0, "1C 2C / 1C 10C" ) - PORT_DIPSETTING( 0xc0, "1C 2C / 1C 11C" ) - PORT_DIPSETTING( 0xd0, "1C 2C / 1C 12C" ) - PORT_DIPSETTING( 0xe0, "1C 2C / 1C 6C" ) - PORT_DIPSETTING( 0xf0, DEF_STR( Free_Play ) ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x06, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:2,3") - PORT_DIPSETTING( 0x00, "20000 50000" ) - PORT_DIPSETTING( 0x02, "20000 80000" ) - PORT_DIPSETTING( 0x04, "20000" ) - PORT_DIPSETTING( 0x06, DEF_STR( None ) ) - PORT_DIPNAME( 0x08, 0x00, "Second Practice" ) PORT_DIPLOCATION("SW2:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:5" ) /* These four dips are unused according to the manual */ - PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" ) - PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" ) - PORT_DIPNAME( 0x80, 0x00, "Freeze" ) PORT_DIPLOCATION("SW2:8") // game stands in a tight loop at $14-$16 -> $866 if this is putted off - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - - PORT_START("P1") /* d804 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY - - PORT_START("P2") /* d805 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL - - PORT_START("SYSTEM") /* d803 */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_SERVICE( 0x20, IP_ACTIVE_HIGH ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) -INPUT_PORTS_END - -/****************************************************************************/ - -static const gfx_layout charlayout = -{ - 8,8, /* 8*8 characters */ - 1024, /* 1024 characters */ - 3, /* 3 bits per pixel */ - {0,8192*8,8192*8*2}, - {7,6,5,4,3,2,1,0}, - {8*0, 8*1, 8*2, 8*3, 8*4, 8*5, 8*6, 8*7}, - 8*8 -}; - -static const gfx_layout spritelayout = -{ - 16,16, /* 16*16 characters */ - 256, /* 256 characters */ - 3, /* 3 bits per pixel */ - {8192*8*2,8192*8,0}, - {7,6,5,4,3,2,1,0, - 8*16+7,8*16+6,8*16+5,8*16+4,8*16+3,8*16+2,8*16+1,8*16+0}, - {8*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*8*4 -}; - -static GFXDECODE_START( gfx_markham ) - GFXDECODE_ENTRY( "gfx2", 0x0000, charlayout, 512, 64 ) - GFXDECODE_ENTRY( "gfx1", 0x0000, spritelayout, 0, 64 ) -GFXDECODE_END - -void markham_state::machine_start() -{ - save_item(NAME(m_coin2_lock_cnt)); - - /* banbam specific */ - save_item(NAME(m_packet_buffer)); - save_item(NAME(m_packet_reset)); - save_item(NAME(m_packet_write_pos)); -} - -void markham_state::machine_reset() -{ - /* prevent phantom coins again */ - m_coin2_lock_cnt = 3; - - /* banbam specific */ - m_packet_write_pos = 0; - m_packet_reset = true; -} - -void markham_state::markham(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, CPU_CLOCK/2); /* 4.000MHz */ - m_maincpu->set_addrmap(AS_PROGRAM, &markham_state::markham_master_map); - m_maincpu->set_vblank_int("screen", FUNC(markham_state::irq0_line_hold)); - - Z80(config, m_subcpu, CPU_CLOCK/2); /* 4.000MHz */ - m_subcpu->set_addrmap(AS_PROGRAM, &markham_state::markham_slave_map); - m_subcpu->set_vblank_int("screen", FUNC(markham_state::irq0_line_hold)); - - config.set_maximum_quantum(attotime::from_hz(CPU_CLOCK/256)); - - /* video hardware */ - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(markham_state::screen_update_markham)); - m_screen->set_palette(m_palette); - - GFXDECODE(config, m_gfxdecode, m_palette, gfx_markham); - PALETTE(config, m_palette, FUNC(markham_state::markham_palette), 1024, 256); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - - SN76496(config, m_sn[0], CPU_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.75); - - SN76496(config, m_sn[1], CPU_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.75); -} - -void markham_state::strnskil(machine_config &config) -{ - markham(config); - /* basic machine hardware */ - Z80(config.replace(), m_maincpu, CPU_CLOCK/2); /* 4.000MHz */ - m_maincpu->set_addrmap(AS_PROGRAM, &markham_state::strnskil_master_map); - TIMER(config, "scantimer").configure_scanline(FUNC(markham_state::strnskil_scanline), "screen", 0, 1); - - Z80(config.replace(), m_subcpu, CPU_CLOCK/2); /* 4.000MHz */ - m_subcpu->set_addrmap(AS_PROGRAM, &markham_state::strnskil_slave_map); - m_subcpu->set_periodic_int(FUNC(markham_state::irq0_line_hold), attotime::from_hz(2*(PIXEL_CLOCK/HTOTAL/VTOTAL))); - - /* video hardware */ - m_screen->set_screen_update(FUNC(markham_state::screen_update_strnskil)); - - MCFG_VIDEO_START_OVERRIDE(markham_state, strnskil) - - /* sound hardware */ - m_sn[0]->set_clock(CPU_CLOCK/4); -} - -void markham_state::banbam(machine_config &config) -{ - strnskil(config); - m_maincpu->set_addrmap(AS_PROGRAM, &markham_state::banbam_master_map); - - MB8841(config, m_mcu, CPU_CLOCK/2); /* 4.000MHz */ - // m_mcu->read_k().set(FUNC(markham_state::mcu_portk_r)); - // m_mcu->write_o().set(FUNC(markham_state::mcu_port_o_w)); - // m_mcu->write_p().set(FUNC(markham_state::mcu_port_p_w)); - // m_mcu->read_r<0>().set(FUNC(markham_state::mcu_port_r0_r)); - // m_mcu->write_r<0>().set(FUNC(markham_state::mcu_port_r0_w)); - // m_mcu->read_r<1>().set(FUNC(markham_state::mcu_port_r1_r)); - // m_mcu->write_r<1>().set(FUNC(markham_state::mcu_port_r1_w)); - // m_mcu->read_r<2>().set(FUNC(markham_state::mcu_port_r2_r)); - // m_mcu->write_r<2>().set(FUNC(markham_state::mcu_port_r2_w)); - // m_mcu->read_r<3>().set(FUNC(markham_state::mcu_port_r3_r)); - // m_mcu->write_r<3>().set(FUNC(markham_state::mcu_port_r3_w)); - m_mcu->set_disable(); -} - -/****************************************************************************/ - -ROM_START( markham ) - ROM_REGION( 0x10000, "maincpu", 0 ) /* main CPU */ - ROM_LOAD( "tv3.9", 0x0000, 0x2000, CRC(59391637) SHA1(e0cfe49a5591d6a6e64c3277319a19235b0ee6ea) ) - ROM_LOAD( "tvg4.10", 0x2000, 0x2000, CRC(1837bcce) SHA1(50e1ae0a4937f09a3dced48bb12f57cee846487a) ) - ROM_LOAD( "tvg5.11", 0x4000, 0x2000, CRC(651da602) SHA1(9f33d6ea0526af9be8ac9210910ea768da825ee5) ) - - ROM_REGION( 0x10000, "subcpu", 0 ) /* sub CPU */ - ROM_LOAD( "tvg1.5", 0x0000, 0x2000, CRC(c5299766) SHA1(a6c903088ffd6c5ae0ba7ff50c8509a185f88220) ) - ROM_LOAD( "tvg2.6", 0x4000, 0x2000, CRC(b216300a) SHA1(036fafd0277b3422cf491db77748358da1ecfb43) ) - - ROM_REGION( 0x6000, "gfx1", 0 ) /* sprite */ - ROM_LOAD( "tvg6.84", 0x0000, 0x2000, CRC(ab933ae5) SHA1(d2bdbc35d751480ddf8b89b90063510684b00db2) ) - ROM_LOAD( "tvg7.85", 0x2000, 0x2000, CRC(ce8edda7) SHA1(5312754aec20791398de57f08857d4097a7cfc2c) ) - ROM_LOAD( "tvg8.86", 0x4000, 0x2000, CRC(74d1536a) SHA1(ff2efbbe1420282643558a65bfa5fd278cdaf135) ) - - ROM_REGION( 0x6000, "gfx2", 0 ) /* bg */ - ROM_LOAD( "tvg9.87", 0x0000, 0x2000, CRC(42168675) SHA1(d2cce79a05ca7fda9347630fe0045a2d8182025d) ) - ROM_LOAD( "tvg10.88", 0x2000, 0x2000, CRC(fa9feb67) SHA1(669c6e1defc33541c36d4deb9667b67254f53a37) ) - ROM_LOAD( "tvg11.89", 0x4000, 0x2000, CRC(71f3dd49) SHA1(8fecb6b76907c592d545dafeaa47cf765513b3fe) ) - - ROM_REGION( 0x0700, "proms", 0 ) /* color PROMs */ - ROM_LOAD( "14-3.99", 0x0000, 0x0100, CRC(89d09126) SHA1(1f78f3b3ef8c6ba9c00a58ae89837d9a92e5078f) ) /* R */ - ROM_LOAD( "14-4.100", 0x0100, 0x0100, CRC(e1cafe6c) SHA1(8c37c3829bf1b96690fb853a2436f1b5e8d45e8c) ) /* G */ - ROM_LOAD( "14-5.101", 0x0200, 0x0100, CRC(2d444fa6) SHA1(66b64133ca740686bedd33bafd20a3f9f3df97d4) ) /* B */ - ROM_LOAD( "14-1.61", 0x0300, 0x0200, CRC(3ad8306d) SHA1(877f1d58cb8da9098ec71a7c7aec633dbf9e76e6) ) /* sprite */ - ROM_LOAD( "14-2.115", 0x0500, 0x0200, CRC(12a4f1ff) SHA1(375e37d7162053d45da66eee23d66bd432303c1c) ) /* bg */ -ROM_END - -ROM_START( strnskil ) - ROM_REGION( 0x10000, "maincpu", 0 ) /* main CPU */ - ROM_LOAD( "tvg3.7", 0x0000, 0x2000, CRC(31fd793a) SHA1(b86efe8ea60edf414a23fb6abc09db691c085fe9) ) - ROM_CONTINUE( 0x8000, 0x2000 ) - ROM_LOAD( "tvg4.8", 0x2000, 0x2000, CRC(c58315b5) SHA1(2039cd89ef59d05f353f6c367fa851c0f60cdc4a) ) - ROM_LOAD( "tvg5.9", 0x4000, 0x2000, CRC(29e7ded5) SHA1(6eae5988139f22c3ff166192e4fda77db38a79bc) ) - ROM_LOAD( "tvg6.10", 0x6000, 0x2000, CRC(8b126a4b) SHA1(68b617c5dc120c777e152919cba9daeaf3ceac5f) ) - - ROM_REGION( 0x10000, "subcpu", 0 ) /* sub CPU */ - ROM_LOAD( "tvg1.2", 0x0000, 0x2000, CRC(b586b753) SHA1(7c9891fb279b1323c059ffdcf7c009bf971037be) ) - ROM_LOAD( "tvg2.3", 0x2000, 0x2000, CRC(8bd71bb6) SHA1(cc35e1e4cbb893ab04f1b6ceef0a050243e3b462) ) - - ROM_REGION( 0x6000, "gfx1", 0 ) /* sprite */ - ROM_LOAD( "tvg7.90", 0x0000, 0x2000, CRC(ee3bd593) SHA1(398e426e53695cc184d5a2750fd32a1c2c68bf30) ) - ROM_LOAD( "tvg8.92", 0x2000, 0x2000, CRC(1b265360) SHA1(fbc64c504639106c1813bf91bd31bda1ce4c7ffe) ) - ROM_LOAD( "tvg9.94", 0x4000, 0x2000, CRC(776c7ca6) SHA1(23fd1ac15395822b318db4435e48dd4e0e3e61de) ) - - ROM_REGION( 0x6000, "gfx2", 0 ) /* bg */ - ROM_LOAD( "tvg12.102", 0x0000, 0x2000, CRC(68b9d888) SHA1(7a4071fe882c1949979f97a020d7c6e95643ef42) ) - ROM_LOAD( "tvg11.101", 0x2000, 0x2000, CRC(7f2179ff) SHA1(24fab1f4430ae883bc1f477d3df7643e06c67349) ) - ROM_LOAD( "tvg10.100", 0x4000, 0x2000, CRC(321ad963) SHA1(9b50fbf0c3b4ce7ce3c68339b99a2ccadef4646f) ) - - ROM_REGION( 0x0800, "proms", 0 ) /* color PROMs */ - ROM_LOAD( "15-3.prm", 0x0000, 0x0100, CRC(dbcd3bec) SHA1(1baeec277b16c82b67e10da9d4c84cf383ef4a82) ) /* R */ - ROM_LOAD( "15-4.prm", 0x0100, 0x0100, CRC(9eb7b6cf) SHA1(86451e8a510f8cfbc0be7d4e7bb1ee7dfd67f1f4) ) /* G */ - ROM_LOAD( "15-5.prm", 0x0200, 0x0100, CRC(9b30a7f3) SHA1(a0aefc2c8325b95ea227e404583d14622b04a3b9) ) /* B */ - ROM_LOAD( "15-1.prm", 0x0300, 0x0200, CRC(d4f5b3d7) SHA1(9a244c77a752df655ff756e063d56c2c767e37d9) ) /* sprite */ - ROM_LOAD( "15-2.prm", 0x0500, 0x0200, CRC(cdffede9) SHA1(3ecdf91e3f78eb6cdd3a6f58d1a89d448a676c52) ) /* bg */ - - ROM_REGION( 0x0100, "scroll_prom", 0 ) /* scroll control PROM */ - ROM_LOAD( "15-6.prm", 0x0000, 0x0100, CRC(ec4faf5b) SHA1(7ebbf50807d04105ebadec91bded069408e399ba) ) -ROM_END - -ROM_START( guiness ) - ROM_REGION( 0x10000, "maincpu", 0 ) /* main CPU */ - ROM_LOAD( "tvg3.15", 0x0000, 0x2000, CRC(3a605ad8) SHA1(f6e2dd4989fdb68bc55857f5a8f06601416139d5) ) - ROM_CONTINUE( 0x8000, 0x2000 ) - ROM_LOAD( "tvg4.8", 0x2000, 0x2000, CRC(c58315b5) SHA1(2039cd89ef59d05f353f6c367fa851c0f60cdc4a) ) - ROM_LOAD( "tvg5.9", 0x4000, 0x2000, CRC(29e7ded5) SHA1(6eae5988139f22c3ff166192e4fda77db38a79bc) ) - ROM_LOAD( "tvg6.10", 0x6000, 0x2000, CRC(8b126a4b) SHA1(68b617c5dc120c777e152919cba9daeaf3ceac5f) ) - - ROM_REGION( 0x10000, "subcpu", 0 ) /* sub CPU */ - ROM_LOAD( "tvg1.2", 0x0000, 0x2000, CRC(b586b753) SHA1(7c9891fb279b1323c059ffdcf7c009bf971037be) ) - ROM_LOAD( "tvg2.3", 0x2000, 0x2000, CRC(8bd71bb6) SHA1(cc35e1e4cbb893ab04f1b6ceef0a050243e3b462) ) - - ROM_REGION( 0x6000, "gfx1", 0 ) /* sprite */ - ROM_LOAD( "tvg7.90", 0x0000, 0x2000, CRC(ee3bd593) SHA1(398e426e53695cc184d5a2750fd32a1c2c68bf30) ) - ROM_LOAD( "tvg8.92", 0x2000, 0x2000, CRC(1b265360) SHA1(fbc64c504639106c1813bf91bd31bda1ce4c7ffe) ) - ROM_LOAD( "tvg9.94", 0x4000, 0x2000, CRC(776c7ca6) SHA1(23fd1ac15395822b318db4435e48dd4e0e3e61de) ) - - ROM_REGION( 0x6000, "gfx2", 0 ) /* bg */ - ROM_LOAD( "=tvg12.15", 0x0000, 0x2000, CRC(a82c923d) SHA1(2bd2b028d782fac18f2fe9c9ef73ce0af67db347) ) - ROM_LOAD( "tvg11.15", 0x2000, 0x2000, CRC(d432c96f) SHA1(0d4b3af778dbd40bc26bad4c673a9ce1ef537c04) ) - ROM_LOAD( "tvg10.15", 0x4000, 0x2000, CRC(a53959d6) SHA1(cdf7acf1a75d83b259948c482f06543624a695a3) ) - - ROM_REGION( 0x0800, "proms", 0 ) /* color PROMs */ - ROM_LOAD( "15-3.prm", 0x0000, 0x0100, CRC(dbcd3bec) SHA1(1baeec277b16c82b67e10da9d4c84cf383ef4a82) ) /* R */ - ROM_LOAD( "15-4.prm", 0x0100, 0x0100, CRC(9eb7b6cf) SHA1(86451e8a510f8cfbc0be7d4e7bb1ee7dfd67f1f4) ) /* G */ - ROM_LOAD( "15-5.prm", 0x0200, 0x0100, CRC(9b30a7f3) SHA1(a0aefc2c8325b95ea227e404583d14622b04a3b9) ) /* B */ - ROM_LOAD( "15-1.prm", 0x0300, 0x0200, CRC(d4f5b3d7) SHA1(9a244c77a752df655ff756e063d56c2c767e37d9) ) /* sprite */ - ROM_LOAD( "15-2.prm", 0x0500, 0x0200, CRC(cdffede9) SHA1(3ecdf91e3f78eb6cdd3a6f58d1a89d448a676c52) ) /* bg */ - - ROM_REGION( 0x0100, "scroll_prom", 0 ) /* scroll control PROM */ - ROM_LOAD( "15-6.prm", 0x0000, 0x0100, CRC(ec4faf5b) SHA1(7ebbf50807d04105ebadec91bded069408e399ba) ) -ROM_END - -ROM_START( banbam ) - ROM_REGION( 0x10000, "maincpu", 0 ) /* main CPU */ - ROM_LOAD( "ban-rom2.ic7", 0x0000, 0x2000, CRC(a5aeef6e) SHA1(92c1ad6ccb96b723e122899150e3c1855c5017b8) ) - ROM_CONTINUE( 0x8000, 0x2000 ) - ROM_LOAD( "ban-rom3.ic8", 0x2000, 0x2000, CRC(f91472bf) SHA1(94988b7bf2be3d3704a802db544070251d6c6a9c) ) - ROM_LOAD( "ban-rom4.ic9", 0x4000, 0x2000, CRC(436a09ef) SHA1(7287f741fbf3ac43d5c46b2f43ec4439cb3d0d56) ) - ROM_LOAD( "ban-rom5.ic10", 0x6000, 0x2000, CRC(45205f86) SHA1(a11d10beb21519f797c902b8a18775c8e2aa0fae) ) - - ROM_REGION( 0x10000, "subcpu", 0 ) /* sub CPU */ - ROM_LOAD( "ban-rom1.ic2", 0x0000, 0x2000, CRC(e36009f6) SHA1(72c485e8c19fbfc9c850094cfd87f1055154c0c5) ) - - ROM_REGION( 0x6000, "gfx1", 0 ) /* sprite */ - ROM_LOAD( "ban-rom6.ic90", 0x0000, 0x2000, CRC(41fc44df) SHA1(1c4f21cdc423078fab58370d5245a13292bf7fe6) ) - ROM_LOAD( "ban-rom7.ic92", 0x2000, 0x2000, CRC(8b429c5b) SHA1(505796eac2c8dd84f9ed29a6227b3243f81ec072) ) - ROM_LOAD( "ban-rom8.ic94", 0x4000, 0x2000, CRC(76c02d6b) SHA1(9ef7585da5376cdd604afee281594e24c69addf2) ) - - ROM_REGION( 0x6000, "gfx2", 0 ) /* bg */ - ROM_LOAD( "ban-rom11.ic102", 0x0000, 0x2000, CRC(aa827c57) SHA1(87d0c5e7df6ce40b0b2fc8f4b9dd43d4b7b0bc2e) ) - ROM_LOAD( "ban-rom10.ic101", 0x2000, 0x2000, CRC(51bd1c5c) SHA1(f714a3168d59cb4f8512440f7a2e27b6e0726a39) ) - ROM_LOAD( "ban-rom9.ic100", 0x4000, 0x2000, CRC(c0a5a4c8) SHA1(7f0978669218982d379a5d72c6198a33a8213ab5) ) - - ROM_REGION( 0x0700, "proms", 0 ) /* color PROMs */ - ROM_LOAD( "16-3.66", 0x0000, 0x0100, CRC(dbcd3bec) SHA1(1baeec277b16c82b67e10da9d4c84cf383ef4a82) ) /* R Prom type 24s10 */ - ROM_LOAD( "16-4.67", 0x0100, 0x0100, CRC(9eb7b6cf) SHA1(86451e8a510f8cfbc0be7d4e7bb1ee7dfd67f1f4) ) /* G Prom type 24s10 */ - ROM_LOAD( "16-5.68", 0x0200, 0x0100, CRC(9b30a7f3) SHA1(a0aefc2c8325b95ea227e404583d14622b04a3b9) ) /* B Prom type 24s10 */ - ROM_LOAD( "16-1.148", 0x0300, 0x0200, CRC(777e2770) SHA1(7f4ef42ab4e0546c2932d498cf573bd4f4296db7) ) /* sprite Prom type mb7124h */ - ROM_LOAD( "16-2.97", 0x0500, 0x0200, CRC(7f95d4b2) SHA1(68dc311739a4d5d72f4cfbace27f3a82f05316ff) ) /* bg Prom type mb7124h */ - - ROM_REGION( 0x0100, "scroll_prom", 0 ) /* scroll control PROM */ - ROM_LOAD( "16-6.59", 0x0000, 0x0100, CRC(ec4faf5b) SHA1(7ebbf50807d04105ebadec91bded069408e399ba) ) /* Prom type 24s10 */ - - ROM_REGION( 0x2000, "mcu_rom", 0 ) /* protection, data used with Fujitsu MB8841 4-Bit MCU */ - ROM_LOAD( "ban-rom12.ic2", 0x0000, 0x2000, CRC(044bb2f6) SHA1(829b2152740061e0506c7504885d8404fb8fe360) ) - - ROM_REGION(0x800, "mcu", 0) /* Fujitsu MB8841 4-Bit MCU internal ROM */ - ROM_LOAD( "sun-8212.ic3", 0x000, 0x800, CRC(8869611e) SHA1(c6443f3bcb0cdb4d7b1b19afcbfe339c300f36aa) ) -ROM_END - -ROM_START( pettanp ) - ROM_REGION( 0x10000, "maincpu", 0 ) /* main CPU */ - ROM_LOAD( "tvg2-16a.7", 0x0000, 0x2000, CRC(4cbbbd01) SHA1(3905cf9e9d324bb23688ab29c98d71529d3dbf0c) ) - ROM_CONTINUE( 0x8000, 0x2000 ) - ROM_LOAD( "tvg3-16a.8", 0x2000, 0x2000, CRC(aaa0420f) SHA1(aa7ead51002f8b1bbefd07ff23b9064804fc31b3) ) - ROM_LOAD( "tvg4-16a.9", 0x4000, 0x2000, CRC(43306369) SHA1(1eadebd3d962da49fd204eff8692f1e1a1e3cc98) ) - ROM_LOAD( "tvg5-16a.10", 0x6000, 0x2000, CRC(da9c635f) SHA1(3c084ad159dbabfd02a9772489c3193852d135b7) ) - - ROM_REGION( 0x10000, "subcpu", 0 ) /* sub CPU */ - ROM_LOAD( "tvg1-16.2", 0x0000, 0x2000, CRC(e36009f6) SHA1(72c485e8c19fbfc9c850094cfd87f1055154c0c5) ) - - ROM_REGION( 0x6000, "gfx1", 0 ) /* sprite */ - ROM_LOAD( "tvg6-16.90", 0x0000, 0x2000, CRC(6905d9d5) SHA1(586bf72bab5ab6e3e319c925decc16d7f3711af1) ) - ROM_LOAD( "tvg7-16.92", 0x2000, 0x2000, CRC(40d02bfd) SHA1(2f6ca8197048318f7900b56169aba4c9fdf48693) ) - ROM_LOAD( "tvg8-16.94", 0x4000, 0x2000, CRC(b18a2244) SHA1(168061e050530e6a5bc78c14a64e635370256dfd) ) - - ROM_REGION( 0x6000, "gfx2", 0 ) /* bg */ - ROM_LOAD( "tvg11-16.102", 0x0000, 0x2000, CRC(327b7a29) SHA1(4b8d57607c4a1e84c630c38eba3fa90b5496dcde) ) - ROM_LOAD( "tvg10-16.101", 0x2000, 0x2000, CRC(624ac061) SHA1(9d479a8a256a8ff37c00bc7449b11357f9fe6cdc) ) - ROM_LOAD( "tvg9-16.100", 0x4000, 0x2000, CRC(c477e74c) SHA1(864eddcd9c817aeecb09423071f87d3b39eb5fc4) ) - - ROM_REGION( 0x0700, "proms", 0 ) /* color PROMs */ - ROM_LOAD( "16-3.66", 0x0000, 0x0100, CRC(dbcd3bec) SHA1(1baeec277b16c82b67e10da9d4c84cf383ef4a82) ) /* R Prom type 24s10 */ - ROM_LOAD( "16-4.67", 0x0100, 0x0100, CRC(9eb7b6cf) SHA1(86451e8a510f8cfbc0be7d4e7bb1ee7dfd67f1f4) ) /* G Prom type 24s10 */ - ROM_LOAD( "16-5.68", 0x0200, 0x0100, CRC(9b30a7f3) SHA1(a0aefc2c8325b95ea227e404583d14622b04a3b9) ) /* B Prom type 24s10 */ - ROM_LOAD( "16-1.148", 0x0300, 0x0200, CRC(777e2770) SHA1(7f4ef42ab4e0546c2932d498cf573bd4f4296db7) ) /* sprite Prom type mb7124h */ - ROM_LOAD( "16-2.97", 0x0500, 0x0200, CRC(7f95d4b2) SHA1(68dc311739a4d5d72f4cfbace27f3a82f05316ff) ) /* bg Prom type mb7124h */ - - ROM_REGION( 0x0100, "scroll_prom", 0 ) /* scroll control PROM */ - ROM_LOAD( "16-6.59", 0x0000, 0x0100, CRC(ec4faf5b) SHA1(7ebbf50807d04105ebadec91bded069408e399ba) ) /* Prom type 24s10 */ - - ROM_REGION( 0x1000, "mcu_rom", 0 ) /* protection data used with Fujitsu MB8841 4-Bit MCU */ - ROM_LOAD( "tvg12-16.2", 0x0000, 0x1000, CRC(3abc6ba8) SHA1(15e0b0f9d068f6094e2be4f4f1dea0ff6e85686b) ) - - ROM_REGION(0x800, "mcu", 0) /* Fujitsu MB8841 4-Bit MCU internal ROM */ - ROM_LOAD( "sun-8212.ic3", 0x000, 0x800, NO_DUMP ) // very much likely to be same as banbam and arabian -ROM_END - -/* Markham hardware */ -GAME( 1983, markham, 0, markham, markham, markham_state, empty_init, ROT0, "Sun Electronics", "Markham", MACHINE_SUPPORTS_SAVE ) - -/* Strength & Skill hardware */ -GAME( 1984, strnskil, 0, strnskil, strnskil, markham_state, empty_init, ROT0, "Sun Electronics", "Strength & Skill", MACHINE_SUPPORTS_SAVE) -GAME( 1984, guiness, strnskil, strnskil, strnskil, markham_state, empty_init, ROT0, "Sun Electronics", "The Guiness (Japan)", MACHINE_SUPPORTS_SAVE) - -/* Strength & Skill hardware with SUN 8212 MCU */ -GAME( 1984, banbam, 0, banbam, banbam, markham_state, empty_init, ROT0, "Sun Electronics", "BanBam", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE) -GAME( 1984, pettanp, banbam, banbam, banbam, markham_state, empty_init, ROT0, "Sun Electronics", "Pettan Pyuu (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE) |