summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/driver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/driver.h')
-rw-r--r--src/emu/driver.h63
1 files changed, 56 insertions, 7 deletions
diff --git a/src/emu/driver.h b/src/emu/driver.h
index ce23c486e6c..5711012188e 100644
--- a/src/emu/driver.h
+++ b/src/emu/driver.h
@@ -22,11 +22,67 @@
// CONFIGURATION MACROS
//**************************************************************************
+// core machine callbacks
+#define MCFG_MACHINE_START_OVERRIDE(_class, _func) \
+ driver_device::static_set_callback(config.root_device(), driver_device::CB_MACHINE_START, driver_callback_delegate(&_class::MACHINE_START_NAME(_func), this));
+
+#define MCFG_MACHINE_RESET_OVERRIDE(_class, _func) \
+ driver_device::static_set_callback(config.root_device(), driver_device::CB_MACHINE_RESET, driver_callback_delegate(&_class::MACHINE_RESET_NAME(_func), this));
+
+#define MCFG_MACHINE_RESET_REMOVE() \
+ driver_device::static_set_callback(config.root_device(), driver_device::CB_MACHINE_RESET, driver_callback_delegate());
+
+// core sound callbacks
+#define MCFG_SOUND_START_OVERRIDE(_class, _func) \
+ driver_device::static_set_callback(config.root_device(), driver_device::CB_SOUND_START, driver_callback_delegate(&_class::SOUND_START_NAME(_func), this));
+
+#define MCFG_SOUND_RESET_OVERRIDE(_class, _func) \
+ driver_device::static_set_callback(config.root_device(), driver_device::CB_SOUND_RESET, driver_callback_delegate(&_class::SOUND_RESET_NAME(_func), this));
+
+
+// core video callbacks
+#define MCFG_VIDEO_START_OVERRIDE(_class, _func) \
+ driver_device::static_set_callback(config.root_device(), driver_device::CB_VIDEO_START, driver_callback_delegate(&_class::VIDEO_START_NAME(_func), this));
+
+#define MCFG_VIDEO_RESET_OVERRIDE(_class, _func) \
+ driver_device::static_set_callback(config.root_device(), driver_device::CB_VIDEO_RESET, driver_callback_delegate(&_class::VIDEO_RESET_NAME(_func), this));
+
+
//**************************************************************************
// OTHER MACROS
//**************************************************************************
+#define MACHINE_START_NAME(name) machine_start_##name
+#define MACHINE_START_CALL_MEMBER(name) MACHINE_START_NAME(name)()
+#define DECLARE_MACHINE_START(name) void MACHINE_START_NAME(name)() ATTR_COLD
+#define MACHINE_START_MEMBER(cls,name) void cls::MACHINE_START_NAME(name)()
+
+#define MACHINE_RESET_NAME(name) machine_reset_##name
+#define MACHINE_RESET_CALL_MEMBER(name) MACHINE_RESET_NAME(name)()
+#define DECLARE_MACHINE_RESET(name) void MACHINE_RESET_NAME(name)()
+#define MACHINE_RESET_MEMBER(cls,name) void cls::MACHINE_RESET_NAME(name)()
+
+#define SOUND_START_NAME(name) sound_start_##name
+#define DECLARE_SOUND_START(name) void SOUND_START_NAME(name)() ATTR_COLD
+#define SOUND_START_MEMBER(cls,name) void cls::SOUND_START_NAME(name)()
+
+#define SOUND_RESET_NAME(name) sound_reset_##name
+#define SOUND_RESET_CALL_MEMBER(name) SOUND_RESET_NAME(name)()
+#define DECLARE_SOUND_RESET(name) void SOUND_RESET_NAME(name)()
+#define SOUND_RESET_MEMBER(cls,name) void cls::SOUND_RESET_NAME(name)()
+
+#define VIDEO_START_NAME(name) video_start_##name
+#define VIDEO_START_CALL_MEMBER(name) VIDEO_START_NAME(name)()
+#define DECLARE_VIDEO_START(name) void VIDEO_START_NAME(name)() ATTR_COLD
+#define VIDEO_START_MEMBER(cls,name) void cls::VIDEO_START_NAME(name)()
+
+#define VIDEO_RESET_NAME(name) video_reset_##name
+#define VIDEO_RESET_CALL_MEMBER(name) VIDEO_RESET_NAME(name)()
+#define DECLARE_VIDEO_RESET(name) void VIDEO_RESET_NAME(name)()
+#define VIDEO_RESET_MEMBER(cls,name) void cls::VIDEO_RESET_NAME(name)()
+
+
//**************************************************************************
// TYPE DEFINITIONS
@@ -64,13 +120,6 @@ public:
// inline configuration helpers
void set_game_driver(const game_driver &game);
static void static_set_callback(device_t &device, callback_type type, driver_callback_delegate callback);
- static void set_machine_start_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_MACHINE_START, callback); }
- static void set_machine_reset_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_MACHINE_RESET, callback); }
- static void set_sound_start_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_SOUND_START, callback); }
- static void set_sound_reset_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_SOUND_RESET, callback); }
- static void set_video_start_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_VIDEO_START, callback); }
- static void set_video_reset_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_VIDEO_RESET, callback); }
- static void remove_machine_reset_cb(machine_config &config) { static_set_callback(config.root_device(), CB_MACHINE_RESET, driver_callback_delegate()); }
// dummy driver_init callback
void empty_init();