diff options
Diffstat (limited to 'src/mame/drivers/metlclsh.cpp')
-rw-r--r-- | src/mame/drivers/metlclsh.cpp | 419 |
1 files changed, 0 insertions, 419 deletions
diff --git a/src/mame/drivers/metlclsh.cpp b/src/mame/drivers/metlclsh.cpp deleted file mode 100644 index 0e0dacd199f..00000000000 --- a/src/mame/drivers/metlclsh.cpp +++ /dev/null @@ -1,419 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Luca Elia -/*************************************************************************** - - -= Metal Clash =- - - driver by Luca Elia, based on brkthru.c by Phil Stroffolino - - -CPUs : 2 x 6809 -Sound : YM2203 + YM3526 -Video : TC15G008AP + TC15G032CY (TOSHIBA) - ---------------------------------------------------------------------------- -Year + Game Boards ---------------------------------------------------------------------------- -85 Metal Clash DE-0212-1 & DE-0213-1 ---------------------------------------------------------------------------- - -Notes: - -- Similar hardware to that in brkthru.c -- Screenshots here: www.ne.jp/asahi/cc-sakura/akkun/bekkan/metal.html - -To Do: - -metlclsh: -- Clocks are all unknown -- Text on the title screen has wrong colors the first time around - (unitialized foreground palette 1, will be initialized shortly) -- The background tilemap ram is bankswitched with other (not understood) ram -- There are a few unknown writes - -***************************************************************************/ - -#include "emu.h" -#include "includes/metlclsh.h" - -#include "cpu/m6809/m6809.h" -#include "sound/ym2203.h" -#include "sound/ym3526.h" -#include "screen.h" -#include "speaker.h" - - -/*************************************************************************** - - Memory Maps - CPU #1 - -***************************************************************************/ - -void metlclsh_state::metlclsh_cause_irq(uint8_t data) -{ - m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); -} - -void metlclsh_state::metlclsh_ack_nmi(uint8_t data) -{ - m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); -} - -void metlclsh_state::metlclsh_master_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); - map(0x8000, 0x9fff).ram().share("share1"); - map(0xa000, 0xbfff).rom(); - map(0xc000, 0xc000).portr("IN0"); - map(0xc001, 0xc001).portr("IN1"); - map(0xc002, 0xc002).portr("IN2"); - map(0xc003, 0xc003).portr("DSW"); - map(0xc080, 0xc080).nopw(); // ? 0 - map(0xc0c2, 0xc0c2).w(FUNC(metlclsh_state::metlclsh_cause_irq)); // cause irq on cpu #2 - map(0xc0c3, 0xc0c3).w(FUNC(metlclsh_state::metlclsh_ack_nmi)); // nmi ack -/**/map(0xc800, 0xc82f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); -/**/map(0xcc00, 0xcc2f).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); - map(0xd000, 0xd001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); -/**/map(0xd800, 0xdfff).ram().w(FUNC(metlclsh_state::metlclsh_fgram_w)).share("fgram"); - map(0xe000, 0xe001).w("ym2", FUNC(ym3526_device::write)); - map(0xe800, 0xe9ff).ram().share("spriteram"); - map(0xfff0, 0xffff).rom(); // Reset/IRQ vectors -} - - -/*************************************************************************** - - Memory Maps - CPU #2 - -***************************************************************************/ - -void metlclsh_state::metlclsh_cause_nmi2(uint8_t data) -{ - m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); -} - -void metlclsh_state::metlclsh_ack_irq2(uint8_t data) -{ - m_subcpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); -} - -void metlclsh_state::metlclsh_ack_nmi2(uint8_t data) -{ - m_subcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); -} - -void metlclsh_state::metlclsh_flipscreen_w(uint8_t data) -{ - flip_screen_set(data & 1); -} - -void metlclsh_state::metlclsh_slave_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); - map(0x8000, 0x9fff).ram().share("share1"); - map(0xc000, 0xc000).portr("IN0").w(FUNC(metlclsh_state::metlclsh_gfxbank_w)); // bg tiles bank - map(0xc001, 0xc001).portr("IN1"); - map(0xc002, 0xc002).portr("IN2"); - map(0xc003, 0xc003).portr("DSW"); - map(0xc0c0, 0xc0c0).w(FUNC(metlclsh_state::metlclsh_cause_nmi2)); // cause nmi on cpu #1 - map(0xc0c1, 0xc0c1).w(FUNC(metlclsh_state::metlclsh_ack_irq2)); // irq ack - map(0xd000, 0xd7ff).bankr("rambank").w(FUNC(metlclsh_state::metlclsh_bgram_w)).share("bgram"); // this is banked - map(0xe301, 0xe301).w(FUNC(metlclsh_state::metlclsh_flipscreen_w)); // 0/1 - map(0xe401, 0xe401).w(FUNC(metlclsh_state::metlclsh_rambank_w)); - map(0xe402, 0xe403).writeonly().share("scrollx"); -// map(0xe404, 0xe404).nopw(); // ? 0 -// map(0xe410, 0xe410).nopw(); // ? 0 on startup only - map(0xe417, 0xe417).w(FUNC(metlclsh_state::metlclsh_ack_nmi2)); // nmi ack - map(0xfff0, 0xffff).rom(); // Reset/IRQ vectors -} - - -/*************************************************************************** - - Input Ports - -***************************************************************************/ - - -INPUT_CHANGED_MEMBER(metlclsh_state::coin_inserted) -{ - if (oldval) - m_subcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); -} - -static INPUT_PORTS_START( metlclsh ) - PORT_START("IN0") /* c000 */ - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "Infinite Energy (Cheat)") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Infinite Lives (Cheat)") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("IN1") /* c001 */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - - PORT_START("IN2") /* c002 */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) 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_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, metlclsh_state,coin_inserted, 0) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, metlclsh_state,coin_inserted, 0) - - PORT_START("DSW") /* c003 */ - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "2" ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPNAME( 0x02, 0x02, "Enemies Speed" ) - PORT_DIPSETTING( 0x02, DEF_STR( Low ) ) - PORT_DIPSETTING( 0x00, DEF_STR( High ) ) - PORT_DIPNAME( 0x04, 0x04, "Enemies Energy" ) - PORT_DIPSETTING( 0x04, DEF_STR( Low ) ) - PORT_DIPSETTING( 0x00, DEF_STR( High ) ) - PORT_DIPNAME( 0x08, 0x08, "Time" ) - PORT_DIPSETTING( 0x00, "75" ) - PORT_DIPSETTING( 0x08, "90" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // cpu2 will clr c040 on startup forever - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, metlclsh_state,coin_inserted, 0) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") -INPUT_PORTS_END - - -/*************************************************************************** - - Graphics Layouts - -***************************************************************************/ - -static const gfx_layout spritelayout = -{ - 16,16, - RGN_FRAC(1,3), - 3, - { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) }, - { STEP8(8*8*2,1), STEP8(8*8*0,1) }, - { STEP8(8*8*0,8), STEP8(8*8*1,8) }, - 16*16 -}; - -static const gfx_layout tilelayout16 = -{ - 16,16, - RGN_FRAC(1,4), - 3, - { RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) }, - { STEP8(8*8*0+7,-1), STEP8(8*8*2+7,-1) }, - { STEP8(8*8*0,8), STEP8(8*8*1,8) }, - 16*16 -}; - -static const gfx_layout tilelayout8 = -{ - 8,8, - RGN_FRAC(1,2), - 2, - { 0, 4 }, - { STEP4(RGN_FRAC(1,2),1), STEP4(0,1) }, - { STEP8(0,8) }, - 8*8 -}; - -static GFXDECODE_START( gfx_metlclsh ) - GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0x00, 2 ) // [0] Sprites - GFXDECODE_ENTRY( "gfx2", 0, tilelayout16, 0x10, 1 ) // [1] Background - GFXDECODE_ENTRY( "gfx3", 0, tilelayout8, 0x20, 4 ) // [2] Foreground -GFXDECODE_END - - -/*************************************************************************** - - Machine Drivers - -***************************************************************************/ - -void metlclsh_state::machine_start() -{ - save_item(NAME(m_write_mask)); - save_item(NAME(m_gfxbank)); -} - -void metlclsh_state::machine_reset() -{ - flip_screen_set(0); - - m_write_mask = 0; - m_gfxbank = 0; -} - -void metlclsh_state::metlclsh(machine_config &config) -{ - /* basic machine hardware */ - M6809(config, m_maincpu, 1500000); // ? - m_maincpu->set_addrmap(AS_PROGRAM, &metlclsh_state::metlclsh_master_map); - // IRQ by YM3526, NMI by CPU #2 - - M6809(config, m_subcpu, 1500000); // ? - m_subcpu->set_addrmap(AS_PROGRAM, &metlclsh_state::metlclsh_slave_map); - // IRQ by CPU #1, NMI by coin insertion - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(58); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 1*8, 30*8-1); - screen.set_screen_update(FUNC(metlclsh_state::screen_update_metlclsh)); - screen.set_palette(m_palette); - - GFXDECODE(config, m_gfxdecode, m_palette, gfx_metlclsh); - PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 3 * 16); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - - ym2203_device &ym1(YM2203(config, "ym1", 1500000)); - ym1.add_route(0, "mono", 0.10); - ym1.add_route(1, "mono", 0.10); - ym1.add_route(2, "mono", 0.10); - ym1.add_route(3, "mono", 0.50); - - ym3526_device &ym2(YM3526(config, "ym2", 3000000)); - ym2.irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); - ym2.add_route(ALL_OUTPUTS, "mono", 0.50); -} - - -/*************************************************************************** - - ROMs Loading - -***************************************************************************/ - -/*************************************************************************** - -METAL CLASH[DATA EAST] JAPAN (c)1985 -ROM Type:2764,27256 - -Name Size Location --------------------------------- -CS00.BIN 2764 C11 cpu -CS01.BIN 27256 C12 cpu -CS02.BIN 27256 C14 cpu -CS03.BIN 27256 C15 cpu -CS04.BIN 27256 C17 cpu -CS05.BIN 27256 H7 sound - -CS06.BIN 27256 D9 Video -CS07.BIN 27256 D10 Video -CS08.BIN 27256 D12 Video - -TTL-PROM 82S123(Color Table,8bit x 32Byte). -0000:3A 78 79 71 75 74 76 32 -0008:3A 3D 29 21 25 14 16 12 -0010:00 00 00 00 00 00 00 00 -0018:00 00 00 00 00 00 00 00 - -This ROM work at DE-0212-1 & DE-0213-1 - -cpu :6809(MAIN),6809(SOUND) -sound :YM2203,YM3526 -custom:TC15G008AP,TC15G032CY(TOSHIBA) -color :82S123 - -DIP-SW -SW1 -1 Coin CHARGE SELECT 1 -2 Coin CHARGE SELECT 1 -3 Coin CHARGE SELECT 2 -4 Coin CHARGE SELECT 2 -5 DON't CHANGE(for SERVICE ??) -6 ATTRACT SOUND -7 My ROBOT Infinity -8 My ROBOT LEFT not Decriment - -SW2 -1 My ROBOT LEFT 2/3 -2 EMENY SPEED EASY/DIFFICULT -3 EMENY ENERGY EASY/DIFFICULT -4 TIME LONG/DIFFICULT -5 SCREEN CHANGE NORMAL/FLIP -6 none ?? -7 none ?? -8 DON't CHANGE(for SERVICE ??) - -"DARWIN 4078" use TC15G032CY too. - -***************************************************************************/ - -ROM_START( metlclsh ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "cs04.bin", 0x00000, 0x8000, CRC(c2cc79a6) SHA1(0f586d4145afabbb45ea4865ed7a6590b14a2ab0) ) - ROM_LOAD( "cs00.bin", 0x0a000, 0x2000, CRC(af0f2998) SHA1(09dd2516406168660d5cd3a36be1e5f0adbcdb8a) ) - ROM_COPY( "maincpu", 0x7ff0, 0xfff0, 0x10 ) - - ROM_REGION( 0x10000, "sub", 0 ) - ROM_LOAD( "cs03.bin", 0x00000, 0x8000, CRC(51c4720c) SHA1(7fd93bdcf029e7d2509b73b32f61fddf85f3453f) ) - ROM_COPY( "sub", 0x7ff0, 0xfff0, 0x10 ) - - ROM_REGION( 0x18000, "gfx1", 0 ) // Sprites - ROM_LOAD( "cs06.bin", 0x00000, 0x8000, CRC(9f61403f) SHA1(0ebb1cb9d4983746b6b32ec948e7b9efd90783d1) ) - ROM_LOAD( "cs07.bin", 0x08000, 0x8000, CRC(d0610ea5) SHA1(3dfa16cbe93a4c08993111f78a8dd22c874fdd28) ) - ROM_LOAD( "cs08.bin", 0x10000, 0x8000, CRC(a8b02125) SHA1(145a22b2910b2fbfb28925f58968ee2bdeae1dda) ) - - ROM_REGION( 0x10000, "gfx2", 0 ) // Background - ROM_LOAD( "cs01.bin", 0x00000, 0x1000, CRC(9c72343d) SHA1(c5618be7874ab6c930b0e68935c93f1958a1916d) ) - ROM_CONTINUE( 0x04000, 0x1000 ) - ROM_CONTINUE( 0x08000, 0x1000 ) - ROM_CONTINUE( 0x0c000, 0x1000 ) - ROM_CONTINUE( 0x01000, 0x1000 ) - ROM_CONTINUE( 0x05000, 0x1000 ) - ROM_CONTINUE( 0x09000, 0x1000 ) - ROM_CONTINUE( 0x0d000, 0x1000 ) - ROM_LOAD( "cs02.bin", 0x02000, 0x1000, CRC(3674673e) SHA1(8ba8864cefcb79afe5fe6821005a9d19742756e9) ) - ROM_CONTINUE( 0x06000, 0x1000 ) - ROM_CONTINUE( 0x0a000, 0x1000 ) - ROM_CONTINUE( 0x0e000, 0x1000 ) - ROM_CONTINUE( 0x03000, 0x1000 ) - ROM_CONTINUE( 0x07000, 0x1000 ) - ROM_CONTINUE( 0x0b000, 0x1000 ) - ROM_CONTINUE( 0x0f000, 0x1000 ) - - ROM_REGION( 0x04000, "gfx3", 0 ) // Foreground - ROM_LOAD( "cs05.bin", 0x00000, 0x4000, CRC(f90c9c6b) SHA1(ca8e497e9c388078343dd1303beef6ee38748d6a) ) - ROM_CONTINUE( 0x00000, 0x4000 ) // first half is empty - - ROM_REGION( 0x020, "proms", 0 ) // ? - ROM_LOAD( "82s123.prm", 0x0000, 0x20, CRC(6844cc88) SHA1(89d23367aa6ff541205416e82781fe938dfeeb52) ) -ROM_END - -GAME( 1985, metlclsh, 0, metlclsh, metlclsh, metlclsh_state, empty_init, ROT0, "Data East", "Metal Clash (Japan)", MACHINE_SUPPORTS_SAVE ) |