summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/devices/machine/tmp68301.cpp62
-rw-r--r--src/devices/machine/tmp68301.h24
-rw-r--r--src/mame/drivers/bingowav.cpp6
-rw-r--r--src/mame/drivers/csplayh5.cpp16
-rw-r--r--src/mame/drivers/joystand.cpp18
-rw-r--r--src/mame/drivers/krz2000.cpp7
-rw-r--r--src/mame/drivers/niyanpai.cpp18
-rw-r--r--src/mame/drivers/realbrk.cpp14
-rw-r--r--src/mame/drivers/seta.cpp11
-rw-r--r--src/mame/drivers/seta2.cpp42
-rw-r--r--src/mame/includes/niyanpai.h4
-rw-r--r--src/mame/includes/realbrk.h4
-rw-r--r--src/mame/includes/seta.h4
-rw-r--r--src/mame/includes/seta2.h2
-rw-r--r--src/mame/video/seta2.cpp5
15 files changed, 62 insertions, 175 deletions
diff --git a/src/devices/machine/tmp68301.cpp b/src/devices/machine/tmp68301.cpp
index ebc710bcde5..1eea072c64a 100644
--- a/src/devices/machine/tmp68301.cpp
+++ b/src/devices/machine/tmp68301.cpp
@@ -23,7 +23,8 @@ DEFINE_DEVICE_TYPE(TMP68301, tmp68301_device, "tmp68301", "Toshiba TMP68301")
void tmp68301_device::tmp68301_regs(address_map &map)
{
-// AM_RANGE(0x000,0x3ff) AM_RAM
+ map(0x000, 0x3ff).rw(FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
+
map(0x080, 0x093).rw(FUNC(tmp68301_device::icr_r), FUNC(tmp68301_device::icr_w)).umask16(0x00ff);
map(0x094, 0x095).rw(FUNC(tmp68301_device::imr_r), FUNC(tmp68301_device::imr_w));
@@ -134,9 +135,7 @@ WRITE8_MEMBER(tmp68301_device::icr_w)
}
tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMP68301, tag, owner, clock),
- device_memory_interface(mconfig, *this),
- m_cpu(*this, finder_base::DUMMY_TAG),
+ : m68000_device(mconfig, TMP68301, tag, owner, clock),
m_in_parallel_cb(*this),
m_out_parallel_cb(*this),
m_ipl(0),
@@ -145,8 +144,7 @@ tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag,
m_iisr(0),
m_scr(0),
m_pdir(0),
- m_pdr(0),
- m_space_config("regs", ENDIANNESS_LITTLE, 16, 10, 0, address_map_constructor(FUNC(tmp68301_device::tmp68301_regs), this))
+ m_pdr(0)
{
memset(m_regs, 0, sizeof(m_regs));
memset(m_icr, 0, sizeof(m_icr));
@@ -159,13 +157,17 @@ tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag,
void tmp68301_device::device_start()
{
- int i;
- for (i = 0; i < 3; i++)
+ m68000_device::device_start();
+
+ for (int 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_cb.resolve_safe(0);
m_out_parallel_cb.resolve_safe();
+ m_program->install_device(0xfffc00, 0xffffff, *this, &tmp68301_device::tmp68301_regs);
+ m_int_ack_callback = device_irq_acknowledge_delegate(FUNC(tmp68301_device::irq_callback), this);
+
save_item(NAME(m_regs));
save_item(NAME(m_icr));
save_item(NAME(m_ipl));
@@ -183,6 +185,8 @@ void tmp68301_device::device_start()
void tmp68301_device::device_reset()
{
+ m68000_device::device_reset();
+
m_ipr = 0;
m_iisr = 0;
m_imr = 0x7f7; // mask all irqs
@@ -190,40 +194,10 @@ void tmp68301_device::device_reset()
update_ipl();
}
-//-------------------------------------------------
-// memory_space_config - return a description of
-// any address spaces owned by this device
-//-------------------------------------------------
-
-device_memory_interface::space_config_vector tmp68301_device::memory_space_config() const
-{
- return space_config_vector {
- std::make_pair(0, &m_space_config)
- };
-}
-
//**************************************************************************
// INLINE HELPERS
//**************************************************************************
-//-------------------------------------------------
-// read_byte - read a byte at the given address
-//-------------------------------------------------
-
-inline uint16_t tmp68301_device::read_word(offs_t address)
-{
- return space(0).read_word(address << 1);
-}
-
-//-------------------------------------------------
-// write_byte - write a byte at the given address
-//-------------------------------------------------
-
-inline void tmp68301_device::write_word(offs_t address, uint16_t data)
-{
- space(0).write_word(address << 1, data);
-}
-
IRQ_CALLBACK_MEMBER(tmp68301_device::irq_callback)
{
uint8_t IVNR = m_regs[0x9a/2] & 0xe0; // Interrupt Vector Number Register (IVNR)
@@ -312,7 +286,7 @@ void tmp68301_device::update_timer(int i)
{
int scale = (TCR & 0x3c00)>>10; // P4..1
if (scale > 8) scale = 8;
- duration = attotime::from_hz(m_cpu->unscaled_clock()) * ((1 << scale) * max);
+ duration = attotime::from_hz(unscaled_clock()) * ((1 << scale) * max);
}
break;
}
@@ -343,9 +317,9 @@ void tmp68301_device::update_ipl()
if (new_ipl != m_ipl)
{
if (m_ipl != 0)
- m_cpu->set_input_line(m_ipl, CLEAR_LINE);
+ set_input_line(m_ipl, CLEAR_LINE);
if (new_ipl != 0)
- m_cpu->set_input_line(new_ipl, ASSERT_LINE);
+ set_input_line(new_ipl, ASSERT_LINE);
m_ipl = new_ipl;
}
@@ -366,18 +340,16 @@ uint8_t tmp68301_device::serial_interrupt_cause(int channel)
READ16_MEMBER( tmp68301_device::regs_r )
{
- return read_word(offset);
+ return m_regs[offset];
}
WRITE16_MEMBER( tmp68301_device::regs_w )
{
COMBINE_DATA(&m_regs[offset]);
- write_word(offset,m_regs[offset]);
-
if (!ACCESSING_BITS_0_7) return;
-// logerror("CPU #0 PC %06X: TMP68301 Reg %04X<-%04X & %04X\n", m_cpu->pc(),offset*2,data,mem_mask^0xffff);
+// logerror("CPU #0 PC %06X: TMP68301 Reg %04X<-%04X & %04X\n", >pc(),offset*2,data,mem_mask^0xffff);
switch( offset * 2 )
{
diff --git a/src/devices/machine/tmp68301.h b/src/devices/machine/tmp68301.h
index e019387802b..c350b9b0be6 100644
--- a/src/devices/machine/tmp68301.h
+++ b/src/devices/machine/tmp68301.h
@@ -16,27 +16,19 @@
-class tmp68301_device : public device_t,
- public device_memory_interface
+class tmp68301_device : public m68000_device
{
public:
tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <typename T> void set_cputag(T &&tag) { m_cpu.set_tag(std::forward<T>(tag)); } // FIXME: M68000 ought to be a parent class, not an external object
auto in_parallel_callback() { return m_in_parallel_cb.bind(); }
auto out_parallel_callback() { return m_out_parallel_cb.bind(); }
- // Hardware Registers
- DECLARE_READ16_MEMBER( regs_r );
- DECLARE_WRITE16_MEMBER( regs_w );
-
// Interrupts
void external_interrupt_0();
void external_interrupt_1();
void external_interrupt_2();
- IRQ_CALLBACK_MEMBER(irq_callback);
-
private:
DECLARE_READ16_MEMBER(imr_r);
DECLARE_WRITE16_MEMBER(imr_w);
@@ -53,13 +45,18 @@ private:
DECLARE_READ8_MEMBER(icr_r);
DECLARE_WRITE8_MEMBER(icr_w);
+ // Hardware Registers
+ DECLARE_READ16_MEMBER( regs_r );
+ DECLARE_WRITE16_MEMBER( regs_w );
+
void tmp68301_regs(address_map &map);
+ IRQ_CALLBACK_MEMBER(irq_callback);
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual space_config_vector memory_space_config() const override;
private:
TIMER_CALLBACK_MEMBER(timer_callback);
@@ -78,11 +75,6 @@ private:
static constexpr uint16_t TIMER1_IRQ = 1 << 9;
static constexpr uint16_t TIMER2_IRQ = 1 << 10;
- inline uint16_t read_word(offs_t address);
- inline void write_word(offs_t address, uint16_t data);
-
- required_device<m68000_base_device> m_cpu;
-
devcb_read16 m_in_parallel_cb;
devcb_write16 m_out_parallel_cb;
@@ -100,8 +92,6 @@ private:
uint16_t m_pdir;
uint16_t m_pdr;
uint8_t m_icr[10];
-
- const address_space_config m_space_config;
};
DECLARE_DEVICE_TYPE(TMP68301, tmp68301_device)
diff --git a/src/mame/drivers/bingowav.cpp b/src/mame/drivers/bingowav.cpp
index f2284300fc5..9286efd3343 100644
--- a/src/mame/drivers/bingowav.cpp
+++ b/src/mame/drivers/bingowav.cpp
@@ -82,7 +82,6 @@ void bingowav_state::bingowav_main_map(address_map &map)
map(0x140000, 0x140001).nopr();
map(0x150001, 0x150001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
map(0x150003, 0x150003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
- map(0xfffc00, 0xffffff).rw("maintmp", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
}
void bingowav_state::bingowav_audio_map(address_map &map)
@@ -114,12 +113,9 @@ INPUT_PORTS_END
void bingowav_state::bingowav(machine_config &config)
{
- M68000(config, m_maincpu, 12000000); // actually TMP63803F-16
+ TMP68301(config, m_maincpu, 12000000); // actually TMP63803F-16
m_maincpu->set_addrmap(AS_PROGRAM, &bingowav_state::bingowav_main_map);
- tmp68301_device &tmp68301(TMP68301(config, "maintmp", 0)); // wrong
- tmp68301.set_cputag(m_maincpu);
-
te7750_device &mainioh(TE7750(config, "mainioh"));
mainioh.ios_cb().set_constant(5);
diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp
index 6ac1e75b7ec..bca9301e1ca 100644
--- a/src/mame/drivers/csplayh5.cpp
+++ b/src/mame/drivers/csplayh5.cpp
@@ -49,14 +49,12 @@ public:
csplayh5_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_nichisnd(*this, "nichisnd"),
m_key(*this, "KEY.%u", 0),
m_region_maincpu(*this, "maincpu")
{ }
- required_device<cpu_device> m_maincpu;
- required_device<tmp68301_device> m_tmp68301;
+ required_device<tmp68301_device> m_maincpu;
required_device<nichisnd_device> m_nichisnd;
required_ioport_array<5> m_key;
required_memory_region m_region_maincpu;
@@ -142,8 +140,6 @@ void csplayh5_state::csplayh5_map(address_map &map)
map(0x800000, 0xbfffff).rom().region("blit_gfx", 0); // GFX ROM routes here
map(0xc00000, 0xc7ffff).ram().share("nvram").mirror(0x380000); // work RAM
-
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
#if USE_H8
@@ -330,7 +326,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(csplayh5_state::csplayh5_irq)
int scanline = param;
if(scanline == 212*2)
- m_tmp68301->external_interrupt_0();
+ m_maincpu->external_interrupt_0();
}
WRITE_LINE_MEMBER(csplayh5_state::csplayh5_vdp0_interrupt)
@@ -361,16 +357,12 @@ WRITE16_MEMBER(csplayh5_state::tmp68301_parallel_port_w)
void csplayh5_state::csplayh5(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000); /* TMP68301-16 */
+ TMP68301(config, m_maincpu, 16000000); /* TMP68301-16 */
m_maincpu->set_addrmap(AS_PROGRAM, &csplayh5_state::csplayh5_map);
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
+ m_maincpu->out_parallel_callback().set(FUNC(csplayh5_state::tmp68301_parallel_port_w));
TIMER(config, "scantimer", 0).configure_scanline(timer_device::expired_delegate(FUNC(csplayh5_state::csplayh5_irq), this), "screen", 0, 1);
- TMP68301(config, m_tmp68301, 0);
- m_tmp68301->set_cputag(m_maincpu);
- m_tmp68301->out_parallel_callback().set(FUNC(csplayh5_state::tmp68301_parallel_port_w));
-
#if USE_H8
h830002_device &subcpu(H83002(config, "subcpu", DVD_CLOCK/2)); /* unknown divider */
subcpu.set_addrmap(AS_PROGRAM, &csplayh5_state::csplayh5_sub_map);
diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp
index 633de6a096e..2d6544d7069 100644
--- a/src/mame/drivers/joystand.cpp
+++ b/src/mame/drivers/joystand.cpp
@@ -106,7 +106,6 @@ public:
joystand_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_palette(*this, "palette"),
m_bg15_palette(*this, "bg15_palette"),
m_gfxdecode(*this, "gfxdecode"),
@@ -142,8 +141,7 @@ protected:
private:
// devices
- required_device<cpu_device> m_maincpu;
- required_device<tmp68301_device> m_tmp68301;
+ required_device<tmp68301_device> m_maincpu;
required_device<palette_device> m_palette;
required_device<palette_device> m_bg15_palette;
required_device<gfxdecode_device> m_gfxdecode;
@@ -479,8 +477,6 @@ void joystand_state::joystand_map(address_map &map)
map(0xe00020, 0xe00021).r(FUNC(joystand_state::e00020_r)); // master slot
map(0xe80040, 0xe8005f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
-
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -584,21 +580,17 @@ void joystand_state::machine_reset()
INTERRUPT_GEN_MEMBER(joystand_state::joystand_interrupt)
{
// VBlank is connected to INT1 (external interrupts pin 1)
- m_tmp68301->external_interrupt_1();
+ m_maincpu->external_interrupt_1();
}
void joystand_state::joystand(machine_config &config)
{
// basic machine hardware
- M68000(config, m_maincpu, XTAL(16'000'000)); // !! TMP68301 !!
+ TMP68301(config, m_maincpu, XTAL(16'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &joystand_state::joystand_map);
m_maincpu->set_vblank_int("screen", FUNC(joystand_state::joystand_interrupt));
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
-
- TMP68301(config, m_tmp68301, 0);
- m_tmp68301->set_cputag(m_maincpu);
- m_tmp68301->in_parallel_callback().set(FUNC(joystand_state::eeprom_r));
- m_tmp68301->out_parallel_callback().set(FUNC(joystand_state::eeprom_w));
+ m_maincpu->in_parallel_callback().set(FUNC(joystand_state::eeprom_r));
+ m_maincpu->out_parallel_callback().set(FUNC(joystand_state::eeprom_w));
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
diff --git a/src/mame/drivers/krz2000.cpp b/src/mame/drivers/krz2000.cpp
index fe2b785a0be..71e62fb3c10 100644
--- a/src/mame/drivers/krz2000.cpp
+++ b/src/mame/drivers/krz2000.cpp
@@ -65,17 +65,12 @@ void k2000_state::k2000_map(address_map &map)
map(0x000000, 0x0fffff).rom().region("maincpu", 0);
map(0x100000, 0x11ffff).ram(); // is this area banked between RAM (write of 0x20 to 7e0001) vs setup/SU ROM (write of 0x30 to 7e0001) ?
// byte writes to 7e0000-7e0001 - unknown, possibly banking or status?
- map(0xfffc00, 0xffffff).rw("tmp68301", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void k2000_state::k2000(machine_config &config)
{
- M68301(config, m_maincpu, XTAL(12'000'000));
+ TMP68301(config, m_maincpu, XTAL(12'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &k2000_state::k2000_map);
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
-
- tmp68301_device &tmp68301(TMP68301(config, "tmp68301", 0));
- tmp68301.set_cputag(m_maincpu);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
diff --git a/src/mame/drivers/niyanpai.cpp b/src/mame/drivers/niyanpai.cpp
index 47a75a37d65..5cdbd6a3f82 100644
--- a/src/mame/drivers/niyanpai.cpp
+++ b/src/mame/drivers/niyanpai.cpp
@@ -154,8 +154,6 @@ void niyanpai_state::niyanpai_map(address_map &map)
map(0x240a01, 0x240a01).w(FUNC(niyanpai_state::clutsel_0_w));
map(0x240c01, 0x240c01).w(FUNC(niyanpai_state::clutsel_1_w));
map(0x240e01, 0x240e01).w(FUNC(niyanpai_state::clutsel_2_w));
-
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void niyanpai_state::musobana_map(address_map &map)
@@ -193,8 +191,6 @@ void niyanpai_state::musobana_map(address_map &map)
map(0x280000, 0x280001).r(FUNC(niyanpai_state::dipsw_r));
map(0x280200, 0x280201).r(FUNC(niyanpai_state::musobana_inputport_0_r));
map(0x280400, 0x280401).portr("SYSTEM");
-
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void niyanpai_state::mhhonban_map(address_map &map)
@@ -234,8 +230,6 @@ void niyanpai_state::mhhonban_map(address_map &map)
map(0x280000, 0x280001).r(FUNC(niyanpai_state::dipsw_r));
map(0x280200, 0x280201).r(FUNC(niyanpai_state::musobana_inputport_0_r));
map(0x280400, 0x280401).portr("SYSTEM");
-
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void niyanpai_state::zokumahj_map(address_map &map)
@@ -274,8 +268,6 @@ void niyanpai_state::zokumahj_map(address_map &map)
map(0x280000, 0x280001).r(FUNC(niyanpai_state::dipsw_r));
map(0x280200, 0x280201).r(FUNC(niyanpai_state::musobana_inputport_0_r));
map(0x280400, 0x280401).portr("SYSTEM");
-
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -687,20 +679,16 @@ INPUT_PORTS_END
WRITE_LINE_MEMBER(niyanpai_state::vblank_irq)
{
if (state)
- m_tmp68301->external_interrupt_0();
+ m_maincpu->external_interrupt_0();
}
void niyanpai_state::niyanpai(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 12288000/2); /* TMP68301, 6.144 MHz */
+ TMP68301(config, m_maincpu, 12288000/2); /* TMP68301, 6.144 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &niyanpai_state::niyanpai_map);
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
-
- TMP68301(config, m_tmp68301, 0);
- m_tmp68301->set_cputag(m_maincpu);
- m_tmp68301->out_parallel_callback().set(FUNC(niyanpai_state::tmp68301_parallel_port_w));
+ m_maincpu->out_parallel_callback().set(FUNC(niyanpai_state::tmp68301_parallel_port_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/realbrk.cpp b/src/mame/drivers/realbrk.cpp
index c1a07c2cbd8..688b3c888ff 100644
--- a/src/mame/drivers/realbrk.cpp
+++ b/src/mame/drivers/realbrk.cpp
@@ -174,7 +174,6 @@ void realbrk_state::base_mem(address_map &map)
map(0x606000, 0x60600f).ram().w(FUNC(realbrk_state::vregs_w)).share("vregs"); // Scroll + Video Regs
map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00); // YMZ280
map(0xfe0000, 0xfeffff).ram(); // RAM
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
/*realbrk specific memory map*/
@@ -764,19 +763,15 @@ WRITE_LINE_MEMBER(realbrk_state::vblank_irq)
{
/* VBlank is connected to INT1 (external interrupts pin 1) */
if (state)
- m_tmp68301->external_interrupt_1();
+ m_maincpu->external_interrupt_1();
}
void realbrk_state::realbrk(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(32'000'000) / 2); /* !! TMP68301 !! */
+ TMP68301(config, m_maincpu, XTAL(32'000'000) / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &realbrk_state::realbrk_mem);
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
-
- TMP68301(config, m_tmp68301, 0);
- m_tmp68301->set_cputag(m_maincpu);
- m_tmp68301->out_parallel_callback().set(FUNC(realbrk_state::realbrk_flipscreen_w));
+ m_maincpu->out_parallel_callback().set(FUNC(realbrk_state::realbrk_flipscreen_w));
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -809,8 +804,7 @@ void realbrk_state::pkgnsh(machine_config &config)
realbrk(config);
m_maincpu->set_addrmap(AS_PROGRAM, &realbrk_state::pkgnsh_mem);
-
- m_tmp68301->out_parallel_callback().set_nop();
+ m_maincpu->out_parallel_callback().set_nop();
}
void realbrk_state::pkgnshdx(machine_config &config)
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index 5db192687f8..2be422ff5d1 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -2923,7 +2923,6 @@ void kiwame_state::kiwame_map(address_map &map)
map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
map(0xd00000, 0xd00009).r(FUNC(kiwame_state::input_r)); // mahjong panel
map(0xe00000, 0xe00003).r(FUNC(kiwame_state::seta_dsw_r)); // DSW
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
}
@@ -9275,19 +9274,15 @@ void seta_state::triplfun(machine_config &config)
WRITE_LINE_MEMBER(kiwame_state::kiwame_vblank)
{
if (state)
- m_tmp68301->external_interrupt_0();
+ m_maincpu->external_interrupt_0();
}
void kiwame_state::kiwame(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000); /* 16 MHz */
+ TMP68301(config, m_maincpu, 16000000); /* 16 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &kiwame_state::kiwame_map);
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
-
- tmp68301_device &tmp68301(TMP68301(config, "tmp68301", 0));
- tmp68301.set_cputag(m_maincpu);
- tmp68301.out_parallel_callback().set(FUNC(kiwame_state::row_select_w));
+ m_maincpu->out_parallel_callback().set(FUNC(kiwame_state::row_select_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp
index c91a63dd12c..147a4ecb235 100644
--- a/src/mame/drivers/seta2.cpp
+++ b/src/mame/drivers/seta2.cpp
@@ -196,7 +196,6 @@ void seta2_state::grdians_map(address_map &map)
map(0xc50000, 0xc5ffff).ram(); // cleared
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
/***************************************************************************
@@ -235,7 +234,6 @@ void seta2_state::gundamex_map(address_map &map)
map(0xc50000, 0xc5ffff).ram(); // cleared
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -292,7 +290,6 @@ void seta2_state::mj4simai_map(address_map &map)
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -316,7 +313,6 @@ void seta2_state::myangel_map(address_map &map)
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -340,7 +336,6 @@ void seta2_state::myangel2_map(address_map &map)
map(0xd00000, 0xd3ffff).ram().share("spriteram"); // Sprites
map(0xd40000, 0xd4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xd60000, 0xd6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -383,7 +378,6 @@ void seta2_state::pzlbowl_map(address_map &map)
map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -416,7 +410,6 @@ void seta2_state::penbros_map(address_map &map)
map(0x500302, 0x500303).portr("DSW2");
map(0x500300, 0x50030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);
map(0xb60000, 0xb6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
}
void seta2_state::ablastb_map(address_map &map)
@@ -482,7 +475,6 @@ void seta2_state::reelquak_map(address_map &map)
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -497,7 +489,6 @@ void seta2_state::namcostr_map(address_map &map)
map(0x200000, 0x20ffff).ram(); // RAM
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -540,8 +531,6 @@ void seta2_state::samshoot_map(address_map &map)
map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
-
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -635,7 +624,6 @@ void staraudi_state::staraudi_map(address_map &map)
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc50000, 0xc5ffff).ram(); // cleared
map(0xc60000, 0xc6003f).ram().w(FUNC(staraudi_state::vregs_w)).share("vregs"); // Video Registers
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -694,7 +682,6 @@ void seta2_state::telpacfl_map(address_map &map)
map(0xd00006, 0xd00007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0xe00000, 0xe00001) AM_WRITE
map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks
- map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -2301,23 +2288,19 @@ GFXDECODE_END
INTERRUPT_GEN_MEMBER(seta2_state::seta2_interrupt)
{
/* VBlank is connected to INT0 (external interrupts pin 0) */
- m_tmp68301->external_interrupt_0();
+ downcast<tmp68301_device &>(*m_maincpu).external_interrupt_0();
}
INTERRUPT_GEN_MEMBER(seta2_state::samshoot_interrupt)
{
- m_tmp68301->external_interrupt_2(); // to do: hook up x1-10 interrupts
+ downcast<tmp68301_device &>(*m_maincpu).external_interrupt_2(); // to do: hook up x1-10 interrupts
}
void seta2_state::seta2(machine_config &config)
{
- M68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !!
+ TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !!
m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::mj4simai_map);
m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt));
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
-
- TMP68301(config, m_tmp68301, 0);
- m_tmp68301->set_cputag(m_maincpu);
WATCHDOG_TIMER(config, "watchdog");
@@ -2349,8 +2332,8 @@ void seta2_state::gundamex(machine_config &config)
seta2(config);
m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::gundamex_map);
- m_tmp68301->in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r));
- m_tmp68301->out_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_w));
+ downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r));
+ downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_w));
EEPROM_93C46_16BIT(config, "eeprom");
@@ -2414,8 +2397,6 @@ void seta2_state::ablastb(machine_config &config)
M68000(config.replace(), m_maincpu, XTAL(16'000'000)); // TMP68HC000P-16
m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::ablastb_map);
m_maincpu->set_vblank_int("screen", FUNC(seta2_state::irq2_line_hold));
-
- config.device_remove("tmp68301");
}
void seta2_state::reelquak(machine_config &config)
@@ -2423,7 +2404,7 @@ void seta2_state::reelquak(machine_config &config)
seta2(config);
m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::reelquak_map);
- m_tmp68301->out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w));
+ downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
TICKET_DISPENSER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
@@ -2438,7 +2419,7 @@ void seta2_state::samshoot(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::samshoot_map);
m_maincpu->set_periodic_int(FUNC(seta2_state::samshoot_interrupt), attotime::from_hz(60));
- m_tmp68301->in_parallel_callback().set_ioport("DSW2");
+ downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("DSW2");
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -2467,7 +2448,7 @@ void seta2_state::telpacfl(machine_config &config)
seta2(config);
m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::telpacfl_map);
- m_tmp68301->in_parallel_callback().set_ioport("KNOB");
+ downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("KNOB");
EEPROM_93C46_16BIT(config, "eeprom"); // not hooked up, seems unused
@@ -2570,13 +2551,10 @@ void funcube_state::funcube3(machine_config &config)
void seta2_state::namcostr(machine_config &config)
{
- M68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !!
+ TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !!
m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::namcostr_map);
m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt));
- m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
-
- TMP68301(config, m_tmp68301, 0); // does this have a ticket dispenser?
- m_tmp68301->set_cputag(m_maincpu);
+ // does this have a ticket dispenser?
// video hardware
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
diff --git a/src/mame/includes/niyanpai.h b/src/mame/includes/niyanpai.h
index edf272a87ef..3f3a73be2ba 100644
--- a/src/mame/includes/niyanpai.h
+++ b/src/mame/includes/niyanpai.h
@@ -15,7 +15,6 @@ 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_screen(*this, "screen"),
m_palette(*this, "palette") { }
@@ -34,8 +33,7 @@ private:
TIMER_BLITTER
};
- required_device<cpu_device> m_maincpu;
- required_device<tmp68301_device> m_tmp68301;
+ required_device<tmp68301_device> m_maincpu;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
diff --git a/src/mame/includes/realbrk.h b/src/mame/includes/realbrk.h
index 14a548366eb..179674e17a0 100644
--- a/src/mame/includes/realbrk.h
+++ b/src/mame/includes/realbrk.h
@@ -15,7 +15,6 @@ public:
realbrk_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_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
@@ -37,8 +36,7 @@ public:
void pkgnshdx(machine_config &config);
private:
- required_device<cpu_device> m_maincpu;
- required_device<tmp68301_device> m_tmp68301;
+ required_device<tmp68301_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
index 41c0352f772..387f4591674 100644
--- a/src/mame/includes/seta.h
+++ b/src/mame/includes/seta.h
@@ -364,7 +364,7 @@ class kiwame_state : public seta_state
public:
kiwame_state(const machine_config &mconfig, device_type type, const char *tag) :
seta_state(mconfig, type, tag),
- m_tmp68301(*this, "tmp68301"),
+ m_maincpu(*this, "maincpu"),
m_key(*this, "KEY%u", 0U)
{ }
@@ -377,7 +377,7 @@ private:
void kiwame_map(address_map &map);
- required_device<tmp68301_device> m_tmp68301;
+ required_device<tmp68301_device> m_maincpu;
required_ioport_array<5> m_key;
uint16_t m_kiwame_row_select;
diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h
index a40e22c4cbc..61fc336788e 100644
--- a/src/mame/includes/seta2.h
+++ b/src/mame/includes/seta2.h
@@ -28,7 +28,6 @@ public:
m_screen(*this, "screen"),
m_palette(*this, "palette"),
- m_tmp68301(*this, "tmp68301"),
m_oki(*this, "oki"),
m_eeprom(*this, "eeprom"),
m_flash(*this, "flash"),
@@ -119,7 +118,6 @@ protected:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
- optional_device<tmp68301_device> m_tmp68301;
optional_device<okim9810_device> m_oki;
optional_device<eeprom_serial_93cxx_device> m_eeprom;
optional_device<intelfsh16_device> m_flash;
diff --git a/src/mame/video/seta2.cpp b/src/mame/video/seta2.cpp
index 8114ec08b43..d1aaef6758b 100644
--- a/src/mame/video/seta2.cpp
+++ b/src/mame/video/seta2.cpp
@@ -621,11 +621,12 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
TIMER_CALLBACK_MEMBER(seta2_state::raster_timer_done)
{
- if (m_tmp68301)
+ auto *tmp68301 = dynamic_cast<tmp68301_device *>(m_maincpu.target());
+ if (tmp68301)
{
if (m_rasterenabled & 1)
{
- m_tmp68301->external_interrupt_1();
+ tmp68301->external_interrupt_1();
logerror("external int (vpos is %d)\n", m_screen->vpos());
m_screen->update_partial(m_screen->vpos() - 1);
}