From e7369aa73410d13897d5710911372a8ea6a1fd68 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Mon, 22 Mar 2021 23:20:13 +1100 Subject: -ui: Added option to mute when unthrottled to advanced options menu. * Also refactored slightly to avoid some initialisations before main. --- src/frontend/mame/ui/miscmenu.cpp | 12 +-- src/frontend/mame/ui/optsmenu.cpp | 16 +-- src/frontend/mame/ui/submenu.cpp | 206 ++++++++++++++++++++------------------ src/frontend/mame/ui/submenu.h | 13 +-- 4 files changed, 130 insertions(+), 117 deletions(-) diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index 5dc40c53ee5..a12647ec684 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -744,15 +744,15 @@ void menu_machine_configure::handle() break; case CONTROLLER: if (menu_event->iptkey == IPT_UI_SELECT) - menu::stack_push(ui(), container(), submenu::control_options, &m_drv, &m_opts); + menu::stack_push(ui(), container(), submenu::control_options(), &m_drv, &m_opts); break; case VIDEO: if (menu_event->iptkey == IPT_UI_SELECT) - menu::stack_push(ui(), container(), submenu::video_options, &m_drv, &m_opts); + menu::stack_push(ui(), container(), submenu::video_options(), &m_drv, &m_opts); break; case ADVANCED: if (menu_event->iptkey == IPT_UI_SELECT) - menu::stack_push(ui(), container(), submenu::advanced_options, &m_drv, &m_opts); + menu::stack_push(ui(), container(), submenu::advanced_options(), &m_drv, &m_opts); break; default: break; @@ -784,9 +784,9 @@ void menu_machine_configure::populate(float &customtop, float &custombottom) item_append(_("This machine has no BIOS."), FLAG_DISABLE, nullptr); item_append(menu_item_type::SEPARATOR); - item_append(_(submenu::advanced_options[0].description), 0, (void *)(uintptr_t)ADVANCED); - item_append(_(submenu::video_options[0].description), 0, (void *)(uintptr_t)VIDEO); - item_append(_(submenu::control_options[0].description), 0, (void *)(uintptr_t)CONTROLLER); + item_append(_(submenu::advanced_options()[0].description), 0, (void *)(uintptr_t)ADVANCED); + item_append(_(submenu::video_options()[0].description), 0, (void *)(uintptr_t)VIDEO); + item_append(_(submenu::control_options()[0].description), 0, (void *)(uintptr_t)CONTROLLER); item_append(menu_item_type::SEPARATOR); if (!m_want_favorite) diff --git a/src/frontend/mame/ui/optsmenu.cpp b/src/frontend/mame/ui/optsmenu.cpp index cc5a50603fd..0ceeca25ce2 100644 --- a/src/frontend/mame/ui/optsmenu.cpp +++ b/src/frontend/mame/ui/optsmenu.cpp @@ -68,12 +68,12 @@ void menu_simple_game_options::handle() void menu_simple_game_options::populate(float &customtop, float &custombottom) { - item_append(_(submenu::video_options[0].description), 0, (void *)(uintptr_t)DISPLAY_MENU); + item_append(_(submenu::video_options()[0].description), 0, (void *)(uintptr_t)DISPLAY_MENU); item_append(_("Sound Options"), 0, (void *)(uintptr_t)SOUND_MENU); - item_append(_(submenu::misc_options[0].description), 0, (void *)(uintptr_t)MISC_MENU); - item_append(_(submenu::control_options[0].description), 0, (void *)(uintptr_t)CONTROLLER_MENU); + item_append(_(submenu::misc_options()[0].description), 0, (void *)(uintptr_t)MISC_MENU); + item_append(_(submenu::control_options()[0].description), 0, (void *)(uintptr_t)CONTROLLER_MENU); item_append(_("General Inputs"), 0, (void *)(uintptr_t)CGI_MENU); - item_append(_(submenu::advanced_options[0].description), 0, (void *)(uintptr_t)ADVANCED_MENU); + item_append(_(submenu::advanced_options()[0].description), 0, (void *)(uintptr_t)ADVANCED_MENU); item_append(menu_item_type::SEPARATOR); item_append(_("Save Configuration"), 0, (void *)(uintptr_t)SAVE_CONFIG); @@ -92,7 +92,7 @@ void menu_simple_game_options::handle_item_event(event const &menu_event) case MISC_MENU: if (menu_event.iptkey == IPT_UI_SELECT) { - menu::stack_push(ui(), container(), submenu::misc_options); + menu::stack_push(ui(), container(), submenu::misc_options()); ui_globals::reset = true; } break; @@ -106,13 +106,13 @@ void menu_simple_game_options::handle_item_event(event const &menu_event) case DISPLAY_MENU: if (menu_event.iptkey == IPT_UI_SELECT) { - menu::stack_push(ui(), container(), submenu::video_options); + menu::stack_push(ui(), container(), submenu::video_options()); ui_globals::reset = true; } break; case CONTROLLER_MENU: if (menu_event.iptkey == IPT_UI_SELECT) - menu::stack_push(ui(), container(), submenu::control_options); + menu::stack_push(ui(), container(), submenu::control_options()); break; case CGI_MENU: if (menu_event.iptkey == IPT_UI_SELECT) @@ -121,7 +121,7 @@ void menu_simple_game_options::handle_item_event(event const &menu_event) case ADVANCED_MENU: if (menu_event.iptkey == IPT_UI_SELECT) { - menu::stack_push(ui(), container(), submenu::advanced_options); + menu::stack_push(ui(), container(), submenu::advanced_options()); ui_globals::reset = true; } break; diff --git a/src/frontend/mame/ui/submenu.cpp b/src/frontend/mame/ui/submenu.cpp index 6d034841b51..d93b7a8af6a 100644 --- a/src/frontend/mame/ui/submenu.cpp +++ b/src/frontend/mame/ui/submenu.cpp @@ -24,104 +24,116 @@ namespace ui { -std::vector const submenu::misc_options = { - { submenu::option_type::HEAD, __("Miscellaneous Options") }, - { submenu::option_type::UI, __("Skip imperfect emulation warnings"), OPTION_SKIP_WARNINGS }, - { submenu::option_type::UI, __("Re-select last machine launched"), OPTION_REMEMBER_LAST }, - { submenu::option_type::UI, __("Enlarge images in the right panel"), OPTION_ENLARGE_SNAPS }, - { submenu::option_type::EMU, __("Cheats"), OPTION_CHEAT }, - { submenu::option_type::EMU, __("Show mouse pointer"), OPTION_UI_MOUSE }, - { submenu::option_type::EMU, __("Confirm quit from machines"), OPTION_CONFIRM_QUIT }, - { submenu::option_type::EMU, __("Skip information screen at startup"), OPTION_SKIP_GAMEINFO }, - { submenu::option_type::UI, __("Force 4:3 aspect for snapshot display"), OPTION_FORCED4X3 }, - { submenu::option_type::UI, __("Use image as background"), OPTION_USE_BACKGROUND }, - { submenu::option_type::UI, __("Skip BIOS selection menu"), OPTION_SKIP_BIOS_MENU }, - { submenu::option_type::UI, __("Skip software parts selection menu"), OPTION_SKIP_PARTS_MENU }, - { submenu::option_type::UI, __("Info auto audit"), OPTION_INFO_AUTO_AUDIT }, - { submenu::option_type::UI, __("Hide romless machine from available list"),OPTION_HIDE_ROMLESS }, -}; - -std::vector const submenu::advanced_options = { - { submenu::option_type::HEAD, __("Advanced Options") }, - { submenu::option_type::HEAD, __("Performance Options") }, - { submenu::option_type::EMU, __("Auto frame skip"), OPTION_AUTOFRAMESKIP }, - { submenu::option_type::EMU, __("Frame skip"), OPTION_FRAMESKIP }, - { submenu::option_type::EMU, __("Throttle"), OPTION_THROTTLE }, - { submenu::option_type::EMU, __("Sleep"), OPTION_SLEEP }, - { submenu::option_type::EMU, __("Speed"), OPTION_SPEED }, - { submenu::option_type::EMU, __("Refresh speed"), OPTION_REFRESHSPEED }, - { submenu::option_type::EMU, __("Low latency"), OPTION_LOWLATENCY }, - - { submenu::option_type::HEAD, __("Rotation Options") }, - { submenu::option_type::EMU, __("Rotate"), OPTION_ROTATE }, - { submenu::option_type::EMU, __("Rotate right"), OPTION_ROR }, - { submenu::option_type::EMU, __("Rotate left"), OPTION_ROL }, - { submenu::option_type::EMU, __("Auto rotate right"), OPTION_AUTOROR }, - { submenu::option_type::EMU, __("Auto rotate left"), OPTION_AUTOROL }, - { submenu::option_type::EMU, __("Flip X"), OPTION_FLIPX }, - { submenu::option_type::EMU, __("Flip Y"), OPTION_FLIPY }, - - { submenu::option_type::HEAD, __("Artwork Options") }, - { submenu::option_type::EMU, __("Artwork Crop"), OPTION_ARTWORK_CROP }, - - { submenu::option_type::HEAD, __("State/Playback Options") }, - { submenu::option_type::EMU, __("Automatic save/restore"), OPTION_AUTOSAVE }, - { submenu::option_type::EMU, __("Rewind"), OPTION_REWIND }, - { submenu::option_type::EMU, __("Rewind capacity"), OPTION_REWIND_CAPACITY }, - { submenu::option_type::EMU, __("Bilinear snapshot"), OPTION_SNAPBILINEAR }, - { submenu::option_type::EMU, __("Burn-in"), OPTION_BURNIN }, - - { submenu::option_type::HEAD, __("Input Options") }, - { submenu::option_type::EMU, __("Coin lockout"), OPTION_COIN_LOCKOUT }, - { submenu::option_type::EMU, __("Mouse"), OPTION_MOUSE }, - { submenu::option_type::EMU, __("Joystick"), OPTION_JOYSTICK }, - { submenu::option_type::EMU, __("Lightgun"), OPTION_LIGHTGUN }, - { submenu::option_type::EMU, __("Multi-keyboard"), OPTION_MULTIKEYBOARD }, - { submenu::option_type::EMU, __("Multi-mouse"), OPTION_MULTIMOUSE }, - { submenu::option_type::EMU, __("Steadykey"), OPTION_STEADYKEY }, - { submenu::option_type::EMU, __("UI active"), OPTION_UI_ACTIVE }, - { submenu::option_type::EMU, __("Offscreen reload"), OPTION_OFFSCREEN_RELOAD }, - { submenu::option_type::EMU, __("Joystick deadzone"), OPTION_JOYSTICK_DEADZONE }, - { submenu::option_type::EMU, __("Joystick saturation"), OPTION_JOYSTICK_SATURATION }, - { submenu::option_type::EMU, __("Natural keyboard"), OPTION_NATURAL_KEYBOARD }, - { submenu::option_type::EMU, __("Simultaneous contradictory"), OPTION_JOYSTICK_CONTRADICTORY }, - { submenu::option_type::EMU, __("Coin impulse"), OPTION_COIN_IMPULSE }, -}; - -std::vector const submenu::control_options = { - { submenu::option_type::HEAD, __("Device Mapping") }, - { submenu::option_type::EMU, __("Lightgun Device Assignment"), OPTION_LIGHTGUN_DEVICE }, - { submenu::option_type::EMU, __("Trackball Device Assignment"), OPTION_TRACKBALL_DEVICE }, - { submenu::option_type::EMU, __("Pedal Device Assignment"), OPTION_PEDAL_DEVICE }, - { submenu::option_type::EMU, __("Adstick Device Assignment"), OPTION_ADSTICK_DEVICE }, - { submenu::option_type::EMU, __("Paddle Device Assignment"), OPTION_PADDLE_DEVICE }, - { submenu::option_type::EMU, __("Dial Device Assignment"), OPTION_DIAL_DEVICE }, - { submenu::option_type::EMU, __("Positional Device Assignment"), OPTION_POSITIONAL_DEVICE }, - { submenu::option_type::EMU, __("Mouse Device Assignment"), OPTION_MOUSE_DEVICE } -}; - -std::vector const submenu::video_options = { - { submenu::option_type::HEAD, __("Video Options") }, - { submenu::option_type::OSD, __("Video Mode"), OSDOPTION_VIDEO }, - { submenu::option_type::OSD, __("Number Of Screens"), OSDOPTION_NUMSCREENS }, + +std::vector submenu::misc_options() +{ + return std::vector