summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/psx/rcnt.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/psx/rcnt.h')
-rw-r--r--src/devices/cpu/psx/rcnt.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/devices/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h
index d56b3a6531a..48262325bfc 100644
--- a/src/devices/cpu/psx/rcnt.h
+++ b/src/devices/cpu/psx/rcnt.h
@@ -7,13 +7,13 @@
*
*/
-#pragma once
+#ifndef MAME_CPU_PSX_RCNT_H
+#define MAME_CPU_PSX_RCNT_H
-#ifndef __PSXRCNT_H__
-#define __PSXRCNT_H__
+#pragma once
-extern const device_type PSX_RCNT;
+DECLARE_DEVICE_TYPE(PSX_RCNT, psxrcnt_device)
#define MCFG_PSX_RCNT_IRQ0_HANDLER(_devcb) \
devcb = &psxrcnt_device::set_irq0_handler(*device, DEVCB_##_devcb);
@@ -30,24 +30,15 @@ extern const device_type PSX_RCNT;
#define PSX_RC_CLC ( 0x100 )
#define PSX_RC_DIV ( 0x200 )
-struct psx_root
-{
- emu_timer *timer;
- uint16_t n_count;
- uint16_t n_mode;
- uint16_t n_target;
- uint64_t n_start;
-};
-
class psxrcnt_device : public device_t
{
public:
psxrcnt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq0_handler(device_t &device, _Object object) { return downcast<psxrcnt_device &>(device).m_irq0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_irq1_handler(device_t &device, _Object object) { return downcast<psxrcnt_device &>(device).m_irq1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_irq2_handler(device_t &device, _Object object) { return downcast<psxrcnt_device &>(device).m_irq2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq0_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq1_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq2_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE32_MEMBER( write );
DECLARE_READ32_MEMBER( read );
@@ -59,6 +50,15 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ struct psx_root
+ {
+ emu_timer *timer;
+ uint16_t n_count;
+ uint16_t n_mode;
+ uint16_t n_target;
+ uint64_t n_start;
+ };
+
psx_root root_counter[ 3 ];
uint64_t gettotalcycles( void );
@@ -72,4 +72,4 @@ private:
devcb_write_line m_irq2_handler;
};
-#endif
+#endif // MAME_CPU_PSX_RCNT_H