summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/luaengine.c
diff options
context:
space:
mode:
author Luca Bruno <lucab@debian.org>2015-01-17 23:32:57 +0100
committer Luca Bruno <lucab@debian.org>2015-01-18 20:13:11 +0100
commit37cd9a2d98e4d07f394ec6f8d030bbfda3d1c4ef (patch)
tree20a88ff167199c4c7324b4fac9409652b7c545bd /src/emu/luaengine.c
parent39788873b0b99c85bb6d8c6b5da9ead619b38411 (diff)
luaengine: rework state getter/setter for saves
Improve state_get_value and state_set_value by using the parent device_state_interface and triggering callbacks for updates. While at it, also remove the hackish friend relationship. Signed-off-by: Luca Bruno <lucab@debian.org>
Diffstat (limited to 'src/emu/luaengine.c')
-rw-r--r--src/emu/luaengine.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/emu/luaengine.c b/src/emu/luaengine.c
index f38a7386442..1f1e9b9db91 100644
--- a/src/emu/luaengine.c
+++ b/src/emu/luaengine.c
@@ -456,23 +456,33 @@ luabridge::LuaRef lua_engine::l_dev_get_states(const device_t *d)
}
//-------------------------------------------------
-// state_get_value - return value of a devices state
+// state_get_value - return value of a device state entry
// -> manager:machine().devices[":maincpu"].state["PC"].value
//-------------------------------------------------
UINT64 lua_engine::l_state_get_value(const device_state_entry *d)
{
- return d->value();
+ device_state_interface *state = d->parent_state();
+ if(state) {
+ luaThis->machine().save().dispatch_presave();
+ return state->state_int(d->index());
+ } else {
+ return 0;
+ }
}
//-------------------------------------------------
-// state_set_value - set value of a devices state
+// state_set_value - set value of a device state entry
// -> manager:machine().devices[":maincpu"].state["D0"].value = 0x0c00
//-------------------------------------------------
void lua_engine::l_state_set_value(device_state_entry *d, UINT64 val)
{
- d->set_value(val);
+ device_state_interface *state = d->parent_state();
+ if(state) {
+ state->set_state_int(d->index(), val);
+ luaThis->machine().save().dispatch_presave();
+ }
}
//-------------------------------------------------