wpc_flip1: drived from wpc_dot, gets The Addams Family running.

This commit is contained in:
mahlemiut 2013-10-18 01:39:59 +00:00
parent c55689c23e
commit 1ef7e1d270
4 changed files with 262 additions and 130 deletions

1
.gitattributes vendored
View File

@ -4734,6 +4734,7 @@ src/mame/includes/williams.h svneol=native#text/plain
src/mame/includes/wiping.h svneol=native#text/plain
src/mame/includes/wiz.h svneol=native#text/plain
src/mame/includes/wolfpack.h svneol=native#text/plain
src/mame/includes/wpc_pin.h svneol=native#text/plain
src/mame/includes/wrally.h svneol=native#text/plain
src/mame/includes/wwfsstar.h svneol=native#text/plain
src/mame/includes/xain.h svneol=native#text/plain

View File

@ -1,74 +1,7 @@
#include "emu.h"
#include "cpu/m6809/m6809.h"
#include "audio/wpcsnd.h"
#include "machine/wpc.h"
#include "rendlay.h"
/* Williams WPC Dot Matrix */
class wpc_dot_state : public driver_device
{
public:
wpc_dot_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_wpcsnd(*this,"wpcsnd"),
m_wpc(*this,"wpc"),
m_cpubank(*this, "cpubank"),
m_fixedbank(*this, "fixedbank"),
m_dmdbank1(*this, "dmdbank1"),
m_dmdbank2(*this, "dmdbank2"),
m_dmdbank3(*this, "dmdbank3"),
m_dmdbank4(*this, "dmdbank4"),
m_dmdbank5(*this, "dmdbank5"),
m_dmdbank6(*this, "dmdbank6")
{ }
protected:
// devices
required_device<cpu_device> m_maincpu;
required_device<wpcsnd_device> m_wpcsnd;
required_device<wpc_device> m_wpc;
required_memory_bank m_cpubank;
required_memory_bank m_fixedbank;
required_memory_bank m_dmdbank1;
required_memory_bank m_dmdbank2;
required_memory_bank m_dmdbank3;
required_memory_bank m_dmdbank4;
required_memory_bank m_dmdbank5;
required_memory_bank m_dmdbank6;
// driver_device overrides
virtual void machine_reset();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
static const device_timer_id TIMER_VBLANK = 0;
static const device_timer_id TIMER_IRQ = 1;
public:
DECLARE_DRIVER_INIT(wpc_dot);
DECLARE_READ8_MEMBER(ram_r);
DECLARE_WRITE8_MEMBER(ram_w);
DECLARE_WRITE_LINE_MEMBER(wpcsnd_reply_w);
DECLARE_WRITE_LINE_MEMBER(wpc_irq_w);
DECLARE_WRITE_LINE_MEMBER(wpc_firq_w);
DECLARE_READ8_MEMBER(wpc_sound_ctrl_r);
DECLARE_WRITE8_MEMBER(wpc_sound_ctrl_w);
DECLARE_READ8_MEMBER(wpc_sound_data_r);
DECLARE_WRITE8_MEMBER(wpc_sound_data_w);
DECLARE_WRITE8_MEMBER(wpc_sound_s11_w);
DECLARE_WRITE8_MEMBER(wpc_rombank_w);
DECLARE_WRITE8_MEMBER(wpc_dmdbank_w);
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
private:
UINT16 m_vblank_count;
UINT32 m_irq_count;
UINT8 m_bankmask;
UINT8 m_ram[0x3000];
UINT8 m_dmdram[0x2000];
emu_timer* m_vblank_timer;
emu_timer* m_irq_timer;
};
#include "includes/wpc_pin.h"
static ADDRESS_MAP_START( wpc_dot_map, AS_PROGRAM, 8, wpc_dot_state )

View File

