diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 993a3eeb428..46617e18f18 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -1699,6 +1699,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("new", sol::no_constructor); @@ -1754,6 +1755,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); @@ -2764,6 +2772,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("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()