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
This commit is contained in:
Ivan Vangelista 2024-06-19 06:55:07 +02:00
parent 52b7417a1b
commit 04aa53359e
3 changed files with 645 additions and 564 deletions

637
src/mame/irem/m80.cpp Normal file
View File

@ -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<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_device<m72_audio_device> m_audio;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr<uint8_t> m_paletteram;
required_shared_ptr<uint8_t> 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 )

View File

@ -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<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_device<m72_audio_device> m_audio;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr<uint8_t> m_paletteram;
required_shared_ptr<uint8_t> 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 )

View File

@ -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