summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/devcb.c
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2011-03-15 11:04:21 +0000
committer Curt Coder <curtcoder@mail.com>2011-03-15 11:04:21 +0000
commitd625c435a38567bbb3ea58a0d4bbb83b5035742f (patch)
tree7b9d42c6c81a93870cedbefde7de5ff1982ae82b /src/emu/devcb.c
parent607b2c09e1027d8a5a7ce203d795abbbdc005649 (diff)
Added DEVICE_SELF_OWNER support for device callbacks. [Curt Coder]
Diffstat (limited to 'src/emu/devcb.c')
-rw-r--r--src/emu/devcb.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/emu/devcb.c b/src/emu/devcb.c
index 49c19dc3e08..b8f68a46b92 100644
--- a/src/emu/devcb.c
+++ b/src/emu/devcb.c
@@ -76,7 +76,10 @@ void devcb_resolve_read_line(devcb_resolved_read_line *resolved, const devcb_rea
else if (config->type == DEVCB_TYPE_DRIVER)
resolved->target = device->machine->driver_data();
else
- resolved->target = device->siblingdevice(config->tag);
+ if (strcmp(config->tag, DEVICE_SELF_OWNER) == 0)
+ resolved->target = device->owner();
+ else
+ resolved->target = device->siblingdevice(config->tag);
if (resolved->target == NULL)
fatalerror("devcb_resolve_read_line: unable to find device '%s' (requested by %s '%s')", config->tag, device->name(), device->tag());
@@ -177,7 +180,10 @@ void devcb_resolve_write_line(devcb_resolved_write_line *resolved, const devcb_w
else if (config->type == DEVCB_TYPE_DRIVER)
resolved->target = device->machine->driver_data();
else
- resolved->target = device->siblingdevice(config->tag);
+ if (strcmp(config->tag, DEVICE_SELF_OWNER) == 0)
+ resolved->target = device->owner();
+ else
+ resolved->target = device->siblingdevice(config->tag);
if (resolved->target == NULL)
fatalerror("devcb_resolve_write_line: unable to find device '%s' (requested by %s '%s')", config->tag, device->name(), device->tag());
@@ -254,7 +260,11 @@ void devcb_resolve_read8(devcb_resolved_read8 *resolved, const devcb_read8 *conf
else if (config->type == DEVCB_TYPE_DRIVER)
resolved->target = device->machine->driver_data();
else
- resolved->target = device->siblingdevice(config->tag);
+ if (strcmp(config->tag, DEVICE_SELF_OWNER) == 0)
+ resolved->target = device->owner();
+ else
+ resolved->target = device->siblingdevice(config->tag);
+
if (resolved->target == NULL)
fatalerror("devcb_resolve_read8: unable to find device '%s' (requested by %s '%s')", config->tag, device->name(), device->tag());
@@ -329,7 +339,11 @@ void devcb_resolve_write8(devcb_resolved_write8 *resolved, const devcb_write8 *c
else if (config->type == DEVCB_TYPE_DRIVER)
resolved->target = device->machine->driver_data();
else
- resolved->target = device->siblingdevice(config->tag);
+ if (strcmp(config->tag, DEVICE_SELF_OWNER) == 0)
+ resolved->target = device->owner();
+ else
+ resolved->target = device->siblingdevice(config->tag);
+
if (resolved->target == NULL)
fatalerror("devcb_resolve_write8: unable to find device '%s' (requested by %s '%s')", config->tag, device->name(), device->tag());