From 04aa53359e8327002cc3f44dfd20dcd0979ca725 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 19 Jun 2024 06:55:07 +0200 Subject: [PATCH] New working clones ------------------ Match It [f205v, Smitdogg, Sean Sutton, Brian Troha, TeamEurope, The Dumping Union] Shisensho - Joshiryo-Hen (Japan, set 1) [twistedsymphony, The Dumping Union] - irem/shisen.cpp updates: * Added a PCB layout for IREM's Match It M80 based games [Brian Troha] * Dumped missing ROMs and PLDs for Match It and Shisensho sets [f205v] * Renamed the driver to m80.cpp --- src/mame/irem/m80.cpp | 637 +++++++++++++++++++++++++++++++++++++++ src/mame/irem/shisen.cpp | 558 ---------------------------------- src/mame/mame.lst | 14 +- 3 files changed, 645 insertions(+), 564 deletions(-) create mode 100644 src/mame/irem/m80.cpp delete mode 100644 src/mame/irem/shisen.cpp diff --git a/src/mame/irem/m80.cpp b/src/mame/irem/m80.cpp new file mode 100644 index 00000000000..2d2e4d67c91 --- /dev/null +++ b/src/mame/irem/m80.cpp @@ -0,0 +1,637 @@ +// license:BSD-3-Clause +// copyright-holders:Nicola Salmoria +/*************************************************************************** + +Tamtex Shisensho / Match It + +driver by Nicola Salmoria + + +IREM M80-A-A PCB ++-----------------------------------------------------+ +| VR1 MB3730A D780C-1 PAL16L8.IC37 | +| ML324N 24.000MHz | +| SIS_A-22-.IC22 C2H.IC50 | +| Y3014B KNA91H014 C2L.IC51 | +|J YM2151 TMM2063AP-70 C0H.IC52* | +|A PAL16L8.IC30 C0L.IC53 | +|M SD.IC14 | +|M SW1 | +|A SW2 TMM2063AP-70 | +| SIS_A-27-I.IC27 TMM2063AP-70 | +| D780C-1 | +| | +| 3579.545KHz PAL16R4.IC48 | ++-----------------------------------------------------+ + + CPU: NEC D780C-1 Z80 x 2 +Sound: Yamaha YM2151, Y3014B DAC + Fujitsu MB3730A Low-Frequency High-Power AMP + LM324N Low-Power Quad-Operational AMP +Video: Nanao KNA91H014 QFP60 + OSC: 24.000MHz, 3579.545KHz (AKA 3.579545MHz) + RAM: TMM2063AP-70 64K SRAM x 3 +Other: VR1 - Volume pot + SW1 & SW2 - 8 switch dipswitch + TIBPAL16L8-25CN @ IC37 + TIBPAL16L8-25CN @ IC30 + PAL16R4ACN @ IC48 + +EPROMs: + IC27 - main program ROM, SIS A-27-I 27C101 + IC22 - sound program ROM, SIS A-22- 27C512 +ROMs: + IC50 - NEC D23C2001C 115 mask ROM silkscreened C2H + IC51 - NEC D23C2001C 114 mask ROM silkscreened C2L + IC52 - Unpopulated, silkscreened C0H - 2M ROM + IC53 - Toshiba TC534000P N001 mask ROM silkscreened C0L + IC14 - NEC D23C2001C 116 mask ROM silkscreened SD + +***************************************************************************/ + +#include "emu.h" + +#include "m72_a.h" + +#include "cpu/z80/z80.h" +#include "machine/gen_latch.h" +#include "machine/rstbuf.h" +#include "machine/timer.h" +#include "sound/ymopm.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class shisen_state : public driver_device +{ +public: + shisen_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_soundcpu(*this, "soundcpu"), + m_audio(*this, "m72"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_paletteram(*this, "paletteram"), + m_videoram(*this, "videoram"), + m_mainbank(*this, "mainbank"), + m_dsw2(*this, "DSW2") + { } + + void shisen(machine_config &config); + +protected: + virtual void video_start() override; + +private: + required_device m_maincpu; + required_device m_soundcpu; + required_device m_audio; + required_device m_gfxdecode; + required_device m_palette; + + required_shared_ptr m_paletteram; + required_shared_ptr m_videoram; + required_memory_bank m_mainbank; + + required_ioport m_dsw2; + + uint8_t m_gfxbank = 0; + tilemap_t *m_bg_tilemap = nullptr; + + void coin_w(uint8_t data); + void videoram_w(offs_t offset, uint8_t data); + void bankswitch_w(uint8_t data); + void paletteram_w(offs_t offset, uint8_t data); + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + TIMER_DEVICE_CALLBACK_MEMBER(sound_nmi); + + void main_io_map(address_map &map); + void main_prg_map(address_map &map); + void sound_io_map(address_map &map); + void sound_prg_map(address_map &map); +}; + + +void shisen_state::videoram_w(offs_t offset, uint8_t data) +{ + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset / 2); +} + +void shisen_state::bankswitch_w(uint8_t data) +{ + if (data & 0xc0) logerror("bank switch %02x\n", data); + + // bits 0-2 select ROM bank + m_mainbank->set_entry(data & 0x07); + + // bits 3-5 select gfx bank + int bank = (data & 0x38) >> 3; + + if (m_gfxbank != bank) + { + m_gfxbank = bank; + machine().tilemap().mark_all_dirty(); + } + + // bits 6-7 unknown +} + +void shisen_state::paletteram_w(offs_t offset, uint8_t data) +{ + m_paletteram[offset] = data; + + offset &= 0xff; + + m_palette->set_pen_color(offset, pal5bit(m_paletteram[offset + 0x000]), pal5bit(m_paletteram[offset + 0x100]), pal5bit(m_paletteram[offset + 0x200])); +} + +TILE_GET_INFO_MEMBER(shisen_state::get_bg_tile_info) +{ + int offs = tile_index * 2; + int code = m_videoram[offs] + ((m_videoram[offs + 1] & 0x0f) << 8) + (m_gfxbank << 12); + int color = (m_videoram[offs + 1] & 0xf0) >> 4; + + tileinfo.set(0, code, color, 0); +} + +void shisen_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shisen_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + + m_mainbank->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000); + + save_item(NAME(m_gfxbank)); +} + +TIMER_DEVICE_CALLBACK_MEMBER(shisen_state::sound_nmi) +{ + m_soundcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); +} + +uint32_t shisen_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + // on Irem boards, screen flip is handled in both hardware and software. + // this game doesn't have cocktail mode so if there's software control we don't know where it is mapped. + flip_screen_set(~m_dsw2->read() & 1); + + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +void shisen_state::main_prg_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr(m_mainbank); + map(0xc800, 0xcaff).ram().w(FUNC(shisen_state::paletteram_w)).share(m_paletteram); + map(0xd000, 0xdfff).ram().w(FUNC(shisen_state::videoram_w)).share(m_videoram); + map(0xe000, 0xffff).ram(); +} + + +void shisen_state::coin_w(uint8_t data) +{ + if ((data & 0xf9) != 0x01) logerror("coin ctrl = %02x\n",data); + + machine().bookkeeping().coin_counter_w(0, data & 0x02); + machine().bookkeeping().coin_counter_w(1, data & 0x04); +} + +void shisen_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1").w(FUNC(shisen_state::coin_w)); + map(0x01, 0x01).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).portr("P1").w(FUNC(shisen_state::bankswitch_w)); + map(0x03, 0x03).portr("P2"); + map(0x04, 0x04).portr("COIN"); +} + + +void shisen_state::sound_prg_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xfd00, 0xffff).ram(); +} + +void shisen_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::shisen_sample_addr_w)); + map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); + map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); + map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); +} + + +static INPUT_PORTS_START( shisen ) + PORT_START("P1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("P2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) 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( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("COIN") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW1") + PORT_DIPNAME( 0x03, 0x03, "Timer" ) PORT_DIPLOCATION("SW1:1,2") + PORT_DIPSETTING( 0x03, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4") + PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW2",0x04,EQUALS,0x04) PORT_DIPLOCATION("SW1:5,6,7,8") + PORT_DIPSETTING( 0xa0, DEF_STR( 6C_1C ) ) + PORT_DIPSETTING( 0xb0, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0xd0, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 8C_3C ) ) + PORT_DIPSETTING( 0xe0, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 5C_3C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 3C_2C ) ) + PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x90, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x50, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_CONDITION("DSW2",0x04,NOTEQUALS,0x04) PORT_DIPLOCATION("SW1:5,6") + PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_CONDITION("DSW2",0x04,NOTEQUALS,0x04) PORT_DIPLOCATION("SW1:7,8") + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + + PORT_START("DSW2") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "Coin Chute" ) PORT_DIPLOCATION("SW2:3") + PORT_DIPSETTING( 0x04, "Common" ) + PORT_DIPSETTING( 0x00, "Separate" ) + PORT_DIPNAME( 0x08, 0x08, "Nude Pictures" ) PORT_DIPLOCATION("SW2:4") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, "Women Select" ) PORT_DIPLOCATION("SW2:5") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + // In stop mode, press 2 to stop and 1 to restart + PORT_DIPNAME( 0x20, 0x20, "Stop Mode (Cheat)") PORT_DIPLOCATION("SW2:6") + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, "Play Mode" ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x00, "1 Player" ) + PORT_DIPSETTING( 0x40, "2 Player" ) + PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( matchit ) + PORT_INCLUDE( shisen ) + + PORT_MODIFY("DSW2") + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:4") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:5") + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + +static const gfx_layout charlayout = +{ + 8,8, + 4096*8, + 4, + { 0, 4, 0x80000*8+0, 0x80000*8+4 }, + { 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + 16*8 +}; + + +static GFXDECODE_START( gfx_shisen ) + GFXDECODE_ENTRY( "tiles", 0x00000, charlayout, 0, 16 ) +GFXDECODE_END + + + +void shisen_state::shisen(machine_config &config) +{ + // basic machine hardware + Z80(config, m_maincpu, 3.579545_MHz_XTAL ); // Verified on PCB + m_maincpu->set_addrmap(AS_PROGRAM, &shisen_state::main_prg_map); + m_maincpu->set_addrmap(AS_IO, &shisen_state::main_io_map); + + z80_device &soundcpu(Z80(config, m_soundcpu, 3.579545_MHz_XTAL )); // Verified on PCB + soundcpu.set_addrmap(AS_PROGRAM, &shisen_state::sound_prg_map); + soundcpu.set_addrmap(AS_IO, &shisen_state::sound_io_map); + // IRQs are generated by main Z80 and YM2151 + soundcpu.set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb)); + + TIMER(config, "v1").configure_scanline(FUNC(shisen_state::sound_nmi), "screen", 1, 2); // clocked by V1? (Vigilante) + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(24_MHz_XTAL / 2, 96*8, 0*8, 64*8, 284, 0, 256); // sync rates not verified + screen.set_screen_update(FUNC(shisen_state::screen_update)); + screen.set_palette(m_palette); + screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_shisen); + PALETTE(config, m_palette).set_entries(256); + + // sound hardware + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); + + generic_latch_8_device &soundlatch(GENERIC_LATCH_8(config, "soundlatch")); + soundlatch.data_pending_callback().set("soundirq", FUNC(rst_neg_buffer_device::rst18_w)); + soundlatch.set_separate_acknowledge(true); + + RST_NEG_BUFFER(config, "soundirq").int_callback().set_inputline(m_soundcpu, 0); + + IREM_M72_AUDIO(config, m_audio); + m_audio->set_dac_tag("dac"); + + ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579545_MHz_XTAL )); // Verified on PCB + ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w)); + ymsnd.add_route(0, "lspeaker", 0.5); + ymsnd.add_route(1, "rspeaker", 0.5); + + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // Y3014B DAC +} + + + +/*************************************************************************** + + Game driver(s) + +***************************************************************************/ + +ROM_START( matchit ) // IREM M80-A-A hardware + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "sis_a-27-i.ic27", 0x00000, 0x20000, CRC(c7190125) SHA1(f4615a5dff0931d8f0e417e7dd6d0f87c7f573a4) ) // 27C101 EPROM + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "sis_a-22-.ic22", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) // 27C512 EPROM + + ROM_REGION( 0x100000, "tiles", 0 ) // mask ROMs soldered in place + ROM_LOAD( "c2l.ic51", 0x000000, 0x40000, CRC(e19276a9) SHA1(6350f61225e9b1bdb60554807553d08eb3b3d626) ) // NEC D23C2001C mask ROM + ROM_LOAD( "c2h.ic50", 0x040000, 0x40000, CRC(e1dc099e) SHA1(3089b51150e13486eb4f233e598a7cc75d97375a) ) // NEC D23C2001C mask ROM + ROM_LOAD( "c0l.ic53", 0x080000, 0x80000, CRC(10fde9fb) SHA1(6d69ddbe3e90679a9b6f70c030a7d7e7db8c03ca) ) // Toshiba TC534000P mask ROM + + ROM_REGION( 0x40000, "m72", 0 ) // samples - mask ROM soldered in place + ROM_LOAD( "sd.ic14", 0x00000, 0x40000, CRC(80448f72) SHA1(99cd7160e9bf1f6f99b2ed8fe3900c5ac24f3acc) ) // NEC D23C2001C mask ROM + + ROM_REGION( 0x0600, "plds", 0 ) + ROM_LOAD( "tibpal16l8-25cn.ic30", 0x0000, 0x0104, CRC(7cf017b3) SHA1(5de606cc679d564edb796832646771ed2bae0b7f) ) // unprotected + ROM_LOAD( "tibpal16l8-25cn.ic37", 0x0200, 0x0104, CRC(6121d077) SHA1(dfc449f4c8cb4ae8f916c4dd32d69a7d62d54b9a) ) // unprotected + ROM_LOAD( "pal16r4acn.ic48", 0x0400, 0x0104, CRC(09c6c744) SHA1(24fc275cc49d4407a14941e036404c2108b52402) ) // unprotected +ROM_END + +ROM_START( shisen ) // IREM M80-A-A hardware + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "sis_a-27-d.ic27", 0x00000, 0x20000, CRC(feaf8b13) SHA1(7d98fdda42aa203073679e5e441e835350a2342b) ) // 27C101 EPROM + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "sis_a-22-.ic22", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) // 27C512 EPROM + + ROM_REGION( 0x100000, "tiles", 0 ) // mask ROMs soldered in place + ROM_LOAD( "c2l.ic51", 0x000000, 0x40000, CRC(e19276a9) SHA1(6350f61225e9b1bdb60554807553d08eb3b3d626) ) // NEC D23C2001C mask ROM + ROM_LOAD( "c2h.ic50", 0x040000, 0x40000, CRC(e1dc099e) SHA1(3089b51150e13486eb4f233e598a7cc75d97375a) ) // NEC D23C2001C mask ROM + ROM_LOAD( "c0l.ic53", 0x080000, 0x80000, CRC(10fde9fb) SHA1(6d69ddbe3e90679a9b6f70c030a7d7e7db8c03ca) ) // Toshiba TC534000P mask ROM + + ROM_REGION( 0x40000, "m72", 0 ) // samples - mask ROM soldered in place + ROM_LOAD( "sd.ic14", 0x00000, 0x40000, CRC(80448f72) SHA1(99cd7160e9bf1f6f99b2ed8fe3900c5ac24f3acc) ) // NEC D23C2001C mask ROM + + ROM_REGION( 0x0600, "plds", 0 ) + ROM_LOAD( "tibpal16l8-25cn.ic30", 0x0000, 0x0104, CRC(7cf017b3) SHA1(5de606cc679d564edb796832646771ed2bae0b7f) ) // unprotected + ROM_LOAD( "tibpal16l8-25cn.ic37", 0x0200, 0x0104, CRC(6121d077) SHA1(dfc449f4c8cb4ae8f916c4dd32d69a7d62d54b9a) ) // unprotected + ROM_LOAD( "pal16r4acn.ic48", 0x0400, 0x0104, CRC(09c6c744) SHA1(24fc275cc49d4407a14941e036404c2108b52402) ) // unprotected +ROM_END + +ROM_START( shisena ) // IREM M80-A-A hardware + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "sis_a-27-a.ic27", 0x00000, 0x20000, CRC(de2ecf05) SHA1(7256c5587f92db10a52c43001e3236f3be3df5df) ) // 27C101 EPROM + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "sis_a-22-.ic22", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) // 27C512 EPROM + + ROM_REGION( 0x100000, "tiles", 0 ) // mask ROMs soldered in place + ROM_LOAD( "c2l.ic51", 0x000000, 0x40000, CRC(e19276a9) SHA1(6350f61225e9b1bdb60554807553d08eb3b3d626) ) // NEC D23C2001C mask ROM + ROM_LOAD( "c2h.ic50", 0x040000, 0x40000, CRC(e1dc099e) SHA1(3089b51150e13486eb4f233e598a7cc75d97375a) ) // NEC D23C2001C mask ROM + ROM_LOAD( "c0l.ic53", 0x080000, 0x80000, CRC(10fde9fb) SHA1(6d69ddbe3e90679a9b6f70c030a7d7e7db8c03ca) ) // Toshiba TC534000P mask ROM + + ROM_REGION( 0x40000, "m72", 0 ) // samples - mask ROM soldered in place + ROM_LOAD( "sd.ic14", 0x00000, 0x40000, CRC(80448f72) SHA1(99cd7160e9bf1f6f99b2ed8fe3900c5ac24f3acc) ) // NEC D23C2001C mask ROM + + ROM_REGION( 0x0600, "plds", 0 ) + ROM_LOAD( "tibpal16l8-25cn.ic30", 0x0000, 0x0104, CRC(7cf017b3) SHA1(5de606cc679d564edb796832646771ed2bae0b7f) ) // unprotected + ROM_LOAD( "tibpal16l8-25cn.ic37", 0x0200, 0x0104, CRC(6121d077) SHA1(dfc449f4c8cb4ae8f916c4dd32d69a7d62d54b9a) ) // unprotected + ROM_LOAD( "pal16r4acn.ic48", 0x0400, 0x0104, CRC(09c6c744) SHA1(24fc275cc49d4407a14941e036404c2108b52402) ) // unprotected +ROM_END + + +/* +Match It (bootleg hardware) +Tamtex, 1989 + + +CPU : Z80A +SOUND : Z80A, YM2151, YM3012, LM324, GL4558 +DIPSW : 8 position (x2) +XTAL : 3.579545MHz, 24.000MHz +RAM : GM76C88-12D (=6264, x3), 6116 (x3) +PROMs : None +PALs : PAL16L8 (x3) + +ROMs : (All ROMs type 27C512) + +1.2C Sound Program + +2.11D \ +3.11C / Main Program + +4.3J \ +5.4J | +6.5J | +7.6J | +8.1L | +9.2L | +10.3L | +11.5L | GFX +12.6L | +13.7L | +14.8L | +15.10L | +16.11L | +17.12L | +18.13L | +19.14L / +*/ + +ROM_START( matchitb ) // bootleg + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "2.11d", 0x00000, 0x10000, CRC(299815f7) SHA1(dd25f69d3c825e12e5c2e24b5bbfda9c39400345) ) // == 1/2 sis_a-27-i.ic27 + ROM_LOAD( "3.11c", 0x10000, 0x10000, CRC(0350f6e2) SHA1(c683571969c0e4c66eb316a1bc580759db02bbfc) ) // == 2/2 sis_a-27-i.ic27 / sis_a-27-d.ic27 / sis_a-27-a.ic27 + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "1.2c", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) // == sis_a-22-.ic22 + + ROM_REGION( 0x100000, "tiles", 0 ) // same data as original sets, just in 64K chunks + ROM_LOAD( "4.3j", 0x00000, 0x10000, CRC(1c0e221c) SHA1(87561f7dabf25309be784e797ac237aa3956ea1c) ) + ROM_LOAD( "5.4j", 0x10000, 0x10000, CRC(8a7d8284) SHA1(56b5d352b506c5bfab24102b11c877dd28c8ad36) ) + ROM_LOAD( "8.1l", 0x20000, 0x10000, CRC(48e1d043) SHA1(4fbd409aff593c0b27fc58c218a470adf48ee0b7) ) + ROM_LOAD( "9.2l", 0x30000, 0x10000, CRC(3feff3f2) SHA1(2e87e4fb158379486de5d13feff5bf1965690e14) ) + ROM_LOAD( "10.3l", 0x40000, 0x10000, CRC(b76a517d) SHA1(6dcab31ecc127c2fdc6912802cddfa62161d83a2) ) + ROM_LOAD( "11.5l", 0x50000, 0x10000, CRC(8ff5ee7a) SHA1(c8f4d374a43fcc818378c4e73af2c03238a93ad0) ) + ROM_LOAD( "12.6l", 0x60000, 0x10000, CRC(64e5d837) SHA1(030f9704dfdb06cd3ac583b857ce9239e1409f60) ) + ROM_LOAD( "13.7l", 0x70000, 0x10000, CRC(02c1b2c4) SHA1(6e4fe801189766559859eb0d628f3ae65c05ad16) ) + ROM_LOAD( "14.8l", 0x80000, 0x10000, CRC(f5a8370e) SHA1(b270af116ee15b5de048fc218215bf91a2ce6b46) ) + ROM_LOAD( "15.10l", 0x90000, 0x10000, CRC(7a9b7671) SHA1(ddb9b412b494f2f259c56a163e5511353cf4ebb5) ) + ROM_LOAD( "16.11l", 0xa0000, 0x10000, CRC(7fb396ad) SHA1(b245bb9a6a4c1ec518906c59c3a3da5e412369ab) ) + ROM_LOAD( "17.12l", 0xb0000, 0x10000, CRC(fb83c652) SHA1(3d124e5c751732e8055bbb7b6853b6e64435a85d) ) + ROM_LOAD( "18.13l", 0xc0000, 0x10000, CRC(d8b689e9) SHA1(14db7ba2246f12db9b6b5b4dcb4a648e4a65ace4) ) + ROM_LOAD( "19.14l", 0xd0000, 0x10000, CRC(e6611947) SHA1(9267dad097b318174706d51fb94d613208b04f60) ) + ROM_LOAD( "6.5j", 0xe0000, 0x10000, CRC(473b349a) SHA1(9f5d08e07c8175bc7ec3854499177af2c398bd76) ) + ROM_LOAD( "7.6j", 0xf0000, 0x10000, CRC(d9a60285) SHA1(f8ef211e022e9c8ea25f6d8fb16266867656a591) ) + + ROM_REGION( 0x40000, "m72", 0 ) // samples - same as original data, just in 64K chunks + ROM_LOAD( "2.7b", 0x00000, 0x10000, CRC(92f0093d) SHA1(530b924aa991283045577d03524dfc7eacf1be49) ) + ROM_LOAD( "3.6c", 0x10000, 0x10000, CRC(116a049c) SHA1(656c0d1d7f945c5f5637892721a58421b682fd01) ) + ROM_LOAD( "4.7c", 0x20000, 0x10000, CRC(6840692b) SHA1(f6f7b063ecf7206e172843515be38376f8845b42) ) + ROM_LOAD( "5.9c", 0x30000, 0x10000, CRC(92ffe22a) SHA1(19dcaf6e25bb7498d4ab19fa0a63f3326b9bff8f) ) +ROM_END + +ROM_START( sichuan2 ) // bootleg / hack + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "6.11d", 0x00000, 0x10000, CRC(98a2459b) SHA1(42102cf2921f80be7600b11aba63538e3b3858ec) ) + ROM_LOAD( "7.11c", 0x10000, 0x10000, CRC(0350f6e2) SHA1(c683571969c0e4c66eb316a1bc580759db02bbfc) ) // == 2/2 sis_a-27-i.ic27 / sis_a-27-d.ic27 / sis_a-27-a.ic27 + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "1.2c", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) // == sis_a-22-.ic22 + + ROM_REGION( 0x100000, "tiles", 0 ) // same data as original sets, just in 64K chunks + ROM_LOAD( "8.3j", 0x00000, 0x10000, CRC(1c0e221c) SHA1(87561f7dabf25309be784e797ac237aa3956ea1c) ) + ROM_LOAD( "9.4j", 0x10000, 0x10000, CRC(8a7d8284) SHA1(56b5d352b506c5bfab24102b11c877dd28c8ad36) ) + ROM_LOAD( "12.1l", 0x20000, 0x10000, CRC(48e1d043) SHA1(4fbd409aff593c0b27fc58c218a470adf48ee0b7) ) + ROM_LOAD( "13.2l", 0x30000, 0x10000, CRC(3feff3f2) SHA1(2e87e4fb158379486de5d13feff5bf1965690e14) ) + ROM_LOAD( "14.3l", 0x40000, 0x10000, CRC(b76a517d) SHA1(6dcab31ecc127c2fdc6912802cddfa62161d83a2) ) + ROM_LOAD( "15.5l", 0x50000, 0x10000, CRC(8ff5ee7a) SHA1(c8f4d374a43fcc818378c4e73af2c03238a93ad0) ) + ROM_LOAD( "16.6l", 0x60000, 0x10000, CRC(64e5d837) SHA1(030f9704dfdb06cd3ac583b857ce9239e1409f60) ) + ROM_LOAD( "17.7l", 0x70000, 0x10000, CRC(02c1b2c4) SHA1(6e4fe801189766559859eb0d628f3ae65c05ad16) ) + ROM_LOAD( "18.8l", 0x80000, 0x10000, CRC(f5a8370e) SHA1(b270af116ee15b5de048fc218215bf91a2ce6b46) ) + ROM_LOAD( "19.10l", 0x90000, 0x10000, CRC(7a9b7671) SHA1(ddb9b412b494f2f259c56a163e5511353cf4ebb5) ) + ROM_LOAD( "20.11l", 0xa0000, 0x10000, CRC(7fb396ad) SHA1(b245bb9a6a4c1ec518906c59c3a3da5e412369ab) ) + ROM_LOAD( "21.12l", 0xb0000, 0x10000, CRC(fb83c652) SHA1(3d124e5c751732e8055bbb7b6853b6e64435a85d) ) + ROM_LOAD( "22.13l", 0xc0000, 0x10000, CRC(d8b689e9) SHA1(14db7ba2246f12db9b6b5b4dcb4a648e4a65ace4) ) + ROM_LOAD( "23.14l", 0xd0000, 0x10000, CRC(e6611947) SHA1(9267dad097b318174706d51fb94d613208b04f60) ) + ROM_LOAD( "11.5j", 0xe0000, 0x10000, CRC(473b349a) SHA1(9f5d08e07c8175bc7ec3854499177af2c398bd76) ) + ROM_LOAD( "10.6j", 0xf0000, 0x10000, CRC(d9a60285) SHA1(f8ef211e022e9c8ea25f6d8fb16266867656a591) ) + + ROM_REGION( 0x40000, "m72", 0 ) // samples - same as original data, just in 64K chunks + ROM_LOAD( "2.7b", 0x00000, 0x10000, CRC(92f0093d) SHA1(530b924aa991283045577d03524dfc7eacf1be49) ) + ROM_LOAD( "3.6c", 0x10000, 0x10000, CRC(116a049c) SHA1(656c0d1d7f945c5f5637892721a58421b682fd01) ) + ROM_LOAD( "4.7c", 0x20000, 0x10000, CRC(6840692b) SHA1(f6f7b063ecf7206e172843515be38376f8845b42) ) + ROM_LOAD( "5.9c", 0x30000, 0x10000, CRC(92ffe22a) SHA1(19dcaf6e25bb7498d4ab19fa0a63f3326b9bff8f) ) + + ROM_REGION( 0x600, "plds", 0 ) + ROM_LOAD( "1.1f", 0x000, 0x104, NO_DUMP ) // TIBPAL16R4 + ROM_LOAD( "2.6e", 0x200, 0x104, NO_DUMP ) // TIBPAL16L8 + ROM_LOAD( "3.14f", 0x400, 0x104, NO_DUMP ) // TIBPAL16L8 +ROM_END + +ROM_START( sichuan2a ) // bootleg / hack + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "ic06.a6", 0x00000, 0x10000, CRC(f8ac05ef) SHA1(cd20e5239d73264f1323ba6b1e35934685852ba1) ) + ROM_LOAD( "ic07.03", 0x10000, 0x10000, CRC(0350f6e2) SHA1(c683571969c0e4c66eb316a1bc580759db02bbfc) ) // == 2/2 sis_a-27-i.ic27 / sis_a-27-d.ic27 / sis_a-27-a.ic27 + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "ic01.01", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) // == sis_a-22-.ic22 + + ROM_REGION( 0x100000, "tiles", 0 ) // same data as original sets, just in 64K chunks + ROM_LOAD( "ic08.04", 0x00000, 0x10000, CRC(1c0e221c) SHA1(87561f7dabf25309be784e797ac237aa3956ea1c) ) + ROM_LOAD( "ic09.05", 0x10000, 0x10000, CRC(8a7d8284) SHA1(56b5d352b506c5bfab24102b11c877dd28c8ad36) ) + ROM_LOAD( "ic12.08", 0x20000, 0x10000, CRC(48e1d043) SHA1(4fbd409aff593c0b27fc58c218a470adf48ee0b7) ) + ROM_LOAD( "ic13.09", 0x30000, 0x10000, CRC(3feff3f2) SHA1(2e87e4fb158379486de5d13feff5bf1965690e14) ) + ROM_LOAD( "ic14.10", 0x40000, 0x10000, CRC(b76a517d) SHA1(6dcab31ecc127c2fdc6912802cddfa62161d83a2) ) + ROM_LOAD( "ic15.11", 0x50000, 0x10000, CRC(8ff5ee7a) SHA1(c8f4d374a43fcc818378c4e73af2c03238a93ad0) ) + ROM_LOAD( "ic16.12", 0x60000, 0x10000, CRC(64e5d837) SHA1(030f9704dfdb06cd3ac583b857ce9239e1409f60) ) + ROM_LOAD( "ic17.13", 0x70000, 0x10000, CRC(02c1b2c4) SHA1(6e4fe801189766559859eb0d628f3ae65c05ad16) ) + ROM_LOAD( "ic18.14", 0x80000, 0x10000, CRC(f5a8370e) SHA1(b270af116ee15b5de048fc218215bf91a2ce6b46) ) + ROM_LOAD( "ic19.15", 0x90000, 0x10000, CRC(7a9b7671) SHA1(ddb9b412b494f2f259c56a163e5511353cf4ebb5) ) + ROM_LOAD( "ic20.16", 0xa0000, 0x10000, CRC(7fb396ad) SHA1(b245bb9a6a4c1ec518906c59c3a3da5e412369ab) ) + ROM_LOAD( "ic21.17", 0xb0000, 0x10000, CRC(fb83c652) SHA1(3d124e5c751732e8055bbb7b6853b6e64435a85d) ) + ROM_LOAD( "ic22.18", 0xc0000, 0x10000, CRC(d8b689e9) SHA1(14db7ba2246f12db9b6b5b4dcb4a648e4a65ace4) ) + ROM_LOAD( "ic23.19", 0xd0000, 0x10000, CRC(e6611947) SHA1(9267dad097b318174706d51fb94d613208b04f60) ) + ROM_LOAD( "ic10.06", 0xe0000, 0x10000, CRC(473b349a) SHA1(9f5d08e07c8175bc7ec3854499177af2c398bd76) ) + ROM_LOAD( "ic11.07", 0xf0000, 0x10000, CRC(d9a60285) SHA1(f8ef211e022e9c8ea25f6d8fb16266867656a591) ) + + ROM_REGION( 0x40000, "m72", 0 ) // samples - same as original data, just in 64K chunks + ROM_LOAD( "ic02.02", 0x00000, 0x10000, CRC(92f0093d) SHA1(530b924aa991283045577d03524dfc7eacf1be49) ) + ROM_LOAD( "ic03.03", 0x10000, 0x10000, CRC(116a049c) SHA1(656c0d1d7f945c5f5637892721a58421b682fd01) ) + ROM_LOAD( "ic04.04", 0x20000, 0x10000, CRC(6840692b) SHA1(f6f7b063ecf7206e172843515be38376f8845b42) ) + ROM_LOAD( "ic05.05", 0x30000, 0x10000, CRC(92ffe22a) SHA1(19dcaf6e25bb7498d4ab19fa0a63f3326b9bff8f) ) +ROM_END + +} // anonymous namespace + +// Original IREM M80-A-A PCB +GAME( 1989, matchit, 0, shisen, matchit, shisen_state, empty_init, ROT0, "Tamtex", "Match It", MACHINE_SUPPORTS_SAVE ) // program ROM SIS A-27-I +GAME( 1989, shisen, matchit, shisen, shisen, shisen_state, empty_init, ROT0, "Tamtex", "Shisensho - Joshiryo-Hen (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // program ROM SIS A-27-D +GAME( 1989, shisena, matchit, shisen, shisen, shisen_state, empty_init, ROT0, "Tamtex", "Shisensho - Joshiryo-Hen (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // program ROM SIS A-27-A + +// Bootleg hardware +GAME( 1989, matchitb, matchit, shisen, matchit, shisen_state, empty_init, ROT0, "bootleg", "Match It (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, sichuan2, matchit, shisen, shisen, shisen_state, empty_init, ROT0, "bootleg", "Sichuan II (bootlet, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, sichuan2a, matchit, shisen, shisen, shisen_state, empty_init, ROT0, "bootleg", "Sichuan II (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/irem/shisen.cpp b/src/mame/irem/shisen.cpp deleted file mode 100644 index c07a91dac61..00000000000 --- a/src/mame/irem/shisen.cpp +++ /dev/null @@ -1,558 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nicola Salmoria -/*************************************************************************** - -Tamtex Shisensho / Match It - -driver by Nicola Salmoria - -***************************************************************************/ - -#include "emu.h" - -#include "m72_a.h" - -#include "cpu/z80/z80.h" -#include "machine/gen_latch.h" -#include "machine/rstbuf.h" -#include "machine/timer.h" -#include "sound/ymopm.h" - -#include "emupal.h" -#include "screen.h" -#include "speaker.h" -#include "tilemap.h" - - -namespace { - -class shisen_state : public driver_device -{ -public: - shisen_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_soundcpu(*this, "soundcpu"), - m_audio(*this, "m72"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_paletteram(*this, "paletteram"), - m_videoram(*this, "videoram"), - m_mainbank(*this, "mainbank"), - m_dsw2(*this, "DSW2") - { } - - void shisen(machine_config &config); - -protected: - virtual void video_start() override; - -private: - required_device m_maincpu; - required_device m_soundcpu; - required_device m_audio; - required_device m_gfxdecode; - required_device m_palette; - - required_shared_ptr m_paletteram; - required_shared_ptr m_videoram; - required_memory_bank m_mainbank; - - required_ioport m_dsw2; - - uint8_t m_gfxbank = 0; - tilemap_t *m_bg_tilemap = nullptr; - - void coin_w(uint8_t data); - void videoram_w(offs_t offset, uint8_t data); - void bankswitch_w(uint8_t data); - void paletteram_w(offs_t offset, uint8_t data); - - TILE_GET_INFO_MEMBER(get_bg_tile_info); - - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - TIMER_DEVICE_CALLBACK_MEMBER(sound_nmi); - - void main_io_map(address_map &map); - void main_prg_map(address_map &map); - void sound_io_map(address_map &map); - void sound_prg_map(address_map &map); -}; - - -void shisen_state::videoram_w(offs_t offset, uint8_t data) -{ - m_videoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset / 2); -} - -void shisen_state::bankswitch_w(uint8_t data) -{ - if (data & 0xc0) logerror("bank switch %02x\n", data); - - // bits 0-2 select ROM bank - m_mainbank->set_entry(data & 0x07); - - // bits 3-5 select gfx bank - int bank = (data & 0x38) >> 3; - - if (m_gfxbank != bank) - { - m_gfxbank = bank; - machine().tilemap().mark_all_dirty(); - } - - // bits 6-7 unknown -} - -void shisen_state::paletteram_w(offs_t offset, uint8_t data) -{ - m_paletteram[offset] = data; - - offset &= 0xff; - - m_palette->set_pen_color(offset, pal5bit(m_paletteram[offset + 0x000]), pal5bit(m_paletteram[offset + 0x100]), pal5bit(m_paletteram[offset + 0x200])); -} - -TILE_GET_INFO_MEMBER(shisen_state::get_bg_tile_info) -{ - int offs = tile_index * 2; - int code = m_videoram[offs] + ((m_videoram[offs + 1] & 0x0f) << 8) + (m_gfxbank << 12); - int color = (m_videoram[offs + 1] & 0xf0) >> 4; - - tileinfo.set(0, code, color, 0); -} - -void shisen_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shisen_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - - m_mainbank->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000); - - save_item(NAME(m_gfxbank)); -} - -TIMER_DEVICE_CALLBACK_MEMBER(shisen_state::sound_nmi) -{ - m_soundcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); -} - -uint32_t shisen_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - // on Irem boards, screen flip is handled in both hardware and software. - // this game doesn't have cocktail mode so if there's software control we don't know where it is mapped. - flip_screen_set(~m_dsw2->read() & 1); - - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - return 0; -} - - -void shisen_state::main_prg_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr(m_mainbank); - map(0xc800, 0xcaff).ram().w(FUNC(shisen_state::paletteram_w)).share(m_paletteram); - map(0xd000, 0xdfff).ram().w(FUNC(shisen_state::videoram_w)).share(m_videoram); - map(0xe000, 0xffff).ram(); -} - - -void shisen_state::coin_w(uint8_t data) -{ - if ((data & 0xf9) != 0x01) logerror("coin ctrl = %02x\n",data); - - machine().bookkeeping().coin_counter_w(0, data & 0x02); - machine().bookkeeping().coin_counter_w(1, data & 0x04); -} - -void shisen_state::main_io_map(address_map &map) -{ - map.global_mask(0xff); - map(0x00, 0x00).portr("DSW1").w(FUNC(shisen_state::coin_w)); - map(0x01, 0x01).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write)); - map(0x02, 0x02).portr("P1").w(FUNC(shisen_state::bankswitch_w)); - map(0x03, 0x03).portr("P2"); - map(0x04, 0x04).portr("COIN"); -} - - -void shisen_state::sound_prg_map(address_map &map) -{ - map(0x0000, 0x3fff).rom(); - map(0xfd00, 0xffff).ram(); -} - -void shisen_state::sound_io_map(address_map &map) -{ - map.global_mask(0xff); - map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); - map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); - map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::shisen_sample_addr_w)); - map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); - map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); - map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); -} - - -static INPUT_PORTS_START( shisen ) - PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) 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( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("COIN") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x03, 0x03, "Timer" ) PORT_DIPLOCATION("SW1:1,2") - PORT_DIPSETTING( 0x03, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4") - PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW2",0x04,EQUALS,0x04) PORT_DIPLOCATION("SW1:5,6,7,8") - PORT_DIPSETTING( 0xa0, DEF_STR( 6C_1C ) ) - PORT_DIPSETTING( 0xb0, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0xc0, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0xd0, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 8C_3C ) ) - PORT_DIPSETTING( 0xe0, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x20, DEF_STR( 5C_3C ) ) - PORT_DIPSETTING( 0x30, DEF_STR( 3C_2C ) ) - PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x40, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x90, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x70, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x60, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x50, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_CONDITION("DSW2",0x04,NOTEQUALS,0x04) PORT_DIPLOCATION("SW1:5,6") - PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) - PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_CONDITION("DSW2",0x04,NOTEQUALS,0x04) PORT_DIPLOCATION("SW1:7,8") - PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x40, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2") - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, "Coin Chute" ) PORT_DIPLOCATION("SW2:3") - PORT_DIPSETTING( 0x04, "Common" ) - PORT_DIPSETTING( 0x00, "Separate" ) - PORT_DIPNAME( 0x08, 0x08, "Nude Pictures" ) PORT_DIPLOCATION("SW2:4") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "Women Select" ) PORT_DIPLOCATION("SW2:5") - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) - // In stop mode, press 2 to stop and 1 to restart - PORT_DIPNAME( 0x20, 0x20, "Stop Mode (Cheat)") PORT_DIPLOCATION("SW2:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "Play Mode" ) PORT_DIPLOCATION("SW2:7") - PORT_DIPSETTING( 0x00, "1 Player" ) - PORT_DIPSETTING( 0x40, "2 Player" ) - PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) -INPUT_PORTS_END - -static INPUT_PORTS_START( matchit ) - PORT_INCLUDE( shisen ) - - PORT_MODIFY("DSW2") - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - - -static const gfx_layout charlayout = -{ - 8,8, - 4096*8, - 4, - { 0, 4, 0x80000*8+0, 0x80000*8+4 }, - { 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 16*8 -}; - - -static GFXDECODE_START( gfx_shisen ) - GFXDECODE_ENTRY( "tiles", 0x00000, charlayout, 0, 16 ) -GFXDECODE_END - - - -void shisen_state::shisen(machine_config &config) -{ - // basic machine hardware - Z80(config, m_maincpu, 3.579545_MHz_XTAL ); // Verified on PCB - m_maincpu->set_addrmap(AS_PROGRAM, &shisen_state::main_prg_map); - m_maincpu->set_addrmap(AS_IO, &shisen_state::main_io_map); - - z80_device &soundcpu(Z80(config, m_soundcpu, 3.579545_MHz_XTAL )); // Verified on PCB - soundcpu.set_addrmap(AS_PROGRAM, &shisen_state::sound_prg_map); - soundcpu.set_addrmap(AS_IO, &shisen_state::sound_io_map); - // IRQs are generated by main Z80 and YM2151 - soundcpu.set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb)); - - TIMER(config, "v1").configure_scanline(FUNC(shisen_state::sound_nmi), "screen", 1, 2); // clocked by V1? (Vigilante) - - // video hardware - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(24_MHz_XTAL / 2, 96*8, 0*8, 64*8, 284, 0, 256); // sync rates not verified - screen.set_screen_update(FUNC(shisen_state::screen_update)); - screen.set_palette(m_palette); - screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE); - - GFXDECODE(config, m_gfxdecode, m_palette, gfx_shisen); - PALETTE(config, m_palette).set_entries(256); - - // sound hardware - SPEAKER(config, "lspeaker").front_left(); - SPEAKER(config, "rspeaker").front_right(); - - generic_latch_8_device &soundlatch(GENERIC_LATCH_8(config, "soundlatch")); - soundlatch.data_pending_callback().set("soundirq", FUNC(rst_neg_buffer_device::rst18_w)); - soundlatch.set_separate_acknowledge(true); - - RST_NEG_BUFFER(config, "soundirq").int_callback().set_inputline(m_soundcpu, 0); - - IREM_M72_AUDIO(config, m_audio); - m_audio->set_dac_tag("dac"); - - ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579545_MHz_XTAL )); // Verified on PCB - ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w)); - ymsnd.add_route(0, "lspeaker", 0.5); - ymsnd.add_route(1, "rspeaker", 0.5); - - DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC -} - - - -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ - -ROM_START( sichuan2 ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "6.11d", 0x00000, 0x10000, CRC(98a2459b) SHA1(42102cf2921f80be7600b11aba63538e3b3858ec) ) - ROM_LOAD( "7.11c", 0x10000, 0x10000, CRC(0350f6e2) SHA1(c683571969c0e4c66eb316a1bc580759db02bbfc) ) - - ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "1.2c", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) - - ROM_REGION( 0x100000, "tiles", 0 ) - ROM_LOAD( "8.3j", 0x00000, 0x10000, CRC(1c0e221c) SHA1(87561f7dabf25309be784e797ac237aa3956ea1c) ) - ROM_LOAD( "9.4j", 0x10000, 0x10000, CRC(8a7d8284) SHA1(56b5d352b506c5bfab24102b11c877dd28c8ad36) ) - ROM_LOAD( "12.1l", 0x20000, 0x10000, CRC(48e1d043) SHA1(4fbd409aff593c0b27fc58c218a470adf48ee0b7) ) - ROM_LOAD( "13.2l", 0x30000, 0x10000, CRC(3feff3f2) SHA1(2e87e4fb158379486de5d13feff5bf1965690e14) ) - ROM_LOAD( "14.3l", 0x40000, 0x10000, CRC(b76a517d) SHA1(6dcab31ecc127c2fdc6912802cddfa62161d83a2) ) - ROM_LOAD( "15.5l", 0x50000, 0x10000, CRC(8ff5ee7a) SHA1(c8f4d374a43fcc818378c4e73af2c03238a93ad0) ) - ROM_LOAD( "16.6l", 0x60000, 0x10000, CRC(64e5d837) SHA1(030f9704dfdb06cd3ac583b857ce9239e1409f60) ) - ROM_LOAD( "17.7l", 0x70000, 0x10000, CRC(02c1b2c4) SHA1(6e4fe801189766559859eb0d628f3ae65c05ad16) ) - ROM_LOAD( "18.8l", 0x80000, 0x10000, CRC(f5a8370e) SHA1(b270af116ee15b5de048fc218215bf91a2ce6b46) ) - ROM_LOAD( "19.10l", 0x90000, 0x10000, CRC(7a9b7671) SHA1(ddb9b412b494f2f259c56a163e5511353cf4ebb5) ) - ROM_LOAD( "20.11l", 0xa0000, 0x10000, CRC(7fb396ad) SHA1(b245bb9a6a4c1ec518906c59c3a3da5e412369ab) ) - ROM_LOAD( "21.12l", 0xb0000, 0x10000, CRC(fb83c652) SHA1(3d124e5c751732e8055bbb7b6853b6e64435a85d) ) - ROM_LOAD( "22.13l", 0xc0000, 0x10000, CRC(d8b689e9) SHA1(14db7ba2246f12db9b6b5b4dcb4a648e4a65ace4) ) - ROM_LOAD( "23.14l", 0xd0000, 0x10000, CRC(e6611947) SHA1(9267dad097b318174706d51fb94d613208b04f60) ) - ROM_LOAD( "11.6j", 0xe0000, 0x10000, CRC(473b349a) SHA1(9f5d08e07c8175bc7ec3854499177af2c398bd76) ) - ROM_LOAD( "10.5j", 0xf0000, 0x10000, CRC(d9a60285) SHA1(f8ef211e022e9c8ea25f6d8fb16266867656a591) ) - - ROM_REGION( 0x40000, "m72", 0 ) // samples - ROM_LOAD( "2.7b", 0x00000, 0x10000, CRC(92f0093d) SHA1(530b924aa991283045577d03524dfc7eacf1be49) ) - ROM_LOAD( "3.6c", 0x10000, 0x10000, CRC(116a049c) SHA1(656c0d1d7f945c5f5637892721a58421b682fd01) ) - ROM_LOAD( "4.7c", 0x20000, 0x10000, CRC(6840692b) SHA1(f6f7b063ecf7206e172843515be38376f8845b42) ) - ROM_LOAD( "5.9c", 0x30000, 0x10000, CRC(92ffe22a) SHA1(19dcaf6e25bb7498d4ab19fa0a63f3326b9bff8f) ) - - ROM_REGION( 0x600, "plds", 0 ) - ROM_LOAD( "1.1f", 0x000, 0x104, NO_DUMP ) // TIBPAL16R4 - ROM_LOAD( "2.6e", 0x200, 0x104, NO_DUMP ) // TIBPAL16L8 - ROM_LOAD( "3.14f", 0x400, 0x104, NO_DUMP ) // TIBPAL16L8 -ROM_END - -ROM_START( sichuan2a ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "sichuan.a6", 0x00000, 0x10000, CRC(f8ac05ef) SHA1(cd20e5239d73264f1323ba6b1e35934685852ba1) ) - ROM_LOAD( "ic07.03", 0x10000, 0x10000, CRC(0350f6e2) SHA1(c683571969c0e4c66eb316a1bc580759db02bbfc) ) - - ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "ic01.01", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) - - ROM_REGION( 0x100000, "tiles", 0 ) - ROM_LOAD( "ic08.04", 0x00000, 0x10000, CRC(1c0e221c) SHA1(87561f7dabf25309be784e797ac237aa3956ea1c) ) - ROM_LOAD( "ic09.05", 0x10000, 0x10000, CRC(8a7d8284) SHA1(56b5d352b506c5bfab24102b11c877dd28c8ad36) ) - ROM_LOAD( "ic12.08", 0x20000, 0x10000, CRC(48e1d043) SHA1(4fbd409aff593c0b27fc58c218a470adf48ee0b7) ) - ROM_LOAD( "ic13.09", 0x30000, 0x10000, CRC(3feff3f2) SHA1(2e87e4fb158379486de5d13feff5bf1965690e14) ) - ROM_LOAD( "ic14.10", 0x40000, 0x10000, CRC(b76a517d) SHA1(6dcab31ecc127c2fdc6912802cddfa62161d83a2) ) - ROM_LOAD( "ic15.11", 0x50000, 0x10000, CRC(8ff5ee7a) SHA1(c8f4d374a43fcc818378c4e73af2c03238a93ad0) ) - ROM_LOAD( "ic16.12", 0x60000, 0x10000, CRC(64e5d837) SHA1(030f9704dfdb06cd3ac583b857ce9239e1409f60) ) - ROM_LOAD( "ic17.13", 0x70000, 0x10000, CRC(02c1b2c4) SHA1(6e4fe801189766559859eb0d628f3ae65c05ad16) ) - ROM_LOAD( "ic18.14", 0x80000, 0x10000, CRC(f5a8370e) SHA1(b270af116ee15b5de048fc218215bf91a2ce6b46) ) - ROM_LOAD( "ic19.15", 0x90000, 0x10000, CRC(7a9b7671) SHA1(ddb9b412b494f2f259c56a163e5511353cf4ebb5) ) - ROM_LOAD( "ic20.16", 0xa0000, 0x10000, CRC(7fb396ad) SHA1(b245bb9a6a4c1ec518906c59c3a3da5e412369ab) ) - ROM_LOAD( "ic21.17", 0xb0000, 0x10000, CRC(fb83c652) SHA1(3d124e5c751732e8055bbb7b6853b6e64435a85d) ) - ROM_LOAD( "ic22.18", 0xc0000, 0x10000, CRC(d8b689e9) SHA1(14db7ba2246f12db9b6b5b4dcb4a648e4a65ace4) ) - ROM_LOAD( "ic23.19", 0xd0000, 0x10000, CRC(e6611947) SHA1(9267dad097b318174706d51fb94d613208b04f60) ) - ROM_LOAD( "ic10.06", 0xe0000, 0x10000, CRC(473b349a) SHA1(9f5d08e07c8175bc7ec3854499177af2c398bd76) ) - ROM_LOAD( "ic11.07", 0xf0000, 0x10000, CRC(d9a60285) SHA1(f8ef211e022e9c8ea25f6d8fb16266867656a591) ) - - ROM_REGION( 0x40000, "m72", 0 ) // samples - ROM_LOAD( "ic02.02", 0x00000, 0x10000, CRC(92f0093d) SHA1(530b924aa991283045577d03524dfc7eacf1be49) ) - ROM_LOAD( "ic03.03", 0x10000, 0x10000, CRC(116a049c) SHA1(656c0d1d7f945c5f5637892721a58421b682fd01) ) - ROM_LOAD( "ic04.04", 0x20000, 0x10000, CRC(6840692b) SHA1(f6f7b063ecf7206e172843515be38376f8845b42) ) - ROM_LOAD( "ic05.05", 0x30000, 0x10000, CRC(92ffe22a) SHA1(19dcaf6e25bb7498d4ab19fa0a63f3326b9bff8f) ) -ROM_END - -ROM_START( shisen ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "a-27-a.rom", 0x00000, 0x20000, CRC(de2ecf05) SHA1(7256c5587f92db10a52c43001e3236f3be3df5df) ) - - ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "ic01.01", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) - - ROM_REGION( 0x100000, "tiles", 0 ) - ROM_LOAD( "ic08.04", 0x00000, 0x10000, CRC(1c0e221c) SHA1(87561f7dabf25309be784e797ac237aa3956ea1c) ) - ROM_LOAD( "ic09.05", 0x10000, 0x10000, CRC(8a7d8284) SHA1(56b5d352b506c5bfab24102b11c877dd28c8ad36) ) - ROM_LOAD( "ic12.08", 0x20000, 0x10000, CRC(48e1d043) SHA1(4fbd409aff593c0b27fc58c218a470adf48ee0b7) ) - ROM_LOAD( "ic13.09", 0x30000, 0x10000, CRC(3feff3f2) SHA1(2e87e4fb158379486de5d13feff5bf1965690e14) ) - ROM_LOAD( "ic14.10", 0x40000, 0x10000, CRC(b76a517d) SHA1(6dcab31ecc127c2fdc6912802cddfa62161d83a2) ) - ROM_LOAD( "ic15.11", 0x50000, 0x10000, CRC(8ff5ee7a) SHA1(c8f4d374a43fcc818378c4e73af2c03238a93ad0) ) - ROM_LOAD( "ic16.12", 0x60000, 0x10000, CRC(64e5d837) SHA1(030f9704dfdb06cd3ac583b857ce9239e1409f60) ) - ROM_LOAD( "ic17.13", 0x70000, 0x10000, CRC(02c1b2c4) SHA1(6e4fe801189766559859eb0d628f3ae65c05ad16) ) - ROM_LOAD( "ic18.14", 0x80000, 0x10000, CRC(f5a8370e) SHA1(b270af116ee15b5de048fc218215bf91a2ce6b46) ) - ROM_LOAD( "ic19.15", 0x90000, 0x10000, CRC(7a9b7671) SHA1(ddb9b412b494f2f259c56a163e5511353cf4ebb5) ) - ROM_LOAD( "ic20.16", 0xa0000, 0x10000, CRC(7fb396ad) SHA1(b245bb9a6a4c1ec518906c59c3a3da5e412369ab) ) - ROM_LOAD( "ic21.17", 0xb0000, 0x10000, CRC(fb83c652) SHA1(3d124e5c751732e8055bbb7b6853b6e64435a85d) ) - ROM_LOAD( "ic22.18", 0xc0000, 0x10000, CRC(d8b689e9) SHA1(14db7ba2246f12db9b6b5b4dcb4a648e4a65ace4) ) - ROM_LOAD( "ic23.19", 0xd0000, 0x10000, CRC(e6611947) SHA1(9267dad097b318174706d51fb94d613208b04f60) ) - ROM_LOAD( "ic10.06", 0xe0000, 0x10000, CRC(473b349a) SHA1(9f5d08e07c8175bc7ec3854499177af2c398bd76) ) - ROM_LOAD( "ic11.07", 0xf0000, 0x10000, CRC(d9a60285) SHA1(f8ef211e022e9c8ea25f6d8fb16266867656a591) ) - - ROM_REGION( 0x40000, "m72", 0 ) // samples - ROM_LOAD( "ic02.02", 0x00000, 0x10000, CRC(92f0093d) SHA1(530b924aa991283045577d03524dfc7eacf1be49) ) - ROM_LOAD( "ic03.03", 0x10000, 0x10000, CRC(116a049c) SHA1(656c0d1d7f945c5f5637892721a58421b682fd01) ) - ROM_LOAD( "ic04.04", 0x20000, 0x10000, CRC(6840692b) SHA1(f6f7b063ecf7206e172843515be38376f8845b42) ) - ROM_LOAD( "ic05.05", 0x30000, 0x10000, CRC(92ffe22a) SHA1(19dcaf6e25bb7498d4ab19fa0a63f3326b9bff8f) ) -ROM_END - - -/* -Match It -Tamtex, 1989 - - -CPU : Z80A -SOUND : Z80A, YM2151, YM3012, LM324, GL4558 -DIPSW : 8 position (x2) -XTAL : 3.579545MHz, 24.000MHz -RAM : GM76C88-12D (=6264, x3), 6116 (x3) -PROMs : None -PALs : PAL16L8 (x3) - -ROMs : (All ROMs type 27C512) - -1.2C Sound Program - -2.11D \ -3.11C / Main Program - -4.3J \ -5.4J | -6.5J | -7.6J | -8.1L | -9.2L | -10.3L | -11.5L | GFX -12.6L | -13.7L | -14.8L | -15.10L | -16.11L | -17.12L | -18.13L | -19.14L / -*/ - -ROM_START( matchit ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "2.11d", 0x00000, 0x10000, CRC(299815f7) SHA1(dd25f69d3c825e12e5c2e24b5bbfda9c39400345) ) - ROM_LOAD( "ic07.03", 0x10000, 0x10000, CRC(0350f6e2) SHA1(c683571969c0e4c66eb316a1bc580759db02bbfc) ) - - ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "ic01.01", 0x00000, 0x10000, CRC(51b0a26c) SHA1(af2482cfe8d395848c8e1bf07bf1049ffc6ee69b) ) - - ROM_REGION( 0x100000, "tiles", 0 ) - ROM_LOAD( "ic08.04", 0x00000, 0x10000, CRC(1c0e221c) SHA1(87561f7dabf25309be784e797ac237aa3956ea1c) ) - ROM_LOAD( "ic09.05", 0x10000, 0x10000, CRC(8a7d8284) SHA1(56b5d352b506c5bfab24102b11c877dd28c8ad36) ) - ROM_LOAD( "ic12.08", 0x20000, 0x10000, CRC(48e1d043) SHA1(4fbd409aff593c0b27fc58c218a470adf48ee0b7) ) - ROM_LOAD( "ic13.09", 0x30000, 0x10000, CRC(3feff3f2) SHA1(2e87e4fb158379486de5d13feff5bf1965690e14) ) - ROM_LOAD( "ic14.10", 0x40000, 0x10000, CRC(b76a517d) SHA1(6dcab31ecc127c2fdc6912802cddfa62161d83a2) ) - ROM_LOAD( "ic15.11", 0x50000, 0x10000, CRC(8ff5ee7a) SHA1(c8f4d374a43fcc818378c4e73af2c03238a93ad0) ) - ROM_LOAD( "ic16.12", 0x60000, 0x10000, CRC(64e5d837) SHA1(030f9704dfdb06cd3ac583b857ce9239e1409f60) ) - ROM_LOAD( "ic17.13", 0x70000, 0x10000, CRC(02c1b2c4) SHA1(6e4fe801189766559859eb0d628f3ae65c05ad16) ) - ROM_LOAD( "ic18.14", 0x80000, 0x10000, CRC(f5a8370e) SHA1(b270af116ee15b5de048fc218215bf91a2ce6b46) ) - ROM_LOAD( "ic19.15", 0x90000, 0x10000, CRC(7a9b7671) SHA1(ddb9b412b494f2f259c56a163e5511353cf4ebb5) ) - ROM_LOAD( "ic20.16", 0xa0000, 0x10000, CRC(7fb396ad) SHA1(b245bb9a6a4c1ec518906c59c3a3da5e412369ab) ) - ROM_LOAD( "ic21.17", 0xb0000, 0x10000, CRC(fb83c652) SHA1(3d124e5c751732e8055bbb7b6853b6e64435a85d) ) - ROM_LOAD( "ic22.18", 0xc0000, 0x10000, CRC(d8b689e9) SHA1(14db7ba2246f12db9b6b5b4dcb4a648e4a65ace4) ) - ROM_LOAD( "ic23.19", 0xd0000, 0x10000, CRC(e6611947) SHA1(9267dad097b318174706d51fb94d613208b04f60) ) - ROM_LOAD( "ic10.06", 0xe0000, 0x10000, CRC(473b349a) SHA1(9f5d08e07c8175bc7ec3854499177af2c398bd76) ) - ROM_LOAD( "ic11.07", 0xf0000, 0x10000, CRC(d9a60285) SHA1(f8ef211e022e9c8ea25f6d8fb16266867656a591) ) - - ROM_REGION( 0x40000, "m72", ROMREGION_ERASE00 ) // samples - // no samples on this board -ROM_END - -} // anonymous namespace - - -GAME( 1989, matchit, 0, shisen, matchit, shisen_state, empty_init, ROT0, "Tamtex", "Match It", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, shisen, matchit, shisen, shisen, shisen_state, empty_init, ROT0, "Tamtex", "Shisensho - Joshiryo-Hen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, sichuan2, matchit, shisen, shisen, shisen_state, empty_init, ROT0, "hack", "Sichuan II (hack, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, sichuan2a,matchit, shisen, shisen, shisen_state, empty_init, ROT0, "hack", "Sichuan II (hack, set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index fdc1e617c0d..6d47d7e0509 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -21340,6 +21340,14 @@ xmultiplm72 // (c) 1989 (Japan) @source:irem/m78.cpp bj92 +@source:irem/m80.cpp +matchit // (c) 1989 Tamtex +matchitb // bootleg +shisen // (c) 1989 Tamtex +shisena // (c) 1989 Tamtex +sichuan2 // bootleg +sichuan2a // bootleg + @source:irem/m90.cpp atompunk // (c) 1991 Irem America (licensed from Hudson Soft) bbmanw // (c) 1992 Irem (World) @@ -21425,12 +21433,6 @@ panther // M27 no copyright notice redalert // M27 (c) 1981 + "GDI presents" ww3 // M27 (c) 1981 -@source:irem/shisen.cpp -matchit // (c) 1989 Tamtex -shisen // (c) 1989 Tamtex -sichuan2 // (c) 1989 Tamtex -sichuan2a // (c) 1989 Tamtex - @source:irem/spartanxtec.cpp spartanxtec