diff options
Diffstat (limited to 'src/devices/bus/coco/cococart.h')
-rw-r--r-- | src/devices/bus/coco/cococart.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h index 440630e05a3..325d5f2e1d6 100644 --- a/src/devices/bus/coco/cococart.h +++ b/src/devices/bus/coco/cococart.h @@ -26,13 +26,13 @@ typedef delegate<void (uint8_t *)> cococart_base_update_delegate; #define MCFG_COCO_CARTRIDGE_CART_CB(_devcb) \ - devcb = &downcast<cococart_slot_device &>(*device).set_cart_callback(DEVCB_##_devcb); + downcast<cococart_slot_device &>(*device).set_cart_callback(DEVCB_##_devcb); #define MCFG_COCO_CARTRIDGE_NMI_CB(_devcb) \ - devcb = &downcast<cococart_slot_device &>(*device).set_nmi_callback(DEVCB_##_devcb); + downcast<cococart_slot_device &>(*device).set_nmi_callback(DEVCB_##_devcb); #define MCFG_COCO_CARTRIDGE_HALT_CB(_devcb) \ - devcb = &downcast<cococart_slot_device &>(*device).set_halt_callback(DEVCB_##_devcb); + downcast<cococart_slot_device &>(*device).set_halt_callback(DEVCB_##_devcb); // ======================> cococart_slot_device @@ -61,11 +61,23 @@ public: }; // construction/destruction + template <typename T> + cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&opts, const char *dflt) + : cococart_slot_device(mconfig, tag, owner, clock) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); template <class Object> devcb_base &set_cart_callback(Object &&cb) { return m_cart_callback.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_nmi_callback(Object &&cb) { return m_nmi_callback.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_halt_callback(Object &&cb) { return m_halt_callback.set_callback(std::forward<Object>(cb)); } + auto cart_callback() { return m_cart_callback.bind(); } + auto nmi_callback() { return m_nmi_callback.bind(); } + auto halt_callback() { return m_halt_callback.bind(); } // device-level overrides virtual void device_start() override; |