mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
eaglshot: Add uPD4701A device
This commit is contained in:
parent
6ee9c864a8
commit
28913b6929
@ -850,33 +850,19 @@ ADDRESS_MAP_END
|
||||
Eagle Shot Golf
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(ssv_state::eaglshot_gfxrom_bank_w)
|
||||
WRITE8_MEMBER(ssv_state::eaglshot_gfxrom_bank_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
membank("gfxrom")->set_entry(data < 6 ? data : 6);
|
||||
}
|
||||
membank("gfxrom")->set_entry(data < 6 ? data : 6);
|
||||
}
|
||||
|
||||
READ16_MEMBER(ssv_state::eaglshot_trackball_r)
|
||||
WRITE8_MEMBER(ssv_state::eaglshot_trackball_w)
|
||||
{
|
||||
switch(m_trackball_select)
|
||||
{
|
||||
case 0x60: return (m_io_trackx->read() >> 8) & 0xff;
|
||||
case 0x40: return (m_io_trackx->read() >> 0) & 0xff;
|
||||
|
||||
case 0x70: return (m_io_tracky->read() >> 8) & 0xff;
|
||||
case 0x50: return (m_io_tracky->read() >> 0) & 0xff;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ssv_state::eaglshot_trackball_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
m_trackball_select = data;
|
||||
}
|
||||
// All these get toggled during trackball reads; the precise arrangement is uncertain
|
||||
m_upd4701->cs_w(!BIT(data, 6));
|
||||
m_upd4701->ul_w(BIT(data, 5));
|
||||
m_upd4701->xy_w(BIT(data, 4));
|
||||
m_upd4701->resetx_w(BIT(data, 3));
|
||||
m_upd4701->resety_w(BIT(data, 2));
|
||||
}
|
||||
|
||||
|
||||
@ -900,11 +886,11 @@ static ADDRESS_MAP_START( eaglshot_map, AS_PROGRAM, 16, ssv_state )
|
||||
AM_RANGE(0x210000, 0x210001) AM_READNOP /*AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)*/ // Watchdog
|
||||
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start
|
||||
AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines
|
||||
AM_RANGE(0x800000, 0x800001) AM_WRITE(eaglshot_gfxrom_bank_w)
|
||||
AM_RANGE(0x900000, 0x900001) AM_WRITE(eaglshot_trackball_w)
|
||||
AM_RANGE(0x800000, 0x800001) AM_WRITE8(eaglshot_gfxrom_bank_w, 0x00ff)
|
||||
AM_RANGE(0x900000, 0x900001) AM_WRITE8(eaglshot_trackball_w, 0x00ff)
|
||||
AM_RANGE(0xa00000, 0xbfffff) AM_ROMBANK("gfxrom")
|
||||
AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_SHARE("nvram") // NVRAM
|
||||
AM_RANGE(0xd00000, 0xd00001) AM_READ(eaglshot_trackball_r)
|
||||
AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD8("upd4701", upd4701_device, d_r, 0x00ff)
|
||||
SSV_MAP( 0xf00000 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -2827,6 +2813,10 @@ static MACHINE_CONFIG_DERIVED( eaglshot, ssv )
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
||||
MCFG_DEVICE_ADD("upd4701", UPD4701A, 0)
|
||||
MCFG_UPD4701_PORTX("TRACKX")
|
||||
MCFG_UPD4701_PORTY("TRACKY")
|
||||
|
||||
MCFG_WATCHDOG_ADD("watchdog")
|
||||
|
||||
/* video hardware */
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "cpu/upd7725/upd7725.h"
|
||||
#include "video/st0020.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "machine/upd4701.h"
|
||||
#include "sound/es5506.h"
|
||||
#include "screen.h"
|
||||
|
||||
@ -15,6 +16,7 @@ public:
|
||||
m_ensoniq(*this, "ensoniq"),
|
||||
m_eeprom(*this, "eeprom"),
|
||||
m_dsp(*this, "dsp"),
|
||||
m_upd4701(*this, "upd4701"),
|
||||
m_mainram(*this, "mainram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_scroll(*this, "scroll"),
|
||||
@ -30,8 +32,6 @@ public:
|
||||
m_io_key3(*this, "KEY3"),
|
||||
m_io_service(*this, "SERVICE"),
|
||||
m_io_paddle(*this, "PADDLE"),
|
||||
m_io_trackx(*this, "TRACKX"),
|
||||
m_io_tracky(*this, "TRACKY"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette")
|
||||
@ -41,6 +41,7 @@ public:
|
||||
required_device<es5506_device> m_ensoniq;
|
||||
optional_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
optional_device<upd96050_device> m_dsp;
|
||||
optional_device<upd4701_device> m_upd4701;
|
||||
|
||||
required_shared_ptr<uint16_t> m_mainram;
|
||||
required_shared_ptr<uint16_t> m_spriteram;
|
||||
@ -91,9 +92,8 @@ public:
|
||||
DECLARE_WRITE32_MEMBER(latch32_w);
|
||||
DECLARE_READ16_MEMBER(latch16_r);
|
||||
DECLARE_WRITE16_MEMBER(latch16_w);
|
||||
DECLARE_WRITE16_MEMBER(eaglshot_gfxrom_bank_w);
|
||||
DECLARE_READ16_MEMBER(eaglshot_trackball_r);
|
||||
DECLARE_WRITE16_MEMBER(eaglshot_trackball_w);
|
||||
DECLARE_WRITE8_MEMBER(eaglshot_gfxrom_bank_w);
|
||||
DECLARE_WRITE8_MEMBER(eaglshot_trackball_w);
|
||||
DECLARE_READ16_MEMBER(eaglshot_gfxram_r);
|
||||
DECLARE_WRITE16_MEMBER(eaglshot_gfxram_w);
|
||||
DECLARE_WRITE16_MEMBER(gdfs_tmapram_w);
|
||||
@ -158,8 +158,6 @@ protected:
|
||||
optional_ioport m_io_key3;
|
||||
optional_ioport m_io_service;
|
||||
optional_ioport m_io_paddle;
|
||||
optional_ioport m_io_trackx;
|
||||
optional_ioport m_io_tracky;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
Loading…
Reference in New Issue
Block a user