summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author feos <feos-theos@yandex.ru>2020-05-26 19:44:11 +0300
committer feos <feos-theos@yandex.ru>2020-05-26 19:46:01 +0300
commit1bc22667898f32def9fe6e224065a77235b35904 (patch)
tree4353dac540dc85d587fcbaab1a9f535214cbac86
parentb500f2d24175ff2bd8efdb889a6c5eea12e96314 (diff)
luaengine: rom_entry library
-rw-r--r--src/frontend/mame/luaengine.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index 8d3bd043ce0..283ac310ba1 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -1697,6 +1697,7 @@ void lua_engine::initialize()
* device.spaces[] - device address spaces table (k=name, v=addr_space)
* device.state[] - device state entries table (k=name, v=device_state_entry)
* device.items[] - device save state items table (k=name, v=index)
+ * device.roms[] - device rom entry table (k=name, v=rom_entry)
*/
auto device_type = sol().registry().create_simple_usertype<device_t>("new", sol::no_constructor);
@@ -1752,6 +1753,13 @@ void lua_engine::initialize()
}
return table;
}));
+ device_type.set("roms", sol::property([this](device_t &dev) {
+ sol::table table = sol().create_table();
+ for(auto rom : dev.rom_region_vector())
+ if(!rom.name().empty())
+ table[rom.name()] = rom;
+ return table;
+ }));
sol().registry().set_usertype("device", device_type);
@@ -2762,6 +2770,26 @@ void lua_engine::initialize()
sol().registry().set_usertype("dev_space", dev_space_type);
+/* rom_entry library
+ *
+ * manager:machine().devices[device_tag].roms[rom]
+ *
+ * rom:name()
+ * rom:hashdata() - see hash.h
+ * rom:offset()
+ * rom:length()
+ * rom:flags() - see romentry.h
+ */
+
+ auto rom_entry_type = sol().registry().create_simple_usertype<rom_entry>("new", sol::no_constructor);
+ rom_entry_type.set("name", &rom_entry::name);
+ rom_entry_type.set("hashdata", &rom_entry::hashdata);
+ rom_entry_type.set("offset", &rom_entry::get_offset);
+ rom_entry_type.set("length", &rom_entry::get_length);
+ rom_entry_type.set("flags", &rom_entry::get_flags);
+ sol().registry().set_usertype("rom_entry", rom_entry_type);
+
+
/* memory_manager library
*
* manager:machine():memory()