diff options
-rw-r--r-- | src/devices/machine/tmp68301.cpp | 62 | ||||
-rw-r--r-- | src/devices/machine/tmp68301.h | 24 | ||||
-rw-r--r-- | src/mame/drivers/bingowav.cpp | 6 | ||||
-rw-r--r-- | src/mame/drivers/csplayh5.cpp | 16 | ||||
-rw-r--r-- | src/mame/drivers/joystand.cpp | 18 | ||||
-rw-r--r-- | src/mame/drivers/krz2000.cpp | 7 | ||||
-rw-r--r-- | src/mame/drivers/niyanpai.cpp | 18 | ||||
-rw-r--r-- | src/mame/drivers/realbrk.cpp | 14 | ||||
-rw-r--r-- | src/mame/drivers/seta.cpp | 11 | ||||
-rw-r--r-- | src/mame/drivers/seta2.cpp | 42 | ||||
-rw-r--r-- | src/mame/includes/niyanpai.h | 4 | ||||
-rw-r--r-- | src/mame/includes/realbrk.h | 4 | ||||
-rw-r--r-- | src/mame/includes/seta.h | 4 | ||||
-rw-r--r-- | src/mame/includes/seta2.h | 2 | ||||
-rw-r--r-- | src/mame/video/seta2.cpp | 5 |
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); } |