mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
Death to m68kfmly.c/.h, hooked parallel port to TMP68301 (very preliminary)
This commit is contained in:
parent
efab06b18e
commit
5a257583f5
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -5753,8 +5753,6 @@ src/mame/machine/konppc.h svneol=native#text/plain
|
||||
src/mame/machine/leland.c svneol=native#text/plain
|
||||
src/mame/machine/lkage.c svneol=native#text/plain
|
||||
src/mame/machine/lsasquad.c svneol=native#text/plain
|
||||
src/mame/machine/m68kfmly.c svneol=native#text/plain
|
||||
src/mame/machine/m68kfmly.h svneol=native#text/plain
|
||||
src/mame/machine/maniach.c svneol=native#text/plain
|
||||
src/mame/machine/maple-dc.c svneol=native#text/plain
|
||||
src/mame/machine/maple-dc.h svneol=native#text/plain
|
||||
|
@ -18,7 +18,10 @@ static ADDRESS_MAP_START( tmp68301_regs, AS_0, 16, tmp68301_device )
|
||||
AM_RANGE(0x094,0x095) AM_READWRITE(imr_r,imr_w)
|
||||
AM_RANGE(0x098,0x099) AM_READWRITE(iisr_r,iisr_w)
|
||||
|
||||
/* Serial */
|
||||
/* Parallel Port */
|
||||
AM_RANGE(0x10a,0x10b) AM_READWRITE(pdr_r,pdr_w)
|
||||
|
||||
/* Serial Port */
|
||||
AM_RANGE(0x18e,0x18f) AM_READWRITE(scr_r,scr_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -62,6 +65,17 @@ WRITE16_MEMBER(tmp68301_device::scr_w)
|
||||
m_scr &= 0xa1;
|
||||
}
|
||||
|
||||
/* TODO: bit direction */
|
||||
READ16_MEMBER(tmp68301_device::pdr_r)
|
||||
{
|
||||
return m_in_parallel_func(0);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tmp68301_device::pdr_w)
|
||||
{
|
||||
m_out_parallel_func(0,data);
|
||||
}
|
||||
|
||||
|
||||
tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, TMP68301, "TMP68301", tag, owner, clock, "tmp68301", __FILE__),
|
||||
@ -78,6 +92,18 @@ tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag,
|
||||
|
||||
void tmp68301_device::device_config_complete()
|
||||
{
|
||||
// inherit a copy of the static data
|
||||
const tmp68301_interface *intf = reinterpret_cast<const tmp68301_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<tmp68301_interface *>(this) = *intf;
|
||||
|
||||
// or defaults to 0 if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_in_parallel_cb, 0, sizeof(m_in_parallel_cb));
|
||||
memset(&m_out_parallel_cb, 0, sizeof(m_out_parallel_cb));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -89,6 +115,9 @@ void tmp68301_device::device_start()
|
||||
int i;
|
||||
for (i = 0; i < 3; i++)
|
||||
m_tmp68301_timer[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tmp68301_device::timer_callback), this));
|
||||
|
||||
m_in_parallel_func.resolve(m_in_parallel_cb, *this);
|
||||
m_out_parallel_func.resolve(m_out_parallel_cb, *this);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -1,8 +1,40 @@
|
||||
#ifndef TMP68301_H
|
||||
#define TMP68301_H
|
||||
|
||||
//**************************************************************************
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
/* TODO: frequency & hook it up with m68k */
|
||||
#define MCFG_TMP68301_ADD(_tag, _config) \
|
||||
MCFG_DEVICE_ADD(_tag, TMP68301, 0) \
|
||||
MCFG_DEVICE_CONFIG(_config)
|
||||
|
||||
#define MCFG_TMP68301_MODIFY(_tag, _config) \
|
||||
MCFG_DEVICE_MODIFY(_tag) \
|
||||
MCFG_DEVICE_CONFIG(_config)
|
||||
|
||||
|
||||
#define TMP68301_INTERFACE(name) \
|
||||
const tmp68301_interface (name) =
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> mb_vcu_interface
|
||||
|
||||
struct tmp68301_interface
|
||||
{
|
||||
devcb_read16 m_in_parallel_cb;
|
||||
devcb_write16 m_out_parallel_cb;
|
||||
// TODO: serial ports
|
||||
};
|
||||
|
||||
class tmp68301_device : public device_t,
|
||||
public device_memory_interface
|
||||
public device_memory_interface,
|
||||
public tmp68301_interface
|
||||
{
|
||||
public:
|
||||
tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
@ -23,6 +55,8 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(iisr_w);
|
||||
DECLARE_READ16_MEMBER(scr_r);
|
||||
DECLARE_WRITE16_MEMBER(scr_w);
|
||||
DECLARE_READ16_MEMBER(pdr_r);
|
||||
DECLARE_WRITE16_MEMBER(pdr_w);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -31,6 +65,8 @@ protected:
|
||||
virtual void device_reset();
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
|
||||
|
||||
devcb_resolved_read16 m_in_parallel_func;
|
||||
devcb_resolved_write16 m_out_parallel_func;
|
||||
private:
|
||||
// internal state
|
||||
UINT16 m_regs[0x400];
|
||||
@ -56,7 +92,4 @@ private:
|
||||
|
||||
extern const device_type TMP68301;
|
||||
|
||||
#define MCFG_TMP68301_ADD(_tag) \
|
||||
MCFG_DEVICE_ADD(_tag, TMP68301, 0)
|
||||
|
||||
#endif
|
||||
|
@ -634,6 +634,12 @@ static const z80_daisy_config daisy_chain_sound[] =
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static TMP68301_INTERFACE( tmp68301_interface )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
|
||||
|
||||
@ -642,7 +648,7 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
|
||||
MCFG_CPU_PROGRAM_MAP(csplayh5_map)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", csplayh5_state, csplayh5_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_TMP68301_ADD("tmp68301")
|
||||
MCFG_TMP68301_ADD("tmp68301",tmp68301_interface)
|
||||
|
||||
#if USE_H8
|
||||
MCFG_CPU_ADD("subcpu", H83002, 16000000) /* unknown clock */
|
||||
|
@ -23,8 +23,6 @@
|
||||
/******************************************************************************
|
||||
Memo:
|
||||
|
||||
- TMP68301 emulation is not implemented (machine/m68kfmly.c, .h does nothing).
|
||||
|
||||
- niyanpai's 2p start does not mean 2p simultaneous or exchanging play.
|
||||
Simply uses controls for 2p side.
|
||||
|
||||
@ -38,7 +36,7 @@ Memo:
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "machine/m68kfmly.h"
|
||||
#include "machine/tmp68301.h"
|
||||
#include "machine/z80ctc.h"
|
||||
#include "includes/nb1413m3.h"
|
||||
#include "sound/dac.h"
|
||||
@ -306,15 +304,22 @@ READ16_MEMBER(niyanpai_state::musobana_inputport_0_r)
|
||||
return (portdata);
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(niyanpai_state::musobana_outcoin_flag_r)
|
||||
WRITE16_MEMBER(niyanpai_state::tmp68301_parallel_port_w)
|
||||
{
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
// tmp68301_parallel_interface[0x05]
|
||||
// bit 0 coin counter
|
||||
// bit 2 motor on
|
||||
// bit 3 coin lock
|
||||
// bit 8-9 video page select?
|
||||
|
||||
if (tmp68301_parallel_interface_r(space, 0x0005, 0x00ff) & 0x0004) m_musobana_outcoin_flag ^= 1;
|
||||
m_motor_on = data & 4;
|
||||
coin_counter_w(machine(),0,data & 1);
|
||||
coin_lockout_w(machine(), 0,data & 0x08);
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(niyanpai_state::musobana_outcoin_flag_r)
|
||||
{
|
||||
if (m_motor_on) m_musobana_outcoin_flag ^= 1;
|
||||
else m_musobana_outcoin_flag = 1;
|
||||
|
||||
return m_musobana_outcoin_flag & 0x01;
|
||||
@ -325,14 +330,6 @@ WRITE16_MEMBER(niyanpai_state::musobana_inputport_w)
|
||||
m_musobana_inputport = data;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( tmp68301_regs, AS_PROGRAM, 16, niyanpai_state )
|
||||
AM_RANGE(0xfffc00, 0xfffc0f) AM_READWRITE_LEGACY(tmp68301_address_decoder_r,tmp68301_address_decoder_w)
|
||||
AM_RANGE(0xfffc80, 0xfffc9f) AM_READWRITE_LEGACY(tmp68301_interrupt_controller_r,tmp68301_interrupt_controller_w)
|
||||
AM_RANGE(0xfffd00, 0xfffd0f) AM_READWRITE_LEGACY(tmp68301_parallel_interface_r,tmp68301_parallel_interface_w)
|
||||
AM_RANGE(0xfffd80, 0xfffdaf) AM_READWRITE_LEGACY(tmp68301_serial_interface_r,tmp68301_serial_interface_w)
|
||||
AM_RANGE(0xfffe00, 0xfffe4f) AM_READWRITE_LEGACY(tmp68301_timer_r,tmp68301_timer_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( niyanpai_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram")
|
||||
@ -365,7 +362,7 @@ static ADDRESS_MAP_START( niyanpai_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
|
||||
AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
|
||||
|
||||
AM_IMPORT_FROM( tmp68301_regs )
|
||||
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( musobana_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
@ -403,7 +400,7 @@ static ADDRESS_MAP_START( musobana_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
|
||||
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
|
||||
|
||||
AM_IMPORT_FROM( tmp68301_regs )
|
||||
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( mhhonban_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
@ -443,7 +440,7 @@ static ADDRESS_MAP_START( mhhonban_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
|
||||
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
|
||||
|
||||
AM_IMPORT_FROM( tmp68301_regs )
|
||||
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( zokumahj_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
@ -482,7 +479,7 @@ static ADDRESS_MAP_START( zokumahj_map, AS_PROGRAM, 16, niyanpai_state )
|
||||
AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
|
||||
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
|
||||
|
||||
AM_IMPORT_FROM( tmp68301_regs )
|
||||
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -928,7 +925,7 @@ INPUT_PORTS_END
|
||||
|
||||
INTERRUPT_GEN_MEMBER(niyanpai_state::niyanpai_interrupt)
|
||||
{
|
||||
device.execute().set_input_line_and_vector(1, HOLD_LINE,0x100/4);
|
||||
m_tmp68301->external_interrupt_0();
|
||||
}
|
||||
|
||||
static const z80_daisy_config daisy_chain_sound[] =
|
||||
@ -937,6 +934,11 @@ static const z80_daisy_config daisy_chain_sound[] =
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static TMP68301_INTERFACE( tmp68301_interface )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER16(niyanpai_state,tmp68301_parallel_port_w)
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
|
||||
|
||||
@ -945,6 +947,8 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
|
||||
MCFG_CPU_PROGRAM_MAP(niyanpai_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", niyanpai_state, niyanpai_interrupt)
|
||||
|
||||
MCFG_TMP68301_ADD("tmp68301",tmp68301_interface)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 8000000) /* TMPZ84C011, 8.00 MHz */
|
||||
MCFG_CPU_CONFIG(daisy_chain_sound)
|
||||
MCFG_CPU_PROGRAM_MAP(niyanpai_sound_map)
|
||||
|
@ -172,7 +172,6 @@ static ADDRESS_MAP_START( realbrk_mem, AS_PROGRAM, 16, realbrk_state )
|
||||
AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Coins
|
||||
AM_RANGE(0xc00004, 0xc00005) AM_RAM_READ(realbrk_dsw_r) AM_SHARE("dsw_select") // DSW select
|
||||
AM_RANGE(0xff0000, 0xfffbff) AM_RAM // RAM
|
||||
AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(realbrk_flipscreen_w ) // Hack! Parallel port data register
|
||||
AM_IMPORT_FROM(base_mem)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -751,6 +750,12 @@ INTERRUPT_GEN_MEMBER(realbrk_state::realbrk_interrupt)
|
||||
m_tmp68301->external_interrupt_1();
|
||||
}
|
||||
|
||||
static TMP68301_INTERFACE( tmp68301_interface )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER16(realbrk_state,realbrk_flipscreen_w)
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( realbrk, realbrk_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -758,7 +763,7 @@ static MACHINE_CONFIG_START( realbrk, realbrk_state )
|
||||
MCFG_CPU_PROGRAM_MAP(realbrk_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", realbrk_state, realbrk_interrupt)
|
||||
|
||||
MCFG_TMP68301_ADD("tmp68301")
|
||||
MCFG_TMP68301_ADD("tmp68301", tmp68301_interface)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
|
@ -210,7 +210,6 @@ static ADDRESS_MAP_START( gundamex_map, AS_PROGRAM, 16, seta2_state )
|
||||
AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
|
||||
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
|
||||
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
|
||||
AM_RANGE(0xfffd0a, 0xfffd0b) AM_READWRITE(gundamex_eeprom_r,gundamex_eeprom_w) // parallel data register
|
||||
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -442,7 +441,6 @@ static ADDRESS_MAP_START( reelquak_map, AS_PROGRAM, 16, seta2_state )
|
||||
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
|
||||
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
|
||||
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
|
||||
AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(reelquak_leds_w ) // parallel data register (leds)
|
||||
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -502,7 +500,6 @@ static ADDRESS_MAP_START( samshoot_map, AS_PROGRAM, 16, seta2_state )
|
||||
|
||||
AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
|
||||
|
||||
AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2") // parallel data register (DSW 2)
|
||||
AM_RANGE( 0xfffc00, 0xffffff ) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -1990,13 +1987,37 @@ static const x1_010_interface x1_010_sound_intf =
|
||||
0x0000, /* address */
|
||||
};
|
||||
|
||||
static TMP68301_INTERFACE( tmp68301_default_intf )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
||||
static TMP68301_INTERFACE( tmp68301_gundamex_intf )
|
||||
{
|
||||
DEVCB_DRIVER_MEMBER16(seta2_state,gundamex_eeprom_r),
|
||||
DEVCB_DRIVER_MEMBER16(seta2_state,gundamex_eeprom_w)
|
||||
};
|
||||
|
||||
static TMP68301_INTERFACE( tmp68301_reelquak_intf )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER16(seta2_state,reelquak_leds_w)
|
||||
};
|
||||
|
||||
static TMP68301_INTERFACE( tmp68301_samshoot_intf )
|
||||
{
|
||||
DEVCB_INPUT_PORT("DSW2"),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( seta2, seta2_state )
|
||||
MCFG_CPU_ADD("maincpu", M68301, XTAL_50MHz/3) // !! TMP68301 !!
|
||||
MCFG_CPU_PROGRAM_MAP(mj4simai_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt)
|
||||
|
||||
MCFG_TMP68301_ADD("tmp68301")
|
||||
|
||||
MCFG_TMP68301_ADD("tmp68301", tmp68301_default_intf)
|
||||
|
||||
// video hardware
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -2036,6 +2057,8 @@ static MACHINE_CONFIG_DERIVED( gundamex, seta2 )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(gundamex_map)
|
||||
|
||||
MCFG_TMP68301_MODIFY("tmp68301",tmp68301_gundamex_intf)
|
||||
|
||||
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
|
||||
|
||||
// video hardware
|
||||
@ -2102,6 +2125,8 @@ static MACHINE_CONFIG_DERIVED( reelquak, seta2 )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(reelquak_map)
|
||||
|
||||
MCFG_TMP68301_MODIFY("tmp68301",tmp68301_reelquak_intf)
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
|
||||
|
||||
@ -2118,6 +2143,8 @@ static MACHINE_CONFIG_DERIVED( samshoot, seta2 )
|
||||
MCFG_CPU_PROGRAM_MAP(samshoot_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(seta2_state, samshoot_interrupt, 60)
|
||||
|
||||
MCFG_TMP68301_MODIFY("tmp68301",tmp68301_samshoot_intf)
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
||||
// video hardware
|
||||
@ -2240,7 +2267,7 @@ static MACHINE_CONFIG_START( namcostr, seta2_state )
|
||||
MCFG_CPU_PROGRAM_MAP(namcostr_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt)
|
||||
|
||||
MCFG_TMP68301_ADD("tmp68301")
|
||||
MCFG_TMP68301_ADD("tmp68301",tmp68301_reelquak_intf)
|
||||
|
||||
|
||||
// video hardware
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "sound/dac.h"
|
||||
#include "machine/tmp68301.h"
|
||||
#define VRAM_MAX 3
|
||||
|
||||
class niyanpai_state : public driver_device
|
||||
@ -12,6 +13,7 @@ public:
|
||||
niyanpai_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag) ,
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_tmp68301(*this, "tmp68301"),
|
||||
m_dac1(*this, "dac1"),
|
||||
m_dac2(*this, "dac2") { }
|
||||
|
||||
@ -86,6 +88,8 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(niyanpai_clutsel_2_w);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(musobana_outcoin_flag_r);
|
||||
DECLARE_DRIVER_INIT(niyanpai);
|
||||
DECLARE_WRITE16_MEMBER(tmp68301_parallel_port_w);
|
||||
UINT8 m_motor_on;
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_niyanpai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
@ -99,6 +103,7 @@ public:
|
||||
void niyanpai_gfxdraw(int vram);
|
||||
void niyanpai_soundbank_w(int data);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<tmp68301_device> m_tmp68301;
|
||||
required_device<dac_device> m_dac1;
|
||||
required_device<dac_device> m_dac2;
|
||||
|
||||
|
@ -1,217 +0,0 @@
|
||||
/******************************************************************************
|
||||
|
||||
TMP68301 support (dummy) driver
|
||||
|
||||
Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 2000/12/23 -
|
||||
|
||||
******************************************************************************/
|
||||
/******************************************************************************
|
||||
Memo:
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "m68kfmly.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
|
||||
|
||||
#define VERBOSE 0
|
||||
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
||||
|
||||
|
||||
// TMP68301 System Memory Map
|
||||
//
|
||||
// 0xFFFC00 - 0xFFFC0F TMP68301 Address decoder
|
||||
// 0xFFFC80 - 0xFFFC9F TMP68301 Interrupt controller
|
||||
// 0xFFFD00 - 0xFFFD0F TMP68301 Parallel interface
|
||||
// 0xFFFD80 - 0xFFFDAF TMP68301 Serial interface
|
||||
// 0xFFFE00 - 0xFFFE4F TMP68301 Timer
|
||||
//
|
||||
// Address decoder
|
||||
// 15 7
|
||||
// 0xFFFC00 AMAR0 AAMR0
|
||||
// 0xFFFC02 - AACR0
|
||||
// 0xFFFC04 AMAR1 AAMR1
|
||||
// 0xFFFC06 - AACR1
|
||||
// 0xFFFC08 - AACR2
|
||||
// 0xFFFC0A - ATOR
|
||||
// 0xFFFC0C ARELR
|
||||
// 0xFFFC0E - -
|
||||
//
|
||||
// Interrupt controller
|
||||
// 15 7
|
||||
// 0xFFFC80 - ICR0
|
||||
// 0xFFFC82 - ICR1
|
||||
// 0xFFFC84 - ICR2
|
||||
// 0xFFFC86 - ICR3
|
||||
// 0xFFFC88 - ICR4
|
||||
// 0xFFFC8A - ICR5
|
||||
// 0xFFFC8C - ICR6
|
||||
// 0xFFFC8E - ICR7
|
||||
// 0xFFFC90 - ICR8
|
||||
// 0xFFFC92 - ICR9
|
||||
// 0xFFFC94 IMR
|
||||
// 0xFFFC96 IPR
|
||||
// 0xFFFC98 IISR
|
||||
// 0xFFFC9A - IVNR
|
||||
// 0xFFFC9C - IEIR
|
||||
// 0xFFFC9E - -
|
||||
//
|
||||
// Parallel interface
|
||||
// 15 7
|
||||
// 0xFFFD00 PDIR
|
||||
// 0xFFFD02 - PCR
|
||||
// 0xFFFD04 - PSR
|
||||
// 0xFFFD06 - PCMR
|
||||
// 0xFFFD08 - PMR
|
||||
// 0xFFFD0A PDR
|
||||
// 0xFFFD0C - PPR1
|
||||
// 0xFFFD0E - PPR2
|
||||
//
|
||||
// Serial interface
|
||||
// 15 7
|
||||
// 0xFFFD80 - SMR0
|
||||
// 0xFFFD82 - SCMR0
|
||||
// 0xFFFD84 - SBRR0
|
||||
// 0xFFFD86 - SSR0
|
||||
// 0xFFFD88 - SDR0
|
||||
// 0xFFFD8A - -
|
||||
// 0xFFFD8C - SPR
|
||||
// 0xFFFD8E - SCR
|
||||
// 0xFFFD90 - SMR1
|
||||
// 0xFFFD92 - SCMR1
|
||||
// 0xFFFD94 - SBRR1
|
||||
// 0xFFFD96 - SSR1
|
||||
// 0xFFFD98 - SDR1
|
||||
// 0xFFFD9A - -
|
||||
// 0xFFFD9C - -
|
||||
// 0xFFFD9E - -
|
||||
// 0xFFFDA0 - SMR2
|
||||
// 0xFFFDA2 - SCMR2
|
||||
// 0xFFFDA4 - SBRR2
|
||||
// 0xFFFDA6 - SSR2
|
||||
// 0xFFFDA8 - SDR2
|
||||
// 0xFFFDAA - -
|
||||
// 0xFFFDAC - -
|
||||
// 0xFFFDAE - -
|
||||
//
|
||||
// Timer
|
||||
// 15 7
|
||||
// 0xFFFE00 TCR0
|
||||
// 0xFFFE02 - -
|
||||
// 0xFFFE04 TMCR0
|
||||
// 0xFFFE06 - -
|
||||
// 0xFFFE08 - -
|
||||
// 0xFFFE0A - -
|
||||
// 0xFFFE0C TCTR0
|
||||
// 0xFFFE0E - -
|
||||
// 0xFFFE10 - -
|
||||
// 0xFFFE12 - -
|
||||
// 0xFFFE14 - -
|
||||
// 0xFFFE16 - -
|
||||
// 0xFFFE18 - -
|
||||
// 0xFFFE1A - -
|
||||
// 0xFFFE1C - -
|
||||
// 0xFFFE1E - -
|
||||
// 0xFFFE20 TCR1
|
||||
// 0xFFFE22 - -
|
||||
// 0xFFFE24 TMCR11
|
||||
// 0xFFFE26 - -
|
||||
// 0xFFFE28 TMCR12
|
||||
// 0xFFFE2A - -
|
||||
// 0xFFFE2C TCTR1
|
||||
// 0xFFFE2E - -
|
||||
// 0xFFFE30 - -
|
||||
// 0xFFFE32 - -
|
||||
// 0xFFFE34 - -
|
||||
// 0xFFFE36 - -
|
||||
// 0xFFFE38 - -
|
||||
// 0xFFFE3A - -
|
||||
// 0xFFFE3C - -
|
||||
// 0xFFFE3E - -
|
||||
// 0xFFFE40 TCR2
|
||||
// 0xFFFE42 - -
|
||||
// 0xFFFE44 TMCR21
|
||||
// 0xFFFE46 - -
|
||||
// 0xFFFE48 TMCR22
|
||||
// 0xFFFE4A - -
|
||||
// 0xFFFE4C TCTR2
|
||||
// 0xFFFE4E - -
|
||||
|
||||
|
||||
static UINT16 tmp68301_address_decoder[0x10];
|
||||
static UINT16 tmp68301_interrupt_controller[0x20];
|
||||
static UINT16 tmp68301_parallel_interface[0x10];
|
||||
static UINT16 tmp68301_serial_interface[0x30];
|
||||
static UINT16 tmp68301_timer[0x50];
|
||||
|
||||
|
||||
READ16_HANDLER( tmp68301_address_decoder_r )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_address_decoder_r (%08X)\n", space.device().safe_pc(), (0xfffc00 + (offset * 2))));
|
||||
|
||||
return tmp68301_address_decoder[offset];
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( tmp68301_address_decoder_w )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_address_decoder_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffc00 + (offset * 2)), data));
|
||||
|
||||
tmp68301_address_decoder[offset] = data;
|
||||
}
|
||||
|
||||
READ16_HANDLER( tmp68301_interrupt_controller_r )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_interrupt_controller_r (%08X)\n", space.device().safe_pc(), (0xfffc80 + (offset * 2))));
|
||||
|
||||
return tmp68301_interrupt_controller[offset];
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( tmp68301_interrupt_controller_w )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_interrupt_controller_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffc80 + (offset * 2)), data));
|
||||
|
||||
tmp68301_interrupt_controller[offset] = data;
|
||||
}
|
||||
|
||||
READ16_HANDLER( tmp68301_parallel_interface_r )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_parallel_interface_r (%08X)\n", space.device().safe_pc(), (0xfffd00 + (offset * 2))));
|
||||
|
||||
return tmp68301_parallel_interface[offset];
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( tmp68301_parallel_interface_w )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_parallel_interface_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffd00 + (offset * 2)), data));
|
||||
|
||||
tmp68301_parallel_interface[offset] = data;
|
||||
}
|
||||
|
||||
READ16_HANDLER( tmp68301_serial_interface_r )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_serial_interface_r (%08X)\n", space.device().safe_pc(), (0xfffd80 + (offset * 2))));
|
||||
|
||||
return tmp68301_serial_interface[offset];
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( tmp68301_serial_interface_w )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_serial_interface_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffd80 + (offset * 2)), data));
|
||||
|
||||
tmp68301_serial_interface[offset] = data;
|
||||
}
|
||||
|
||||
READ16_HANDLER( tmp68301_timer_r )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_timer_r (%08X)\n", space.device().safe_pc(), (0xfffe00 + (offset * 2))));
|
||||
|
||||
return tmp68301_timer[offset];
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( tmp68301_timer_w )
|
||||
{
|
||||
LOG(("PC %08X: TMP68301_timer_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffe00 + (offset * 2)), data));
|
||||
|
||||
tmp68301_timer[offset] = data;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
/******************************************************************************
|
||||
|
||||
TMP68301 support (dummy) driver
|
||||
|
||||
Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 2000/12/23 -
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_address_decoder_r );
|
||||
ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_address_decoder_w );
|
||||
ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_interrupt_controller_r );
|
||||
ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_interrupt_controller_w );
|
||||
ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_parallel_interface_r );
|
||||
ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_parallel_interface_w );
|
||||
ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_serial_interface_r );
|
||||
ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_serial_interface_w );
|
||||
ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_timer_r );
|
||||
ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_timer_w );
|
@ -1394,7 +1394,7 @@ $(MAMEOBJ)/nichibut.a: \
|
||||
$(DRIVERS)/nbmj8991.o $(VIDEO)/nbmj8991.o \
|
||||
$(DRIVERS)/nbmj9195.o $(VIDEO)/nbmj9195.o \
|
||||
$(DRIVERS)/nightgal.o \
|
||||
$(DRIVERS)/niyanpai.o $(MACHINE)/m68kfmly.o $(VIDEO)/niyanpai.o \
|
||||
$(DRIVERS)/niyanpai.o $(VIDEO)/niyanpai.o \
|
||||
$(DRIVERS)/pastelg.o $(VIDEO)/pastelg.o \
|
||||
$(DRIVERS)/seicross.o $(VIDEO)/seicross.o \
|
||||
$(DRIVERS)/terracre.o $(VIDEO)/terracre.o \
|
||||
|
Loading…
Reference in New Issue
Block a user