summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/machine.cpp4
-rw-r--r--src/frontend/mame/ui/menu.cpp5
-rw-r--r--src/frontend/mame/ui/ui.cpp27
3 files changed, 29 insertions, 7 deletions
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index 510b763b523..aecaf26ed15 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -355,6 +355,8 @@ int running_machine::run(bool quiet)
if (!quiet)
sound().start_recording();
+ m_hard_reset_pending = false;
+
// initialize ui lists
// display the startup screens
manager().ui_initialize(*this);
@@ -368,8 +370,6 @@ int running_machine::run(bool quiet)
export_http_api();
- m_hard_reset_pending = false;
-
#if defined(__EMSCRIPTEN__)
// break out to our async javascript loop and halt
emscripten_set_running_machine(this);
diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp
index 2c0ee801f92..c53736b2ab4 100644
--- a/src/frontend/mame/ui/menu.cpp
+++ b/src/frontend/mame/ui/menu.cpp
@@ -1174,7 +1174,10 @@ void menu::do_handle()
// add an item to return - this is a really hacky way of doing this
if (!m_parent)
{
- item_append(_("Return to Machine"), 0, nullptr);
+ if (machine().phase() == machine_phase::INIT)
+ item_append(_("Start Machine"), 0, nullptr);
+ else
+ item_append(_("Return to Machine"), 0, nullptr);
}
else if (m_parent->is_special_main_menu())
{
diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp
index 64ee74d8f6b..bbc9c1aa6cd 100644
--- a/src/frontend/mame/ui/ui.cpp
+++ b/src/frontend/mame/ui/ui.cpp
@@ -424,8 +424,9 @@ void mame_ui_manager::display_startup_screens(bool first_time)
switch_code_poller poller(machine().input());
std::string warning_text;
rgb_t warning_color;
+ bool config_menu = false;
auto handler_messagebox_anykey =
- [this, &poller, &warning_text, &warning_color] (render_container &container) -> uint32_t
+ [this, &poller, &warning_text, &warning_color, &config_menu] (render_container &container) -> uint32_t
{
// draw a standard message window
draw_text_box(container, warning_text, ui::text_layout::LEFT, 0.5f, 0.5f, warning_color);
@@ -436,6 +437,11 @@ void mame_ui_manager::display_startup_screens(bool first_time)
machine().schedule_exit();
return UI_HANDLER_CANCEL;
}
+ else if (machine().ui_input().pressed(IPT_UI_CONFIGURE))
+ {
+ config_menu = true;
+ return UI_HANDLER_CANCEL;
+ }
else if (poller.poll() != INPUT_CODE_INVALID)
{
// if any key is pressed, just exit
@@ -561,9 +567,14 @@ void mame_ui_manager::display_startup_screens(bool first_time)
poller.reset();
while (poller.poll() != INPUT_CODE_INVALID) { }
- // loop while we have a handler
- while (m_handler_callback_type == ui_callback_type::MODAL && !machine().scheduled_event_pending() && !ui::menu::stack_has_special_main_menu(machine()))
- machine().video().frame_update();
+ if (m_handler_callback_type == ui_callback_type::MODAL)
+ {
+ config_menu = false;
+
+ // loop while we have a handler
+ while (m_handler_callback_type == ui_callback_type::MODAL && !machine().scheduled_event_pending() && !ui::menu::stack_has_special_main_menu(machine()))
+ machine().video().frame_update();
+ }
// clear the handler and force an update
set_handler(ui_callback_type::GENERAL, std::bind(&mame_ui_manager::handler_ingame, this, _1));
@@ -577,6 +588,14 @@ void mame_ui_manager::display_startup_screens(bool first_time)
// if we're the empty driver, force the menus on
if (ui::menu::stack_has_special_main_menu(machine()))
show_menu();
+ else if (config_menu)
+ {
+ show_menu();
+
+ // loop while we have a handler
+ while (m_handler_callback_type != ui_callback_type::GENERAL && !machine().scheduled_event_pending())
+ machine().video().frame_update();
+ }
}