mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
tms32025.cpp: devcb instead of memory map for ports (nw)
This commit is contained in:
parent
597b2417b4
commit
47ac9a7bda
@ -131,8 +131,6 @@ Table 3-2. TMS32025/26 Memory Blocks
|
||||
|
||||
#define P_IN(A) (m_io->read_word((A)<<1))
|
||||
#define P_OUT(A,V) (m_io->write_word(((A)<<1),(V)))
|
||||
#define S_IN(A) (m_io->read_word((A)<<1))
|
||||
#define S_OUT(A,V) (m_io->write_word(((A)<<1),(V)))
|
||||
|
||||
#define M_RDOP(A) ((m_pgmmap[(A) >> 7]) ? (m_pgmmap[(A) >> 7][(A) & 0x7f]) : m_direct->read_word((A)<<1))
|
||||
#define M_RDOP_ARG(A) ((m_pgmmap[(A) >> 7]) ? (m_pgmmap[(A) >> 7][(A) & 0x7f]) : m_direct->read_word((A)<<1))
|
||||
@ -212,7 +210,13 @@ tms32025_device::tms32025_device(const machine_config &mconfig, const char *tag,
|
||||
: cpu_device(mconfig, TMS32025, "TMS32025", tag, owner, clock, "tms32025", __FILE__)
|
||||
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_data_config("data", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16+1, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_bio_in(*this)
|
||||
, m_hold_in(*this)
|
||||
, m_hold_ack_out(*this)
|
||||
, m_xf_out(*this)
|
||||
, m_dr_in(*this)
|
||||
, m_dx_out(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -221,7 +225,13 @@ tms32025_device::tms32025_device(const machine_config &mconfig, device_type type
|
||||
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_data_config("data", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16+1, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
|
||||
, m_bio_in(*this)
|
||||
, m_hold_in(*this)
|
||||
, m_hold_ack_out(*this)
|
||||
, m_xf_out(*this)
|
||||
, m_dr_in(*this)
|
||||
, m_dx_out(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -674,7 +684,7 @@ void tms32025_device::bgz()
|
||||
}
|
||||
void tms32025_device::bioz()
|
||||
{
|
||||
if (S_IN(TMS32025_BIO) != CLEAR_LINE) SET_PC(M_RDOP_ARG(m_PC));
|
||||
if (m_bio_in() != CLEAR_LINE) SET_PC(M_RDOP_ARG(m_PC));
|
||||
else m_PC++ ;
|
||||
MODIFY_AR_ARP();
|
||||
}
|
||||
@ -1276,7 +1286,7 @@ void tms32025_device::rtxm() /** Serial port stuff */
|
||||
void tms32025_device::rxf()
|
||||
{
|
||||
CLR1(XF_FLAG);
|
||||
S_OUT(TMS32025_XF,CLEAR_LINE);
|
||||
m_xf_out(CLEAR_LINE);
|
||||
}
|
||||
void tms32025_device::sach()
|
||||
{
|
||||
@ -1485,7 +1495,7 @@ void tms32025_device::subt()
|
||||
void tms32025_device::sxf()
|
||||
{
|
||||
SET1(XF_FLAG);
|
||||
S_OUT(TMS32025_XF,ASSERT_LINE);
|
||||
m_xf_out(ASSERT_LINE);
|
||||
}
|
||||
void tms32025_device::tblr()
|
||||
{
|
||||
@ -1639,6 +1649,13 @@ void tms32025_device::device_start()
|
||||
m_data = &space(AS_DATA);
|
||||
m_io = &space(AS_IO);
|
||||
|
||||
m_bio_in.resolve_safe(0xffff);
|
||||
m_hold_in.resolve_safe(0xffff);
|
||||
m_hold_ack_out.resolve_safe();
|
||||
m_xf_out.resolve_safe();
|
||||
m_dr_in.resolve_safe(0xffff);
|
||||
m_dx_out.resolve_safe();
|
||||
|
||||
m_PREVPC = 0;
|
||||
m_PFC = 0;
|
||||
m_STR0 = 0;
|
||||
@ -1846,7 +1863,7 @@ void tms32025_device::device_reset()
|
||||
m_RPTC = 0; /* Reset repeat counter to 0 */
|
||||
m_IFR = 0; /* IRQ pending flags */
|
||||
|
||||
S_OUT(TMS32025_XF,ASSERT_LINE); /* XF flag is high. Must set the pin */
|
||||
m_xf_out(ASSERT_LINE); /* XF flag is high. Must set the pin */
|
||||
|
||||
/* Set the internal memory mapped registers */
|
||||
GREG = 0;
|
||||
@ -1941,7 +1958,7 @@ int tms32025_device::process_IRQs()
|
||||
}
|
||||
if ((m_IFR & 0x10) && (IMR & 0x10)) { /* Serial port receive IRQ (internal) */
|
||||
// logerror("TMS32025: Active RINT (Serial receive)\n");
|
||||
DRR = S_IN(TMS32025_DR);
|
||||
DRR = m_dr_in();
|
||||
SET_PC(0x001A);
|
||||
m_idle = 0;
|
||||
m_IFR &= (~0x10);
|
||||
@ -1950,7 +1967,7 @@ int tms32025_device::process_IRQs()
|
||||
}
|
||||
if ((m_IFR & 0x20) && (IMR & 0x20)) { /* Serial port transmit IRQ (internal) */
|
||||
// logerror("TMS32025: Active XINT (Serial transmit)\n");
|
||||
S_OUT(TMS32025_DX,DXR);
|
||||
m_dx_out(DXR);
|
||||
SET_PC(0x001C);
|
||||
m_idle = 0;
|
||||
m_IFR &= (~0x20);
|
||||
@ -2005,9 +2022,9 @@ again:
|
||||
void tms32025_device::execute_run()
|
||||
{
|
||||
/**** Respond to external hold signal */
|
||||
if (S_IN(TMS32025_HOLD) == ASSERT_LINE) {
|
||||
if (m_hold_in() == ASSERT_LINE) {
|
||||
if (m_hold == 0) {
|
||||
S_OUT(TMS32025_HOLDA,ASSERT_LINE); /* Hold-Ack (active low) */
|
||||
m_hold_ack_out(ASSERT_LINE); /* Hold-Ack (active low) */
|
||||
}
|
||||
m_hold = 1;
|
||||
if (HM) {
|
||||
@ -2021,7 +2038,7 @@ void tms32025_device::execute_run()
|
||||
}
|
||||
else {
|
||||
if (m_hold == 1) {
|
||||
S_OUT(TMS32025_HOLDA,CLEAR_LINE); /* Hold-Ack (active low) */
|
||||
m_hold_ack_out(CLEAR_LINE); /* Hold-Ack (active low) */
|
||||
process_timer(3);
|
||||
}
|
||||
m_hold = 0;
|
||||
|
@ -23,17 +23,25 @@
|
||||
#define __TMS32025_H__
|
||||
|
||||
|
||||
#define MCFG_TMS32025_BIO_IN_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */
|
||||
|
||||
#define MCFG_TMS32025_HOLD_IN_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_hold_in_cb(*device, DEVCB_##_devcb); /* HOLD input */
|
||||
|
||||
#define TMS32025_BIO 0x10000 /* BIO input */
|
||||
#define TMS32025_HOLD 0x10001 /* HOLD input */
|
||||
#define TMS32025_HOLDA 0x10001 /* HOLD Acknowledge output */
|
||||
#define TMS32025_XF 0x10002 /* XF output */
|
||||
#define TMS32025_DR 0x10003 /* Serial Data Receive input */
|
||||
#define TMS32025_DX 0x10003 /* Serial Data Transmit output */
|
||||
#define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_hold_ack_out_cb(*device, DEVCB_##_devcb); /* HOLD Acknowledge output */
|
||||
|
||||
#define MCFG_TMS32025_XF_OUT_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_xf_out_cb(*device, DEVCB_##_devcb); /* XF output */
|
||||
|
||||
#define MCFG_TMS32025_DR_IN_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_dr_in_cb(*device, DEVCB_##_devcb); /* Serial Data Receive input */
|
||||
|
||||
#define MCFG_TMS32025_DX_OUT_CB(_devcb) \
|
||||
devcb = &tms32025_device::set_dx_out_cb(*device, DEVCB_##_devcb); /* Serial Data Transmit output */
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Interrupt constants
|
||||
*/
|
||||
@ -75,6 +83,14 @@ public:
|
||||
// construction/destruction
|
||||
tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
tms32025_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
|
||||
|
||||
// static configuration helpers
|
||||
template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_hold_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_in.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_hold_ack_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_ack_out.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_xf_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_xf_out.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_dr_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dr_in.set_callback(object); }
|
||||
template<class _Object> static devcb_base & set_dx_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dx_out.set_callback(object); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -119,6 +135,13 @@ private:
|
||||
static const tms32025_opcode s_opcode_CE_subset[256];
|
||||
static const tms32025_opcode s_opcode_Dx_subset[8];
|
||||
|
||||
devcb_read16 m_bio_in;
|
||||
devcb_read16 m_hold_in;
|
||||
devcb_write16 m_hold_ack_out;
|
||||
devcb_write16 m_xf_out;
|
||||
devcb_read16 m_dr_in;
|
||||
devcb_write16 m_dx_out;
|
||||
|
||||
|
||||
/******************** CPU Internal Registers *******************/
|
||||
UINT16 m_PREVPC; /* previous program counter */
|
||||
|
@ -681,9 +681,6 @@ static ADDRESS_MAP_START( coolpool_dsp_io_map, AS_IO, 16, coolpool_state )
|
||||
AM_RANGE(0x04, 0x04) AM_READ(dsp_rom_r)
|
||||
AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x07, 0x07) AM_READ_PORT("IN1")
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(dsp_bio_line_r)
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_line_r)
|
||||
// AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_HOLDA_signal_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -837,6 +834,9 @@ static MACHINE_CONFIG_START( coolpool, coolpool_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32026,XTAL_40MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(coolpool_dsp_pgm_map)
|
||||
MCFG_CPU_IO_MAP(coolpool_dsp_io_map)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(coolpool_state, dsp_bio_line_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(coolpool_state, dsp_hold_line_r))
|
||||
// MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(coolpool_state, dsp_HOLDA_signal_w))
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,coolpool)
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
@ -780,13 +780,6 @@ static ADDRESS_MAP_START( dsp_map_data, AS_DATA, 16, mlanding_state )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("dot_ram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( dsp_map_io, AS_IO, 16, mlanding_state )
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Audio CPU memory handlers
|
||||
@ -945,7 +938,8 @@ static MACHINE_CONFIG_START( mlanding, mlanding_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32025, 32000000) // ?
|
||||
MCFG_CPU_PROGRAM_MAP(dsp_map_prog)
|
||||
MCFG_CPU_DATA_MAP(dsp_map_data)
|
||||
MCFG_CPU_IO_MAP(dsp_map_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(mlanding_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
|
||||
MCFG_DEVICE_ADD("ctc", Z80CTC, 4000000)
|
||||
MCFG_Z80CTC_ZC0_CB(WRITELINE(mlanding_state, z80ctc_to0))
|
||||
|
@ -993,9 +993,6 @@ static ADDRESS_MAP_START( master_dsp_io, AS_IO, 16, namcos21_state )
|
||||
AM_RANGE(0x0b,0x0b) AM_READWRITE(dsp_portb_r,dsp_portb_w)
|
||||
AM_RANGE(0x0c,0x0c) AM_WRITE(dsp_portc_w)
|
||||
AM_RANGE(0x0f,0x0f) AM_READ(dsp_portf_r)
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(dsp_xf_w )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/************************************************************************************/
|
||||
@ -1111,9 +1108,6 @@ static ADDRESS_MAP_START( slave_dsp_io, AS_IO, 16, namcos21_state )
|
||||
AM_RANGE(0x02,0x02) AM_READ(slave_port2_r)
|
||||
AM_RANGE(0x03,0x03) AM_READWRITE(slave_port3_r,slave_port3_w)
|
||||
AM_RANGE(0x0f,0x0f) AM_READ(slave_portf_r)
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(slave_XF_output_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/************************************************************************************/
|
||||
@ -1424,21 +1418,8 @@ static ADDRESS_MAP_START( winrun_dsp_io, AS_IO, 16, namcos21_state )
|
||||
AM_RANGE(0x0a,0x0a) AM_WRITE(winrun_dsp_render_w)
|
||||
AM_RANGE(0x0b,0x0b) AM_WRITENOP
|
||||
AM_RANGE(0x0c,0x0c) AM_WRITE(winrun_dsp_complete_w)
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(winrun_poly_reset_r )
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITENOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
READ16_MEMBER(namcos21_state::winrun_gpucomram_r)
|
||||
{
|
||||
return m_winrun_gpucomram[offset];
|
||||
}
|
||||
WRITE16_MEMBER(namcos21_state::winrun_gpucomram_w)
|
||||
{
|
||||
COMBINE_DATA( &m_winrun_gpucomram[offset] );
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(namcos21_state::winrun_dspbios_w)
|
||||
{
|
||||
COMBINE_DATA( &m_winrun_dspbios[offset] );
|
||||
@ -1491,7 +1472,7 @@ static ADDRESS_MAP_START( am_master_winrun, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w)
|
||||
AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
|
||||
AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
|
||||
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
|
||||
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
|
||||
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
|
||||
@ -1503,7 +1484,7 @@ static ADDRESS_MAP_START( am_slave_winrun, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x13ffff) AM_RAM
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
|
||||
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
|
||||
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
|
||||
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
|
||||
@ -1516,7 +1497,7 @@ static ADDRESS_MAP_START( am_gpu_winrun, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x100000, 0x100001) AM_READWRITE(winrun_gpu_color_r,winrun_gpu_color_w) /* ? */
|
||||
AM_RANGE(0x180000, 0x19ffff) AM_RAM /* work RAM */
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos21_68k_gpu_C148_r,namcos21_68k_gpu_C148_w)
|
||||
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("winrun_comram")
|
||||
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gpu_comram")
|
||||
AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x410000, 0x41ffff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
|
||||
AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gdata", 0)
|
||||
@ -1667,11 +1648,17 @@ static MACHINE_CONFIG_START( namcos21, namcos21_state )
|
||||
MCFG_CPU_PROGRAM_MAP(master_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(master_dsp_data)
|
||||
MCFG_CPU_IO_MAP(master_dsp_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos21_state, dsp_xf_w))
|
||||
|
||||
MCFG_CPU_ADD("dspslave", TMS32025,24000000*4) /* 24 MHz?; overclocked */
|
||||
MCFG_CPU_PROGRAM_MAP(slave_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(slave_dsp_data)
|
||||
MCFG_CPU_IO_MAP(slave_dsp_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos21_state, slave_XF_output_w))
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(12000))
|
||||
|
||||
@ -1729,6 +1716,10 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state )
|
||||
MCFG_CPU_PROGRAM_MAP(winrun_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(winrun_dsp_data)
|
||||
MCFG_CPU_IO_MAP(winrun_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos21_state, winrun_poly_reset_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(NOOP)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
||||
|
||||
@ -1786,6 +1777,10 @@ static MACHINE_CONFIG_START( winrun, namcos21_state )
|
||||
MCFG_CPU_PROGRAM_MAP(winrun_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(winrun_dsp_data)
|
||||
MCFG_CPU_IO_MAP(winrun_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos21_state, winrun_poly_reset_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(NOOP)
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
|
||||
MCFG_TMS32025_XF_OUT_CB(NOOP)
|
||||
|
||||
MCFG_CPU_ADD("gpu", M68000,12288000) /* graphics coprocessor */
|
||||
MCFG_CPU_PROGRAM_MAP(am_gpu_winrun)
|
||||
|
@ -162,7 +162,7 @@
|
||||
*the video board as these are known to run hot and commonly fail, especially now the system is many years old.
|
||||
*
|
||||
*CPU PCB - There are four known revisions of this PCB. Three of them have an extra connector for an
|
||||
* auxillary PCB. One of the others doesn't have that connector but is are otherwise identical.
|
||||
* auxiliary PCB. One of the others doesn't have that connector but is are otherwise identical.
|
||||
* All PCBs can be swapped to any game and it will work. However, ALL required IC's must be swapped.
|
||||
* This includes Program ROM PCB, socketed Keycus IC, socketed DATA ROM and socketed WAVE ROM(s).
|
||||
* On most games the EEPROM will re-init itself on bootup. On the others, the EEPROM can re-init itself
|
||||
@ -242,7 +242,7 @@
|
||||
*Notes:
|
||||
* J6 : Custom Namco connector for plug-in program ROM PCB
|
||||
* J11 : Custom Namco connector for optional plug-in WAVE ROM PCB (holds some SOP44 MASKROMs)
|
||||
* JC410 : Custom Namco connector for Optional plug-in Auxillary PCB (e.g. Gun Control PCB used in Time Crisis
|
||||
* JC410 : Custom Namco connector for Optional plug-in Auxiliary PCB (e.g. Gun Control PCB used in Time Crisis
|
||||
* etc)
|
||||
* The connector is populated only on the 2nd revision CPU (B) PCB 8646962600 (8646972600)
|
||||
* and 3rd Revision CPU (B) PCB 8646962600 (8646972601)
|
||||
@ -963,7 +963,7 @@
|
||||
* C407 : Namco custom C407 (QFP64) NOTE! On Revision A & B, this position is populated by an
|
||||
* Altera EPM7064 PLCC84 FPGA labelled 'SS22V1B'
|
||||
* The Altera chip runs very hot and fails quite often.
|
||||
* Even if a heaksink is added to the chip it still fails.
|
||||
* Even if a heatsink is added to the chip it still fails.
|
||||
* The failure of this chip is the primary cause of
|
||||
* video faults on Namco Super System 22 PCBs.
|
||||
* (Second reason for video faults is generally attributed
|
||||
@ -2562,11 +2562,6 @@ static ADDRESS_MAP_START( master_dsp_io, AS_IO, 16, namcos22_state )
|
||||
AM_RANGE(0xd, 0xd) AM_WRITE(namcos22_dspram16_bank_w)
|
||||
AM_RANGE(0xe, 0xe) AM_WRITE(dsp_led_w)
|
||||
AM_RANGE(0xf, 0xf) AM_READ(dsp_upload_status_r) AM_WRITENOP
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_hold_ack_w)
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(dsp_xf_output_w)
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(pdp_status_r)
|
||||
AM_RANGE(TMS32025_DR, TMS32025_DR) AM_READ(master_serial_io_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -2651,12 +2646,6 @@ static ADDRESS_MAP_START( slave_dsp_io, AS_IO, 16, namcos22_state )
|
||||
AM_RANGE(0xb, 0xb) AM_READWRITE(dsp_slave_portb_r, dsp_slave_portb_w)
|
||||
|
||||
AM_RANGE(0xc, 0xc) AM_WRITE(dsp_slave_portc_w)
|
||||
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_hold_ack_w)
|
||||
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(dsp_xf_output_w)
|
||||
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(dsp_bioz_r)
|
||||
AM_RANGE(TMS32025_DX, TMS32025_DX) AM_WRITE(slave_serial_io_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -3751,12 +3740,22 @@ static MACHINE_CONFIG_START( namcos22, namcos22_state )
|
||||
MCFG_CPU_PROGRAM_MAP(master_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(master_dsp_data)
|
||||
MCFG_CPU_IO_MAP(master_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, pdp_status_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DR_IN_CB(READ16(namcos22_state, master_serial_io_r))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("master_st", namcos22_state, dsp_master_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("slave", TMS32025,SS22_MASTER_CLOCK) /* ? */
|
||||
MCFG_CPU_PROGRAM_MAP(slave_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(slave_dsp_data)
|
||||
MCFG_CPU_IO_MAP(slave_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, dsp_bioz_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DX_OUT_CB(WRITE16(namcos22_state, slave_serial_io_w))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_st", namcos22_state, dsp_slave_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("mcu", NAMCO_C74, SS22_MASTER_CLOCK/3) // C74 on the CPU board has no periodic interrupts, it runs entirely off Timer A0
|
||||
@ -3801,12 +3800,22 @@ static MACHINE_CONFIG_START( namcos22s, namcos22_state )
|
||||
MCFG_CPU_PROGRAM_MAP(master_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(master_dsp_data)
|
||||
MCFG_CPU_IO_MAP(master_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, pdp_status_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DR_IN_CB(READ16(namcos22_state, master_serial_io_r))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("master_st", namcos22_state, dsp_master_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("slave", TMS32025,SS22_MASTER_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(slave_dsp_program)
|
||||
MCFG_CPU_DATA_MAP(slave_dsp_data)
|
||||
MCFG_CPU_IO_MAP(slave_dsp_io)
|
||||
MCFG_TMS32025_BIO_IN_CB(READ16(namcos22_state, dsp_bioz_r))
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(namcos22_state, dsp_hold_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(namcos22_state, dsp_hold_ack_w))
|
||||
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos22_state, dsp_xf_output_w))
|
||||
MCFG_TMS32025_DX_OUT_CB(WRITE16(namcos22_state, slave_serial_io_w))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_st", namcos22_state, dsp_slave_serial_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("mcu", M37710S4, SS22_MASTER_CLOCK/3)
|
||||
|
@ -153,7 +153,7 @@ DIPs
|
||||
----
|
||||
|
||||
They're now correct (including locations) according to the
|
||||
manuals. Nevertherless, ainferno manual states that the coinage
|
||||
manuals. Nevertheless, ainferno manual states that the coinage
|
||||
DIPs are the same as topland, which is clearly wrong if you try
|
||||
them ("SWB:7,8" do not set Coin B to multiple credits for each
|
||||
coin!)
|
||||
@ -536,11 +536,6 @@ static ADDRESS_MAP_START( DSP_map_data, AS_DATA, 16, taitoair_state )
|
||||
AM_RANGE(0x8000, 0xffff) AM_READWRITE(dspram_r, dspram_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( DSP_map_io, AS_IO, 16, taitoair_state )
|
||||
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_HOLD_signal_r)
|
||||
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_HOLDA_signal_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/************************************************************
|
||||
INPUT PORTS & DIPS
|
||||
@ -726,7 +721,8 @@ static MACHINE_CONFIG_START( airsys, taitoair_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32025, XTAL_36MHz) // Unverified
|
||||
MCFG_CPU_PROGRAM_MAP(DSP_map_program)
|
||||
MCFG_CPU_DATA_MAP(DSP_map_data)
|
||||
MCFG_CPU_IO_MAP(DSP_map_io)
|
||||
MCFG_TMS32025_HOLD_IN_CB(READ16(taitoair_state, dsp_HOLD_signal_r))
|
||||
MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(taitoair_state, dsp_HOLDA_signal_w))
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
|
||||
|
@ -47,7 +47,6 @@ public:
|
||||
: namcos2_shared_state(mconfig, type, tag),
|
||||
m_winrun_dspbios(*this,"winrun_dspbios"),
|
||||
m_winrun_polydata(*this,"winrun_polydata"),
|
||||
m_winrun_gpucomram(*this,"winrun_comram"),
|
||||
m_dspram16(*this,"dspram16"),
|
||||
m_mpDualPortRAM(*this,"mpdualportram"),
|
||||
m_master_dsp_code(*this,"master_dsp_code"),
|
||||
@ -57,7 +56,6 @@ public:
|
||||
|
||||
optional_shared_ptr<UINT16> m_winrun_dspbios;
|
||||
optional_shared_ptr<UINT16> m_winrun_polydata;
|
||||
optional_shared_ptr<UINT16> m_winrun_gpucomram;
|
||||
optional_shared_ptr<UINT16> m_dspram16;
|
||||
required_shared_ptr<UINT8> m_mpDualPortRAM;
|
||||
optional_shared_ptr<UINT16> m_master_dsp_code;
|
||||
@ -146,8 +144,6 @@ public:
|
||||
DECLARE_READ16_MEMBER(winrun_dsp_pointrom_data_r);
|
||||
DECLARE_WRITE16_MEMBER(winrun_dsp_complete_w);
|
||||
DECLARE_READ16_MEMBER(winrun_table_r);
|
||||
DECLARE_READ16_MEMBER(winrun_gpucomram_r);
|
||||
DECLARE_WRITE16_MEMBER(winrun_gpucomram_w);
|
||||
DECLARE_WRITE16_MEMBER(winrun_dspbios_w);
|
||||
DECLARE_READ16_MEMBER(winrun_68k_dspcomram_r);
|
||||
DECLARE_WRITE16_MEMBER(winrun_68k_dspcomram_w);
|
||||
|
Loading…
Reference in New Issue
Block a user