@ -1,46 +1,170 @@
#include "emu.h"
#include "cpu/m6809/m6809.h"
/* Williams WPC Fliptronics I */
class wpc_flip1_state : public driver_device
{
public:
wpc_flip1_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
{ }
protected:
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
virtual void machine_reset();
public:
DECLARE_DRIVER_INIT(wpc_flip1);
};
#include "includes/wpc_pin.h"
static ADDRESS_MAP_START( wpc_flip1_map, AS_PROGRAM, 8, wpc_flip1_state )
AM_RANGE(0x0000, 0xffff) AM_NOP
AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w)
AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmdbank1")
AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmdbank2")
AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmdbank3")
AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmdbank4")
AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmdbank5")
AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmdbank6")
AM_RANGE(0x3c00, 0x3faf) AM_RAM
AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank")
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixedbank")
ADDRESS_MAP_END
static INPUT_PORTS_START( wpc_flip1 )
INPUT_PORTS_END
PORT_START("INP0")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
void wpc_flip1_state::machine_reset()
{
}
PORT_START("INP1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LSHIFT) // left flipper
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RSHIFT) // right flipper
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD)
PORT_START("INP2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) // always closed
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K)
PORT_START("INP4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
PORT_START("INP8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
PORT_START("INP10")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN)
PORT_START("INP20")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O)
PORT_START("INP40")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LALT)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_0_PAD)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("INP80")
PORT_BIT( 0xff, 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_COIN3 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service / Escape") PORT_CODE(KEYCODE_DEL_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CODE(KEYCODE_MINUS_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_VOLUME_UP ) PORT_CODE(KEYCODE_PLUS_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Begin Test / Enter") PORT_CODE(KEYCODE_ENTER_PAD)
PORT_START("DIPS")
PORT_DIPNAME(0x01,0x01,"Switch 1") PORT_DIPLOCATION("SWA:1")
PORT_DIPSETTING(0x00,DEF_STR( Off ))
PORT_DIPSETTING(0x01,DEF_STR( On ))
PORT_DIPNAME(0x02,0x02,"Switch 2") PORT_DIPLOCATION("SWA:2")
PORT_DIPSETTING(0x00,DEF_STR( Off ))
PORT_DIPSETTING(0x02,DEF_STR( On ))
PORT_DIPNAME(0x04,0x00,"W20") PORT_DIPLOCATION("SWA:3")
PORT_DIPSETTING(0x00,DEF_STR( Off ))
PORT_DIPSETTING(0x04,DEF_STR( On ))
PORT_DIPNAME(0x08,0x00,"W19") PORT_DIPLOCATION("SWA:4")
PORT_DIPSETTING(0x00,DEF_STR( Off ))
PORT_DIPSETTING(0x08,DEF_STR( On ))
PORT_DIPNAME(0xf0,0x00,"Country") PORT_DIPLOCATION("SWA:5,6,7,8")
PORT_DIPSETTING(0x00,"USA 1")
PORT_DIPSETTING(0x10,"France 1")
PORT_DIPSETTING(0x20,"Germany")
PORT_DIPSETTING(0x30,"France 2")
PORT_DIPSETTING(0x40,"Unknown 1")
PORT_DIPSETTING(0x50,"Unknown 2")
PORT_DIPSETTING(0x60,"Unknown 3")
PORT_DIPSETTING(0x70,"Unknown 4")
PORT_DIPSETTING(0x80,"Export 1")
PORT_DIPSETTING(0x90,"France 3")
PORT_DIPSETTING(0xa0,"Export 2")
PORT_DIPSETTING(0xb0,"France 4")
PORT_DIPSETTING(0xc0,"UK")
PORT_DIPSETTING(0xd0,"Europe")
PORT_DIPSETTING(0xe0,"Spain")
PORT_DIPSETTING(0xf0,"USA 2")
INPUT_PORTS_END
DRIVER_INIT_MEMBER(wpc_flip1_state,wpc_flip1)
{
wpc_dot_state::init_wpc_dot();
}
static MACHINE_CONFIG_START( wpc_flip1, wpc_flip1_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809, 2000000)
MCFG_CPU_PROGRAM_MAP(wpc_flip1_map)
MCFG_WMS_WPC_ADD("wpc")
MCFG_WPC_IRQ_ACKNOWLEDGE(WRITELINE(wpc_dot_state,wpc_irq_w))
MCFG_WPC_FIRQ_ACKNOWLEDGE(WRITELINE(wpc_dot_state,wpc_firq_w))
MCFG_WPC_ROMBANK(WRITE8(wpc_dot_state,wpc_rombank_w))
MCFG_WPC_SOUND_CTRL(READ8(wpc_dot_state,wpc_sound_ctrl_r),WRITE8(wpc_dot_state,wpc_sound_ctrl_w))
MCFG_WPC_SOUND_DATA(READ8(wpc_dot_state,wpc_sound_data_r),WRITE8(wpc_dot_state,wpc_sound_data_w))
MCFG_WPC_DMDBANK(WRITE8(wpc_dot_state,wpc_dmdbank_w))
MCFG_WMS_WPC_SOUND_ADD("wpcsnd",":sound1")
MCFG_WPC_SOUND_REPLY_CALLBACK(WRITELINE(wpc_dot_state,wpcsnd_reply_w))
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(128, 32)
MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 32-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_UPDATE_DRIVER(wpc_dot_state, screen_update)
MACHINE_CONFIG_END
/*-----------------
@ -48,92 +172,74 @@ MACHINE_CONFIG_END
/------------------*/
ROM_START(taf_p2)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x40000, "user2", 0)
ROM_REGION(0x40000, "code", 0)
ROM_LOAD("addam_p2.rom", 0x00000, 0x40000, CRC(eabf0e72) SHA1(5b84d0315702b39b90beb6a92fb7ad9aba7e620c))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("afsnd_p2.rom", 0x000000, 0x80000, CRC(73d19698) SHA1(d14a6ea36a93db185a599a7810dfbef2deb0adc0))
ROM_LOAD("afsnd_p2.rom", 0x100000, 0x80000, CRC(73d19698) SHA1(d14a6ea36a93db185a599a7810dfbef2deb0adc0))
ROM_END
ROM_START(taf_l1)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x40000, "user2", 0)
ROM_REGION(0x40000, "code", 0)
ROM_LOAD("addam_l1.rom", 0x00000, 0x40000, CRC(db287bf7) SHA1(51574c7c04d85aa816a0bc6e9db74f2d2b407525))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
ROM_START(taf_l2)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x40000, "user2", 0)
ROM_REGION(0x40000, "code", 0)
ROM_LOAD("addam_l2.rom", 0x00000, 0x40000, CRC(952bfc92) SHA1(d95b4b9e6c496a9ce4ceb1aa368c862b2beeffd9))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
ROM_START(taf_l3)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x40000, "user2", 0)
ROM_REGION(0x40000, "code", 0)
ROM_LOAD("addam_l3.rom", 0x00000, 0x40000, CRC(d428a760) SHA1(29afee7b1ae64d7a41faf813cdfa1ab7cef1f247))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
ROM_START(taf_l4)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x40000, "user2", 0)
ROM_REGION(0x40000, "code", 0)
ROM_LOAD("addam_l4.rom", 0x00000, 0x40000, CRC(ea29935f) SHA1(9f711396728026546c8bd1f69a0833d15e02c192))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
ROM_START(taf_l7)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "user2", 0)
ROM_REGION(0x80000, "code", 0)
ROM_LOAD("addam_l7.rom", 0x00000, 0x80000, CRC(4401b43a) SHA1(64e9678334cc900d1f44b95d25bb90c1fff566f8))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
ROM_START(taf_l5)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "user2", 0)
ROM_REGION(0x80000, "code", 0)
ROM_LOAD("addam_l5.rom", 0x00000, 0x80000, CRC(4c071564) SHA1(d643506db1b3ba1ea20f34ddb38837df379fb5ab))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
ROM_START(taf_l6)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "user2", 0)
ROM_REGION(0x80000, "code", 0)
ROM_LOAD("taf_l6.u6", 0x00000, 0x80000, CRC(06b37e65) SHA1(ce6f9cc45df08f50f5ece2a4c9376ecf67b0466a))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
ROM_START(taf_h4)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x2000, "user1", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "user2", 0)
ROM_REGION(0x80000, "code", 0)
ROM_LOAD("addam_h4.rom", 0x00000, 0x80000, CRC(d0bbd679) SHA1(ebd8c4981dd68a4f8e2dea90144486cb3cbd6b84))
ROM_REGION(0x010000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x180000, "sound1", 0)
ROM_LOAD("tafu18l1.rom", 0x000000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_LOAD("tafu18l1.rom", 0x100000, 0x80000, CRC(131ae471) SHA1(5ed03b521dfef56cbb99814539d4c74da4216f67))
ROM_END
/*--------------

View File

@ -0,0 +1,92 @@
/*
* wpc_pin.h
*
* Created on: 18/10/2013
* Author: bsr
*/
#ifndef WPC_PIN_H_
#define WPC_PIN_H_
#include "emu.h"
#include "cpu/m6809/m6809.h"
#include "audio/wpcsnd.h"
#include "machine/wpc.h"
#include "rendlay.h"
class wpc_dot_state : public driver_device
{
public:
wpc_dot_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_wpcsnd(*this,"wpcsnd"),
m_wpc(*this,"wpc"),
m_cpubank(*this, "cpubank"),
m_fixedbank(*this, "fixedbank"),
m_dmdbank1(*this, "dmdbank1"),
m_dmdbank2(*this, "dmdbank2"),
m_dmdbank3(*this, "dmdbank3"),
m_dmdbank4(*this, "dmdbank4"),
m_dmdbank5(*this, "dmdbank5"),
m_dmdbank6(*this, "dmdbank6")
{ }
protected:
// devices
required_device<cpu_device> m_maincpu;
required_device<wpcsnd_device> m_wpcsnd;
required_device<wpc_device> m_wpc;
required_memory_bank m_cpubank;
required_memory_bank m_fixedbank;
required_memory_bank m_dmdbank1;
required_memory_bank m_dmdbank2;
required_memory_bank m_dmdbank3;
required_memory_bank m_dmdbank4;
required_memory_bank m_dmdbank5;
required_memory_bank m_dmdbank6;
// driver_device overrides
virtual void machine_reset();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
static const device_timer_id TIMER_VBLANK = 0;
static const device_timer_id TIMER_IRQ = 1;
public:
DECLARE_DRIVER_INIT(wpc_dot);
DECLARE_READ8_MEMBER(ram_r);
DECLARE_WRITE8_MEMBER(ram_w);
DECLARE_WRITE_LINE_MEMBER(wpcsnd_reply_w);
DECLARE_WRITE_LINE_MEMBER(wpc_irq_w);
DECLARE_WRITE_LINE_MEMBER(wpc_firq_w);
DECLARE_READ8_MEMBER(wpc_sound_ctrl_r);
DECLARE_WRITE8_MEMBER(wpc_sound_ctrl_w);
DECLARE_READ8_MEMBER(wpc_sound_data_r);
DECLARE_WRITE8_MEMBER(wpc_sound_data_w);
DECLARE_WRITE8_MEMBER(wpc_sound_s11_w);
DECLARE_WRITE8_MEMBER(wpc_rombank_w);
DECLARE_WRITE8_MEMBER(wpc_dmdbank_w);
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
private:
UINT16 m_vblank_count;
UINT32 m_irq_count;
UINT8 m_bankmask;
UINT8 m_ram[0x3000];
UINT8 m_dmdram[0x2000];
emu_timer* m_vblank_timer;
emu_timer* m_irq_timer;
};
class wpc_flip1_state : public wpc_dot_state
{
public:
wpc_flip1_state(const machine_config &mconfig, device_type type, const char *tag)
: wpc_dot_state(mconfig, type, tag)
{ }
public:
DECLARE_DRIVER_INIT(wpc_flip1);
};
#endif /* WPC_PIN_H_ */