summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-05-21 10:39:32 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-05-21 10:39:32 -0400
commit6ee9c864a867a388ba6b7cf7040673becb4dc34d (patch)
tree292e82a187c72d62b33dc006cbe76198184f5e13
parent3b3ef88bfe7850c63debfb7238a4ca88af9344c0 (diff)
calibr50: Add uPD4701A device
-rw-r--r--src/devices/machine/upd4701.cpp9
-rw-r--r--src/devices/machine/upd4701.h1
-rw-r--r--src/mame/drivers/seta.cpp39
-rw-r--r--src/mame/includes/seta.h1
4 files changed, 23 insertions, 27 deletions
diff --git a/src/devices/machine/upd4701.cpp b/src/devices/machine/upd4701.cpp
index 53d8275b7ee..d5a83cfd0dd 100644
--- a/src/devices/machine/upd4701.cpp
+++ b/src/devices/machine/upd4701.cpp
@@ -148,6 +148,15 @@ WRITE_LINE_MEMBER(upd4701_device::resety_w)
// reset_xy - pulse the counter reset lines
//-------------------------------------------------
+READ8_MEMBER(upd4701_device::reset_xy)
+{
+ resetx_w(1);
+ resety_w(1);
+ resetx_w(0);
+ resety_w(0);
+ return space.unmap();
+}
+
WRITE8_MEMBER(upd4701_device::reset_xy)
{
resetx_w(1);
diff --git a/src/devices/machine/upd4701.h b/src/devices/machine/upd4701.h
index 71a58df0de7..f182d92a839 100644
--- a/src/devices/machine/upd4701.h
+++ b/src/devices/machine/upd4701.h
@@ -61,6 +61,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(ul_w);
DECLARE_WRITE_LINE_MEMBER(resetx_w);
DECLARE_WRITE_LINE_MEMBER(resety_w);
+ DECLARE_READ8_MEMBER(reset_xy);
DECLARE_WRITE8_MEMBER(reset_xy);
DECLARE_READ8_MEMBER(d_r);
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index dff9c7777b7..e253c09df17 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -1370,6 +1370,7 @@ Note: on screen copyright is (c)1998 Coinmaster.
#include "machine/msm6242.h"
#include "machine/nvram.h"
#include "machine/pit8253.h"
+#include "machine/upd4701.h"
#include "machine/watchdog.h"
#include "sound/2203intf.h"
#include "sound/2612intf.h"
@@ -1685,29 +1686,6 @@ ADDRESS_MAP_END
Caliber 50
***************************************************************************/
-READ16_MEMBER(seta_state::calibr50_ip_r)
-{
- int dir1 = m_rot[0]->read(); // analog port
- int dir2 = m_rot[1]->read(); // analog port
-
- switch (offset)
- {
- case 0x00/2: return m_p1->read(); // p1
- case 0x02/2: return m_p2->read(); // p2
-
- case 0x08/2: return m_coins->read(); // Coins
-
- case 0x10/2: return (dir1 & 0xff); // lower 8 bits of p1 rotation
- case 0x12/2: return (dir1 >> 8); // upper 4 bits of p1 rotation
- case 0x14/2: return (dir2 & 0xff); // lower 8 bits of p2 rotation
- case 0x16/2: return (dir2 >> 8); // upper 4 bits of p2 rotation
- case 0x18/2: return 0xffff; // ? (value's read but not used)
- default:
- logerror("PC %06X - Read input %02X !\n", space.device().safe_pc(), offset*2);
- return 0;
- }
-}
-
WRITE16_MEMBER(seta_state::calibr50_soundlatch_w)
{
if (ACCESSING_BITS_0_7)
@@ -1733,7 +1711,12 @@ static ADDRESS_MAP_START( calibr50_map, AS_PROGRAM, 16, seta_state )
AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM
AM_RANGE(0x904000, 0x904fff) AM_RAM //
- AM_RANGE(0xa00000, 0xa00019) AM_READ(calibr50_ip_r) // Input Ports
+ AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("P1") // X1-004
+ AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("P2") // X1-004
+ AM_RANGE(0xa00008, 0xa00009) AM_READ_PORT("COINS") // X1-004
+ AM_RANGE(0xa00010, 0xa00017) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff)
+ AM_RANGE(0xa00018, 0xa00019) AM_DEVREAD8("upd4701", upd4701_device, reset_xy, 0x00ff)
+
/**/AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
@@ -3747,10 +3730,10 @@ static INPUT_PORTS_START( calibr50 )
PORT_DIPSETTING( 0x0000, "Coin Mode 2" )
PORT_START("ROT1") // Rotation Player 1
- PORT_BIT( 0xfff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X)
+ PORT_BIT( 0xfff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_RESET PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X)
PORT_START("ROT2") // Rotation Player 2
- PORT_BIT( 0xfff, 0x00, IPT_DIAL ) PORT_PLAYER(2) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M)
+ PORT_BIT( 0xfff, 0x00, IPT_DIAL ) PORT_PLAYER(2) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_RESET PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M)
INPUT_PORTS_END
/***************************************************************************
@@ -7936,6 +7919,10 @@ static MACHINE_CONFIG_START( calibr50 )
MCFG_CPU_PERIODIC_INT_DRIVER(seta_state, irq0_line_hold, 4*60) /* IRQ: 4/frame
NMI: when the 68k writes the sound latch */
+ MCFG_DEVICE_ADD("upd4701", UPD4701A, 0)
+ MCFG_UPD4701_PORTX("ROT1")
+ MCFG_UPD4701_PORTY("ROT2")
+
MCFG_MACHINE_RESET_OVERRIDE(seta_state,calibr50)
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
index 611b81a2252..4d4aacd1616 100644
--- a/src/mame/includes/seta.h
+++ b/src/mame/includes/seta.h
@@ -154,7 +154,6 @@ public:
DECLARE_WRITE16_MEMBER(sharedram_68000_w);
DECLARE_WRITE16_MEMBER(sub_ctrl_w);
DECLARE_READ16_MEMBER(seta_dsw_r);
- DECLARE_READ16_MEMBER(calibr50_ip_r);
DECLARE_WRITE16_MEMBER(calibr50_soundlatch_w);
DECLARE_READ16_MEMBER(usclssic_dsw_r);
DECLARE_READ16_MEMBER(usclssic_trackball_x_r);