mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
segaybd.cpp, srallyc: Add OKI MSM6253 device
This commit is contained in:
parent
c6a1b3856c
commit
0188b4e80b
@ -1867,6 +1867,18 @@ if (MACHINES["MSM6242"]~=null) then
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------
|
||||||
|
--
|
||||||
|
--@src/devices/machine/msm6253.h,MACHINES["MSM6253"] = true
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
if (MACHINES["MSM6253"]~=null) then
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/devices/machine/msm6253.cpp",
|
||||||
|
MAME_DIR .. "src/devices/machine/msm6253.h",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
--
|
--
|
||||||
--@src/devices/machine/ncr539x.h,MACHINES["NCR539x"] = true
|
--@src/devices/machine/ncr539x.h,MACHINES["NCR539x"] = true
|
||||||
|
@ -500,6 +500,7 @@ MACHINES["MPU401"] = true
|
|||||||
MACHINES["MSM5832"] = true
|
MACHINES["MSM5832"] = true
|
||||||
MACHINES["MSM58321"] = true
|
MACHINES["MSM58321"] = true
|
||||||
MACHINES["MSM6242"] = true
|
MACHINES["MSM6242"] = true
|
||||||
|
MACHINES["MSM6253"] = true
|
||||||
--MACHINES["NCR5380"] = true
|
--MACHINES["NCR5380"] = true
|
||||||
--MACHINES["NCR5380N"] = true
|
--MACHINES["NCR5380N"] = true
|
||||||
--MACHINES["NCR5390"] = true
|
--MACHINES["NCR5390"] = true
|
||||||
|
@ -487,6 +487,7 @@ MACHINES["MPU401"] = true
|
|||||||
MACHINES["MSM5832"] = true
|
MACHINES["MSM5832"] = true
|
||||||
MACHINES["MSM58321"] = true
|
MACHINES["MSM58321"] = true
|
||||||
MACHINES["MSM6242"] = true
|
MACHINES["MSM6242"] = true
|
||||||
|
--MACHINES["MSM6253"] = true
|
||||||
MACHINES["NCR5380"] = true
|
MACHINES["NCR5380"] = true
|
||||||
MACHINES["NCR5380N"] = true
|
MACHINES["NCR5380N"] = true
|
||||||
MACHINES["NCR5390"] = true
|
MACHINES["NCR5390"] = true
|
||||||
|
130
src/devices/machine/msm6253.cpp
Normal file
130
src/devices/machine/msm6253.cpp
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders: AJR
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
OKI MSM6253 8-Bit 4-Channel A/D Converter
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "machine/msm6253.h"
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// GLOBAL VARIABLES
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
const device_type MSM6253 = device_creator<msm6253_device>;
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// DEVICE DEFINITION
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// msm6253_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
msm6253_device::msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||||
|
: device_t(mconfig, MSM6253, "MSM6253 A/D Converter", tag, owner, clock, "msm6253", __FILE__),
|
||||||
|
m_analog_ports(*this, {finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG}),
|
||||||
|
m_shift_register(0)
|
||||||
|
{
|
||||||
|
m_analog_input_cb[0] = analog_port_read_delegate(FUNC(msm6253_device::port_read<0>), this);
|
||||||
|
m_analog_input_cb[1] = analog_port_read_delegate(FUNC(msm6253_device::port_read<1>), this);
|
||||||
|
m_analog_input_cb[2] = analog_port_read_delegate(FUNC(msm6253_device::port_read<2>), this);
|
||||||
|
m_analog_input_cb[3] = analog_port_read_delegate(FUNC(msm6253_device::port_read<3>), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void msm6253_device::device_start()
|
||||||
|
{
|
||||||
|
for (int port = 0; port < 4; port++)
|
||||||
|
{
|
||||||
|
// resolve each callback
|
||||||
|
m_analog_input_cb[port].bind_relative_to(*owner());
|
||||||
|
|
||||||
|
// ensure that any configured ports truly are analog
|
||||||
|
if (m_analog_ports[port].found())
|
||||||
|
{
|
||||||
|
for (ioport_field &field : m_analog_ports[port]->fields())
|
||||||
|
if (!field.is_analog() && field.type() != IPT_UNKNOWN && field.type() != IPT_UNUSED)
|
||||||
|
throw emu_fatalerror("Port %s is not an analog port\n", m_analog_ports[port]->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// save our state
|
||||||
|
save_item(NAME(m_shift_register));
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// port_read - helper to read configured ports
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
template<int port>
|
||||||
|
ioport_value msm6253_device::port_read()
|
||||||
|
{
|
||||||
|
if (m_analog_ports[port].found())
|
||||||
|
return m_analog_ports[port]->read();
|
||||||
|
|
||||||
|
logerror("%s: Read from unassigned IN%d\n", port);
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// address_w - write from address bus to select
|
||||||
|
// one of four internal latches
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
WRITE8_MEMBER(msm6253_device::address_w)
|
||||||
|
{
|
||||||
|
// fill the shift register from the internal A/D latch
|
||||||
|
m_shift_register = m_analog_input_cb[offset & 3]();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// select_w - write D0/D1 to address latch
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
WRITE8_MEMBER(msm6253_device::select_w)
|
||||||
|
{
|
||||||
|
// fill the shift register from the internal A/D latch
|
||||||
|
m_shift_register = m_analog_input_cb[data & 3]();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// shift_out - MSB-first serial data output
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
bool msm6253_device::shift_out()
|
||||||
|
{
|
||||||
|
// capture the shifted bit
|
||||||
|
bool msb = BIT(m_shift_register, 7);
|
||||||
|
|
||||||
|
// shift the bit out, with zero coming in on the other end
|
||||||
|
m_shift_register <<= 1;
|
||||||
|
|
||||||
|
// return the bit
|
||||||
|
return msb;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// d0_r - shift data bit out to D0
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
READ8_MEMBER(msm6253_device::d0_r)
|
||||||
|
{
|
||||||
|
// offset is ignored
|
||||||
|
return shift_out();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// d7_r - shift data bit out to D7
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
READ8_MEMBER(msm6253_device::d7_r)
|
||||||
|
{
|
||||||
|
// offset is ignored
|
||||||
|
return shift_out() << 7;
|
||||||
|
}
|
104
src/devices/machine/msm6253.h
Normal file
104
src/devices/machine/msm6253.h
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders: AJR
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
OKI MSM6253 8-Bit 4-Channel A/D Converter
|
||||||
|
|
||||||
|
***********************************************************************
|
||||||
|
____ ____
|
||||||
|
/OSC OUT 1 |* \_/ | 18 OSC OUT
|
||||||
|
D-GND 2 | | 17 OSC IN
|
||||||
|
A-GND 3 | | 16 /RD
|
||||||
|
IN0 4 | | 15 /WR
|
||||||
|
IN1 5 | MSM6253RS | 14 ALE
|
||||||
|
IN2 6 | | 13 /CS
|
||||||
|
IN3 7 | | 12 A1
|
||||||
|
Vr 8 | | 11 A0
|
||||||
|
Vdd 9 |___________| 10 S.O.
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef DEVICES_MACHINE_MSM6253_H
|
||||||
|
#define DEVICES_MACHINE_MSM6253_H
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// CONFIGURATION MACROS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
#define MCFG_MSM6253_IN0_ANALOG_PORT(_input) \
|
||||||
|
msm6253_device::static_set_input_tag(*device, 0, "^" _input);
|
||||||
|
#define MCFG_MSM6253_IN1_ANALOG_PORT(_input) \
|
||||||
|
msm6253_device::static_set_input_tag(*device, 1, "^" _input);
|
||||||
|
#define MCFG_MSM6253_IN2_ANALOG_PORT(_input) \
|
||||||
|
msm6253_device::static_set_input_tag(*device, 2, "^" _input);
|
||||||
|
#define MCFG_MSM6253_IN3_ANALOG_PORT(_input) \
|
||||||
|
msm6253_device::static_set_input_tag(*device, 3, "^" _input);
|
||||||
|
|
||||||
|
#define MCFG_MSM6253_IN0_ANALOG_READ(_class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 0, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||||
|
#define MCFG_MSM6253_IN1_ANALOG_READ(_class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 1, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||||
|
#define MCFG_MSM6253_IN2_ANALOG_READ(_class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 2, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||||
|
#define MCFG_MSM6253_IN3_ANALOG_READ(_class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 3, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||||
|
|
||||||
|
#define MCFG_MSM6253_IN0_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 0, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
|
||||||
|
#define MCFG_MSM6253_IN1_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 1, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
|
||||||
|
#define MCFG_MSM6253_IN2_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 2, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
|
||||||
|
#define MCFG_MSM6253_IN3_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||||
|
msm6253_device::static_set_input_cb(*device, 3, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
typedef device_delegate<ioport_value ()> analog_port_read_delegate;
|
||||||
|
|
||||||
|
// ======================> msm6253_device
|
||||||
|
|
||||||
|
class msm6253_device : public device_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||||
|
|
||||||
|
// static configuration
|
||||||
|
static void static_set_input_tag(device_t &device, int port, const char *tag) { downcast<msm6253_device &>(device).m_analog_ports[port].set_tag(tag); }
|
||||||
|
static void static_set_input_cb(device_t &device, int port, analog_port_read_delegate &&cb) { downcast<msm6253_device &>(device).m_analog_input_cb[port] = std::move(cb); }
|
||||||
|
|
||||||
|
// write handlers
|
||||||
|
WRITE8_MEMBER(address_w);
|
||||||
|
WRITE8_MEMBER(select_w);
|
||||||
|
|
||||||
|
// read handlers
|
||||||
|
bool shift_out();
|
||||||
|
READ8_MEMBER(d0_r);
|
||||||
|
READ8_MEMBER(d7_r);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// helpers
|
||||||
|
template<int port> ioport_value port_read();
|
||||||
|
|
||||||
|
// input configuration
|
||||||
|
optional_ioport_array<4> m_analog_ports;
|
||||||
|
analog_port_read_delegate m_analog_input_cb[4];
|
||||||
|
|
||||||
|
// private data
|
||||||
|
u8 m_shift_register;
|
||||||
|
};
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
extern const device_type MSM6253;
|
||||||
|
|
||||||
|
#endif // DEVICES_MACHINE_MSM6253_H
|
@ -124,6 +124,7 @@
|
|||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
#include "machine/cxd1095.h"
|
#include "machine/cxd1095.h"
|
||||||
#include "machine/eepromser.h"
|
#include "machine/eepromser.h"
|
||||||
|
#include "machine/msm6253.h"
|
||||||
#include "machine/nvram.h"
|
#include "machine/nvram.h"
|
||||||
#include "machine/315_5296.h"
|
#include "machine/315_5296.h"
|
||||||
#include "sound/2612intf.h"
|
#include "sound/2612intf.h"
|
||||||
@ -2533,7 +2534,7 @@ static ADDRESS_MAP_START( drive_io_map, AS_IO, 8, model2_state )
|
|||||||
AM_RANGE(0x00, 0x00) AM_WRITENOP //watchdog
|
AM_RANGE(0x00, 0x00) AM_WRITENOP //watchdog
|
||||||
AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("driveio1", sega_315_5296_device, read, write)
|
AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("driveio1", sega_315_5296_device, read, write)
|
||||||
AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("driveio2", sega_315_5296_device, read, write)
|
AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("driveio2", sega_315_5296_device, read, write)
|
||||||
AM_RANGE(0x80, 0x83) AM_NOP //Oki M6253
|
AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("driveadc", msm6253_device, d7_r, address_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( srallyc, model2a )
|
static MACHINE_CONFIG_DERIVED( srallyc, model2a )
|
||||||
@ -2549,6 +2550,8 @@ static MACHINE_CONFIG_DERIVED( srallyc, model2a )
|
|||||||
MCFG_315_5296_IN_PORTH_CB(READ8(model2_state, driveio_porth_r))
|
MCFG_315_5296_IN_PORTH_CB(READ8(model2_state, driveio_porth_r))
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("driveio2", SEGA_315_5296, 16000000/4) //???
|
MCFG_DEVICE_ADD("driveio2", SEGA_315_5296, 16000000/4) //???
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("driveadc", MSM6253, 0)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/* 2B-CRX */
|
/* 2B-CRX */
|
||||||
|
@ -61,6 +61,7 @@ MB89372 - Uses 3 serial data transfer protocols: ASYNC, COP & BOP. Has a built
|
|||||||
#include "includes/segaipt.h"
|
#include "includes/segaipt.h"
|
||||||
|
|
||||||
#include "machine/mb8421.h"
|
#include "machine/mb8421.h"
|
||||||
|
#include "machine/msm6253.h"
|
||||||
#include "machine/nvram.h"
|
#include "machine/nvram.h"
|
||||||
#include "machine/315_5296.h"
|
#include "machine/315_5296.h"
|
||||||
#include "sound/segapcm.h"
|
#include "sound/segapcm.h"
|
||||||
@ -87,29 +88,12 @@ const uint32_t SOUND_CLOCK = 32215900;
|
|||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// analog_r - handle analog input reads
|
// analog_mux - handle multiplexed analog input
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
READ16_MEMBER(segaybd_state::analog_r)
|
ioport_value segaybd_state::analog_mux()
|
||||||
{
|
{
|
||||||
int result = 0xff;
|
return m_adc_ports[3 + (m_misc_io_data & 3)].read_safe(0x80);
|
||||||
if (ACCESSING_BITS_0_7)
|
|
||||||
{
|
|
||||||
result = m_analog_data[offset & 3] & 0x80;
|
|
||||||
m_analog_data[offset & 3] <<= 1;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// analog_w - handle analog input control writes
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
WRITE16_MEMBER(segaybd_state::analog_w)
|
|
||||||
{
|
|
||||||
int selected = ((offset & 3) == 3) ? (3 + (m_misc_io_data & 3)) : (offset & 3);
|
|
||||||
m_analog_data[offset & 3] = m_adc_ports[selected].read_safe(0xff);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -642,7 +626,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, segaybd_state )
|
|||||||
// AM_RANGE(0x086000, 0x087fff) /DEA0
|
// AM_RANGE(0x086000, 0x087fff) /DEA0
|
||||||
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram")
|
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram")
|
||||||
AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff)
|
AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff)
|
||||||
AM_RANGE(0x100040, 0x100047) AM_READWRITE(analog_r, analog_w)
|
AM_RANGE(0x100040, 0x100047) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff)
|
||||||
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
|
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -1350,6 +1334,12 @@ static MACHINE_CONFIG_START( yboard, segaybd_state )
|
|||||||
MCFG_315_5296_IN_PORTG_CB(IOPORT("COINAGE"))
|
MCFG_315_5296_IN_PORTG_CB(IOPORT("COINAGE"))
|
||||||
MCFG_315_5296_OUT_PORTH_CB(WRITE8(segaybd_state, output2_w))
|
MCFG_315_5296_OUT_PORTH_CB(WRITE8(segaybd_state, output2_w))
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("adc", MSM6253, 0)
|
||||||
|
MCFG_MSM6253_IN0_ANALOG_PORT("ADC.0")
|
||||||
|
MCFG_MSM6253_IN1_ANALOG_PORT("ADC.1")
|
||||||
|
MCFG_MSM6253_IN2_ANALOG_PORT("ADC.2")
|
||||||
|
MCFG_MSM6253_IN3_ANALOG_READ(segaybd_state, analog_mux)
|
||||||
|
|
||||||
MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_main")
|
MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_main")
|
||||||
MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_subx")
|
MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_subx")
|
||||||
MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_suby")
|
MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_suby")
|
||||||
@ -2677,7 +2667,6 @@ DRIVER_INIT_MEMBER(segaybd_state,generic)
|
|||||||
|
|
||||||
// save state
|
// save state
|
||||||
save_item(NAME(m_pdrift_bank));
|
save_item(NAME(m_pdrift_bank));
|
||||||
save_item(NAME(m_analog_data));
|
|
||||||
save_item(NAME(m_irq2_scanline));
|
save_item(NAME(m_irq2_scanline));
|
||||||
save_item(NAME(m_timer_irq_state));
|
save_item(NAME(m_timer_irq_state));
|
||||||
save_item(NAME(m_vblank_irq_state));
|
save_item(NAME(m_vblank_irq_state));
|
||||||
|
@ -42,12 +42,9 @@ public:
|
|||||||
, m_misc_io_data(0)
|
, m_misc_io_data(0)
|
||||||
, m_tmp_bitmap(512, 512)
|
, m_tmp_bitmap(512, 512)
|
||||||
{
|
{
|
||||||
memset(m_analog_data, 0, sizeof(m_analog_data));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// main CPU read/write handlers
|
// main CPU read/write handlers
|
||||||
DECLARE_READ16_MEMBER(analog_r);
|
|
||||||
DECLARE_WRITE16_MEMBER(analog_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(output1_w);
|
DECLARE_WRITE8_MEMBER(output1_w);
|
||||||
DECLARE_WRITE8_MEMBER(misc_output_w);
|
DECLARE_WRITE8_MEMBER(misc_output_w);
|
||||||
DECLARE_WRITE8_MEMBER(output2_w);
|
DECLARE_WRITE8_MEMBER(output2_w);
|
||||||
@ -64,6 +61,9 @@ public:
|
|||||||
DECLARE_WRITE16_MEMBER(link2_w);
|
DECLARE_WRITE16_MEMBER(link2_w);
|
||||||
// DECLARE_READ8_MEMBER(link_portc0_r);
|
// DECLARE_READ8_MEMBER(link_portc0_r);
|
||||||
|
|
||||||
|
// input helpers
|
||||||
|
ioport_value analog_mux();
|
||||||
|
|
||||||
// game-specific output handlers
|
// game-specific output handlers
|
||||||
void gforce2_output_cb1(uint16_t data);
|
void gforce2_output_cb1(uint16_t data);
|
||||||
void gforce2_output_cb2(uint16_t data);
|
void gforce2_output_cb2(uint16_t data);
|
||||||
@ -126,7 +126,6 @@ protected:
|
|||||||
// internal state
|
// internal state
|
||||||
uint16_t m_pdrift_bank;
|
uint16_t m_pdrift_bank;
|
||||||
emu_timer * m_scanline_timer;
|
emu_timer * m_scanline_timer;
|
||||||
uint8_t m_analog_data[4];
|
|
||||||
int m_irq2_scanline;
|
int m_irq2_scanline;
|
||||||
uint8_t m_timer_irq_state;
|
uint8_t m_timer_irq_state;
|
||||||
uint8_t m_vblank_irq_state;
|
uint8_t m_vblank_irq_state;
|
||||||
|
Loading…
Reference in New Issue
Block a user