Rename 315-5338a to m1io since it doesn't actually represent that device

This commit is contained in:
Dirk Best 2018-04-08 23:31:39 +02:00
parent 2bfe0b3381
commit d4d7f94c5f
6 changed files with 154 additions and 161 deletions

View File

@ -3368,8 +3368,8 @@ files {
MAME_DIR .. "src/mame/video/zaxxon.cpp",
MAME_DIR .. "src/mame/machine/315_5296.cpp",
MAME_DIR .. "src/mame/machine/315_5296.h",
MAME_DIR .. "src/mame/machine/315-5338a.cpp",
MAME_DIR .. "src/mame/machine/315-5338a.h",
MAME_DIR .. "src/mame/machine/m1io.cpp",
MAME_DIR .. "src/mame/machine/m1io.h",
MAME_DIR .. "src/mame/machine/fd1089.cpp",
MAME_DIR .. "src/mame/machine/fd1089.h",
MAME_DIR .. "src/mame/machine/fd1094.cpp",

View File

@ -636,7 +636,7 @@ Notes:
#include "cpu/i386/i386.h"
#include "machine/clock.h"
#include "machine/nvram.h"
#include "machine/315-5338a.h"
#include "machine/m1io.h"
#include "speaker.h"
#include "vr.lh"
@ -930,7 +930,7 @@ void model1_state::model1_mem(address_map &map)
map(0x900000, 0x903fff).ram().w(this, FUNC(model1_state::p_w)).share("palette");
map(0x910000, 0x91bfff).ram().share("color_xlat");
map(0xc00000, 0xc0001f).rw("io", FUNC(sega_315_5338a_device::read), FUNC(sega_315_5338a_device::write)).umask16(0x00ff);
map(0xc00000, 0xc0001f).rw("io", FUNC(m1io_device::read), FUNC(m1io_device::write)).umask16(0x00ff);
map(0xc00020, 0xc0003f).w(this, FUNC(model1_state::drive_board_w));
map(0xc00040, 0xc00043).rw(this, FUNC(model1_state::network_ctl_r), FUNC(model1_state::network_ctl_w));
@ -1659,10 +1659,10 @@ MACHINE_CONFIG_START(model1_state::model1)
MCFG_MACHINE_RESET_OVERRIDE(model1_state,model1)
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_DEVICE_ADD("io", SEGA_315_5338A, 0)
MCFG_315_5338A_DI0_CB(IOPORT("IN.0"))
MCFG_315_5338A_DI1_CB(IOPORT("IN.1"))
MCFG_315_5338A_DI2_CB(IOPORT("IN.2"))
MCFG_DEVICE_ADD("io", SEGA_M1IO, 0)
MCFG_M1IO_DI0_CB(IOPORT("IN.0"))
MCFG_M1IO_DI1_CB(IOPORT("IN.1"))
MCFG_M1IO_DI2_CB(IOPORT("IN.2"))
MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
MCFG_S24TILE_DEVICE_PALETTE("palette")
@ -1699,17 +1699,17 @@ MACHINE_CONFIG_START(model1_state::vf)
model1_hle(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_DO_CB(WRITE8(model1_state, vf_outputs_w))
MCFG_M1IO_DO_CB(WRITE8(model1_state, vf_outputs_w))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(model1_state::vr)
model1(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_AN0_CB(IOPORT("WHEEL"))
MCFG_315_5338A_AN1_CB(IOPORT("ACCEL"))
MCFG_315_5338A_AN2_CB(IOPORT("BRAKE"))
MCFG_315_5338A_DO_CB(WRITE8(model1_state, vr_outputs_w))
MCFG_M1IO_AN0_CB(IOPORT("WHEEL"))
MCFG_M1IO_AN1_CB(IOPORT("ACCEL"))
MCFG_M1IO_AN2_CB(IOPORT("BRAKE"))
MCFG_M1IO_DO_CB(WRITE8(model1_state, vr_outputs_w))
MCFG_M1COMM_ADD(M1COMM_TAG)
MCFG_DEVICE_BIOS("epr15112");
@ -1719,10 +1719,10 @@ MACHINE_CONFIG_START(model1_state::vformula)
model1(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_AN0_CB(IOPORT("WHEEL"))
MCFG_315_5338A_AN1_CB(IOPORT("ACCEL"))
MCFG_315_5338A_AN2_CB(IOPORT("BRAKE"))
MCFG_315_5338A_DO_CB(WRITE8(model1_state, vr_outputs_w))
MCFG_M1IO_AN0_CB(IOPORT("WHEEL"))
MCFG_M1IO_AN1_CB(IOPORT("ACCEL"))
MCFG_M1IO_AN2_CB(IOPORT("BRAKE"))
MCFG_M1IO_DO_CB(WRITE8(model1_state, vr_outputs_w))
MCFG_M1COMM_ADD(M1COMM_TAG)
MCFG_DEVICE_BIOS("epr15624");
@ -1732,13 +1732,13 @@ MACHINE_CONFIG_START(model1_state::swa)
model1_hle(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_AN0_CB(IOPORT("STICK1X"))
MCFG_315_5338A_AN1_CB(IOPORT("STICK1Y"))
MCFG_315_5338A_AN2_CB(IOPORT("THROTTLE"))
MCFG_315_5338A_AN3_CB(NOOP)
MCFG_315_5338A_AN4_CB(IOPORT("STICK2X"))
MCFG_315_5338A_AN5_CB(IOPORT("STICK2Y"))
MCFG_315_5338A_DO_CB(WRITE8(model1_state, swa_outputs_w))
MCFG_M1IO_AN0_CB(IOPORT("STICK1X"))
MCFG_M1IO_AN1_CB(IOPORT("STICK1Y"))
MCFG_M1IO_AN2_CB(IOPORT("THROTTLE"))
MCFG_M1IO_AN3_CB(NOOP)
MCFG_M1IO_AN4_CB(IOPORT("STICK2X"))
MCFG_M1IO_AN5_CB(IOPORT("STICK2Y"))
MCFG_M1IO_DO_CB(WRITE8(model1_state, swa_outputs_w))
MCFG_SPEAKER_STANDARD_STEREO("dleft", "dright")
MCFG_DSBZ80_ADD(DSBZ80_TAG)
@ -1758,10 +1758,10 @@ MACHINE_CONFIG_START(model1_state::wingwar)
MCFG_CPU_PROGRAM_MAP(model1_comm_mem)
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_AN0_CB(IOPORT("STICKX"))
MCFG_315_5338A_AN1_CB(IOPORT("STICKY"))
MCFG_315_5338A_AN2_CB(IOPORT("THROTTLE"))
MCFG_315_5338A_DO_CB(WRITE8(model1_state, wingwar_outputs_w))
MCFG_M1IO_AN0_CB(IOPORT("STICKX"))
MCFG_M1IO_AN1_CB(IOPORT("STICKY"))
MCFG_M1IO_AN2_CB(IOPORT("THROTTLE"))
MCFG_M1IO_DO_CB(WRITE8(model1_state, wingwar_outputs_w))
MCFG_M1COMM_ADD(M1COMM_TAG)
MCFG_DEVICE_BIOS("epr15112");
@ -1771,7 +1771,7 @@ MACHINE_CONFIG_START(model1_state::wingwar360)
wingwar(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_DO_CB(WRITE8(model1_state, wingwar360_outputs_w))
MCFG_M1IO_DO_CB(WRITE8(model1_state, wingwar360_outputs_w))
MACHINE_CONFIG_END
void model1_state::polhemus_map(address_map &map)
@ -1787,9 +1787,9 @@ MACHINE_CONFIG_START(model1_state::netmerc)
MCFG_CPU_PROGRAM_MAP(polhemus_map)
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_AN0_CB(IOPORT("STICKX"))
MCFG_315_5338A_AN2_CB(IOPORT("STICKY"))
MCFG_315_5338A_DO_CB(WRITE8(model1_state, netmerc_outputs_w))
MCFG_M1IO_AN0_CB(IOPORT("STICKX"))
MCFG_M1IO_AN2_CB(IOPORT("STICKY"))
MCFG_M1IO_DO_CB(WRITE8(model1_state, netmerc_outputs_w))
MACHINE_CONFIG_END

View File

@ -98,7 +98,7 @@
#include "machine/msm6253.h"
#include "machine/nvram.h"
#include "machine/315_5296.h"
#include "machine/315-5338a.h"
#include "machine/m1io.h"
#include "sound/2612intf.h"
#include "video/segaic24.h"
#include "speaker.h"
@ -1575,7 +1575,7 @@ void model2o_state::model2o_mem(address_map &map)
map(0x00220000, 0x0023ffff).rom().region("maincpu", 0x20000);
map(0x00980004, 0x00980007).r(this, FUNC(model2o_state::fifo_control_2o_r));
map(0x01c00000, 0x01c0001f).rw("io", FUNC(sega_315_5338a_device::read), FUNC(sega_315_5338a_device::write)).umask32(0x00ff00ff);
map(0x01c00000, 0x01c0001f).rw("io", FUNC(m1io_device::read), FUNC(m1io_device::write)).umask32(0x00ff00ff);
map(0x01c00040, 0x01c00043).r(this, FUNC(model2o_state::daytona_unk_r));
map(0x01c00100, 0x01c0010f).r(this, FUNC(model2o_state::virtuacop_lightgun_r)).umask32(0x00ff00ff);
map(0x01c00110, 0x01c00113).r(this, FUNC(model2o_state::virtuacop_lightgun_offscreen_r)).umask32(0x00ff00ff);
@ -2510,9 +2510,9 @@ MACHINE_CONFIG_START(model2o_state::model2o)
MCFG_NVRAM_ADD_1FILL("backup1")
MCFG_NVRAM_ADD_1FILL("backup2")
MCFG_DEVICE_ADD("io", SEGA_315_5338A, 0)
MCFG_315_5338A_DI0_CB(IOPORT("IN0"))
MCFG_315_5338A_DI1_CB(IOPORT("IN1"))
MCFG_DEVICE_ADD("io", SEGA_M1IO, 0)
MCFG_M1IO_DI0_CB(IOPORT("IN0"))
MCFG_M1IO_DI1_CB(IOPORT("IN1"))
model2_timers(config);
model2_screen(config);
@ -2582,10 +2582,10 @@ MACHINE_CONFIG_START(model2o_state::daytona)
sj25_0207_01(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_AN0_CB(IOPORT("STEER"))
MCFG_315_5338A_AN1_CB(IOPORT("ACCEL"))
MCFG_315_5338A_AN2_CB(IOPORT("BRAKE"))
MCFG_315_5338A_DO_CB(WRITE8(model2o_state, daytona_output_w))
MCFG_M1IO_AN0_CB(IOPORT("STEER"))
MCFG_M1IO_AN1_CB(IOPORT("ACCEL"))
MCFG_M1IO_AN2_CB(IOPORT("BRAKE"))
MCFG_M1IO_DO_CB(WRITE8(model2o_state, daytona_output_w))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2o_maxx_state::daytona_maxx)
@ -2606,18 +2606,18 @@ MACHINE_CONFIG_START(model2o_state::desert)
model2o(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_AN0_CB(IOPORT("STEER"))
MCFG_315_5338A_AN1_CB(IOPORT("ACCEL"))
MCFG_315_5338A_AN2_CB(IOPORT("BRAKE"))
MCFG_315_5338A_DO_CB(WRITE8(model2o_state, desert_output_w))
MCFG_M1IO_AN0_CB(IOPORT("STEER"))
MCFG_M1IO_AN1_CB(IOPORT("ACCEL"))
MCFG_M1IO_AN2_CB(IOPORT("BRAKE"))
MCFG_M1IO_DO_CB(WRITE8(model2o_state, desert_output_w))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2o_state::vcop)
model2o(config);
MCFG_DEVICE_MODIFY("io")
MCFG_315_5338A_DI2_CB(IOPORT("DEBUG"))
MCFG_315_5338A_DO_CB(WRITE8(model2o_state, vcop_output_w))
MCFG_M1IO_DI2_CB(IOPORT("DEBUG"))
MCFG_M1IO_DO_CB(WRITE8(model2o_state, vcop_output_w))
MACHINE_CONFIG_END
/* 2A-CRX */

View File

@ -1,103 +0,0 @@
// license: BSD-3-Clause
// copyright-holders: Dirk Best
/***************************************************************************
Sega 315-5338A
I/O Controller
Custom 100-pin QFP LSI. Supports 8 analog channels, 3 digital 8-bit
input ports, 1 digital 8-bit output port and a serial mode (and
probably more).
TODO:
- Serial/remote mode
***************************************************************************/
#ifndef MAME_MACHINE_315_5338A_H
#define MAME_MACHINE_315_5338A_H
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_315_5338A_AN0_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 0);
#define MCFG_315_5338A_AN1_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 1);
#define MCFG_315_5338A_AN2_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 2);
#define MCFG_315_5338A_AN3_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 3);
#define MCFG_315_5338A_AN4_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 4);
#define MCFG_315_5338A_AN5_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 5);
#define MCFG_315_5338A_AN6_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 6);
#define MCFG_315_5338A_AN7_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_an_callback(DEVCB_##_devcb, 7);
#define MCFG_315_5338A_DI0_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_di_callback(DEVCB_##_devcb, 0);
#define MCFG_315_5338A_DI1_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_di_callback(DEVCB_##_devcb, 1);
#define MCFG_315_5338A_DI2_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_di_callback(DEVCB_##_devcb, 2);
#define MCFG_315_5338A_DO_CB(_devcb) \
devcb = &downcast<sega_315_5338a_device &>(*device).set_do_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class sega_315_5338a_device : public device_t
{
public:
// construction/destruction
sega_315_5338a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
template <class Object> devcb_base &set_an_callback(Object &&cb, int index)
{ return m_an_cb[index].set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_di_callback(Object &&cb, int index)
{ return m_di_cb[index].set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_do_callback(Object &&cb)
{ return m_do_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
protected:
// device-level overrides
virtual void device_start() override;
private:
// callbacks
devcb_read8 m_an_cb[8];
devcb_read8 m_di_cb[3];
devcb_write8 m_do_cb;
uint8_t m_out;
};
// device type definition
DECLARE_DEVICE_TYPE(SEGA_315_5338A, sega_315_5338a_device)
#endif // MAME_MACHINE_315_5338A_H

View File

@ -2,14 +2,12 @@
// copyright-holders: Dirk Best
/***************************************************************************
Sega 315-5338A
I/O Controller
Sega Model 1/2 I/O RAM Abstraction
***************************************************************************/
#include "emu.h"
#include "315-5338a.h"
#include "m1io.h"
//#define VERBOSE 1
#include "logmacro.h"
@ -19,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(SEGA_315_5338A, sega_315_5338a_device, "315_5338a", "315-5338A I/O Controller")
DEFINE_DEVICE_TYPE(SEGA_M1IO, m1io_device, "m1io", "Sega Model 1/2 I/O RAM")
//**************************************************************************
@ -27,11 +25,11 @@ DEFINE_DEVICE_TYPE(SEGA_315_5338A, sega_315_5338a_device, "315_5338a", "315-5338
//**************************************************************************
//-------------------------------------------------
// sega_315_5338a_device - constructor
// m1io_device - constructor
//-------------------------------------------------
sega_315_5338a_device::sega_315_5338a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, SEGA_315_5338A, tag, owner, clock),
m1io_device::m1io_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, SEGA_M1IO, tag, owner, clock),
m_an_cb{ {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this} },
m_di_cb{ {*this}, {*this}, {*this} },
m_do_cb(*this),
@ -43,7 +41,7 @@ sega_315_5338a_device::sega_315_5338a_device(const machine_config &mconfig, cons
// device_start - device-specific startup
//-------------------------------------------------
void sega_315_5338a_device::device_start()
void m1io_device::device_start()
{
// resolve callbacks
for (int i = 0; i < 8; i++)
@ -60,7 +58,7 @@ void sega_315_5338a_device::device_start()
// INTERFACE
//**************************************************************************
READ8_MEMBER( sega_315_5338a_device::read )
READ8_MEMBER( m1io_device::read )
{
uint8_t data = 0xff;
@ -96,7 +94,7 @@ READ8_MEMBER( sega_315_5338a_device::read )
return data;
}
WRITE8_MEMBER( sega_315_5338a_device::write )
WRITE8_MEMBER( m1io_device::write )
{
LOG("WR %02x = %02x\n", offset, data);

98
src/mame/machine/m1io.h Normal file
View File

@ -0,0 +1,98 @@
// license: BSD-3-Clause
// copyright-holders: Dirk Best
/***************************************************************************
Sega Model 1/2 I/O RAM Abstraction
This device handles the 16 bytes of dual-port RAM that are used to
communicate with the I/O board. It should go away once we properly
emulate the I/O boards.
***************************************************************************/
#ifndef MAME_MACHINE_M1IO_H
#define MAME_MACHINE_M1IO_H
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_M1IO_AN0_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 0);
#define MCFG_M1IO_AN1_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 1);
#define MCFG_M1IO_AN2_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 2);
#define MCFG_M1IO_AN3_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 3);
#define MCFG_M1IO_AN4_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 4);
#define MCFG_M1IO_AN5_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 5);
#define MCFG_M1IO_AN6_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 6);
#define MCFG_M1IO_AN7_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 7);
#define MCFG_M1IO_DI0_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_di_callback(DEVCB_##_devcb, 0);
#define MCFG_M1IO_DI1_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_di_callback(DEVCB_##_devcb, 1);
#define MCFG_M1IO_DI2_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_di_callback(DEVCB_##_devcb, 2);
#define MCFG_M1IO_DO_CB(_devcb) \
devcb = &downcast<m1io_device &>(*device).set_do_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class m1io_device : public device_t
{
public:
// construction/destruction
m1io_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
template <class Object> devcb_base &set_an_callback(Object &&cb, int index)
{ return m_an_cb[index].set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_di_callback(Object &&cb, int index)
{ return m_di_cb[index].set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_do_callback(Object &&cb)
{ return m_do_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
protected:
// device-level overrides
virtual void device_start() override;
private:
// callbacks
devcb_read8 m_an_cb[8];
devcb_read8 m_di_cb[3];
devcb_write8 m_do_cb;
uint8_t m_out;
};
// device type definition
DECLARE_DEVICE_TYPE(SEGA_M1IO, m1io_device)
#endif // MAME_MACHINE_M1IO_H