diff options
Diffstat (limited to 'src/emu/mame.cpp')
-rw-r--r-- | src/emu/mame.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/emu/mame.cpp b/src/emu/mame.cpp index e18e41329ad..813455e0b8d 100644 --- a/src/emu/mame.cpp +++ b/src/emu/mame.cpp @@ -151,6 +151,20 @@ void machine_manager::update_machine() m_lua->set_machine(m_machine); } + +void machine_manager::start_luaengine() +{ + m_lua->initialize(); + { + emu_file file(options().plugins_path(), OPEN_FLAG_READ); + file_error filerr = file.open("boot.lua"); + if (filerr == FILERR_NONE) + { + m_lua->load_script(file.fullpath()); + } + } +} + /*------------------------------------------------- execute - run the core emulation -------------------------------------------------*/ @@ -166,7 +180,6 @@ int machine_manager::execute() bool exit_pending = false; int error = MAMERR_NONE; - m_lua->initialize(); if (m_options.console()) { m_lua->start_console(); } @@ -231,6 +244,25 @@ int machine_manager::execute() m_options.set_value(OPTION_RAMSIZE, "", OPTION_PRIORITY_CMDLINE, error_string); } firstrun = true; + if (m_options.software_name()) + { + std::string sw_load(m_options.software_name()); + std::string sw_list, sw_name, sw_part, sw_instance, option_errors, error_string; + int left = sw_load.find_first_of(':'); + int middle = sw_load.find_first_of(':', left + 1); + int right = sw_load.find_last_of(':'); + + sw_list = sw_load.substr(0, left - 1); + sw_name = sw_load.substr(left + 1, middle - left - 1); + sw_part = sw_load.substr(middle + 1, right - middle - 1); + sw_instance = sw_load.substr(right + 1); + sw_load.assign(sw_load.substr(0, right)); + + char arg[] = "ume"; + char *argv = &arg[0]; + m_options.set_value(OPTION_SOFTWARENAME, sw_name.c_str(), OPTION_PRIORITY_CMDLINE, error_string); + m_options.parse_slot_devices(1, &argv, option_errors, sw_instance.c_str(), sw_load.c_str()); + } } else { |