summaryrefslogtreecommitdiffstats
path: root/docs/release/src/osd/winui/mui_opts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/osd/winui/mui_opts.cpp')
-rw-r--r--docs/release/src/osd/winui/mui_opts.cpp1991
1 files changed, 911 insertions, 1080 deletions
diff --git a/docs/release/src/osd/winui/mui_opts.cpp b/docs/release/src/osd/winui/mui_opts.cpp
index 409960e45ef..e5383ded001 100644
--- a/docs/release/src/osd/winui/mui_opts.cpp
+++ b/docs/release/src/osd/winui/mui_opts.cpp
@@ -13,32 +13,24 @@
// standard windows headers
#include <windows.h>
#include <windowsx.h>
-#include <winreg.h>
-#include <commctrl.h>
// standard C headers
-#include <assert.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <math.h>
-#include <direct.h>
-#include <emu.h>
-#include <mameopts.h>
-#include <ui/moptions.h>
-#include <stddef.h>
#include <tchar.h>
// MAME/MAMEUI headers
-#include "bitmask.h"
+#include "emu.h"
+#include "ui/moptions.h"
+#include "ui/info.h"
+#include "drivenum.h"
#include "winui.h"
+#include "mui_opts.h"
+#include <fstream> // for *_opts.h (below)
+#include "game_opts.h"
+#include "ui_opts.h"
+//#include "ini_opts.h" // not ready yet
#include "mui_util.h"
#include "treeview.h"
#include "splitters.h"
-#include "mui_opts.h"
-#include "winutf8.h"
-#include "strconv.h"
-#include "drivenum.h"
-#include "game_opts.h"
#ifdef _MSC_VER
#define snprintf _snprintf
@@ -50,36 +42,31 @@
// static void LoadFolderFilter(int folder_index,int filters);
-static void LoadSettingsFile(winui_options &opts, const char *filename);
-static void SaveSettingsFile(winui_options &opts, const char *filename);
static void LoadSettingsFile(windows_options &opts, const char *filename);
static void SaveSettingsFile(windows_options &opts, const char *filename);
+static void LoadSettingsFile(ui_options &opts, const char *filename); // mewui
-static void LoadOptionsAndSettings(void);
-
-static void CusColorEncodeString(const COLORREF *value, char* str);
-static void CusColorDecodeString(const char* str, COLORREF *value);
+static string CusColorEncodeString(const COLORREF *value);
+static void CusColorDecodeString(string ss, COLORREF *value);
-static void SplitterEncodeString(const int *value, char* str);
-static void SplitterDecodeString(const char *str, int *value);
+static string SplitterEncodeString(const int *value);
+static void SplitterDecodeString(string ss, int *value);
-static void FontEncodeString(const LOGFONT *f, char *str);
-static void FontDecodeString(const char* str, LOGFONT *f);
+static string FontEncodeString(const LOGFONT *f);
+static void FontDecodeString(string ss, LOGFONT *f);
-static void TabFlagsEncodeString(int data, char *str);
-static void TabFlagsDecodeString(const char *str, int *data);
+static string TabFlagsEncodeString(int data);
+static void TabFlagsDecodeString(string ss, int *data);
-static DWORD DecodeFolderFlags(const char *buf);
+static DWORD DecodeFolderFlags(string ss);
static const char * EncodeFolderFlags(DWORD value);
-static void ResetToDefaults(windows_options &opts, int priority);
+static string ColumnEncodeStringWithCount(const int *value, int count);
+static void ColumnDecodeStringWithCount(string ss, int *value, int count);
-//static void ui_parse_ini_file(windows_options &opts, const char *name);
+static void ResetToDefaults(windows_options &opts, int priority);
-#ifdef _MSC_VER
-#define snprintf _snprintf
-#endif
/***************************************************************************
Internal defines
@@ -88,121 +75,6 @@ static void ResetToDefaults(windows_options &opts, int priority);
#define GAMEINFO_INI_FILENAME MAMENAME "_g.ini"
#define MEWUI_FILENAME "ini\\ui.ini"
-#define MUIOPTION_LIST_MODE "list_mode"
-#define MUIOPTION_CHECK_GAME "check_game"
-#define MUIOPTION_JOYSTICK_IN_INTERFACE "joystick_in_interface"
-#define MUIOPTION_KEYBOARD_IN_INTERFACE "keyboard_in_interface"
-#define MUIOPTION_CYCLE_SCREENSHOT "cycle_screenshot"
-#define MUIOPTION_STRETCH_SCREENSHOT_LARGER "stretch_screenshot_larger"
-#define MUIOPTION_SCREENSHOT_BORDER_SIZE "screenshot_bordersize"
-#define MUIOPTION_SCREENSHOT_BORDER_COLOR "screenshot_bordercolor"
-#define MUIOPTION_INHERIT_FILTER "inherit_filter"
-#define MUIOPTION_OFFSET_CLONES "offset_clones"
-#define MUIOPTION_DEFAULT_FOLDER_ID "default_folder_id"
-#define MUIOPTION_SHOW_IMAGE_SECTION "show_image_section"
-#define MUIOPTION_SHOW_FOLDER_SECTION "show_folder_section"
-#define MUIOPTION_HIDE_FOLDERS "hide_folders"
-#define MUIOPTION_SHOW_STATUS_BAR "show_status_bar"
-#define MUIOPTION_SHOW_TABS "show_tabs"
-#define MUIOPTION_SHOW_TOOLBAR "show_tool_bar"
-#define MUIOPTION_CURRENT_TAB "current_tab"
-#define MUIOPTION_WINDOW_X "window_x"
-#define MUIOPTION_WINDOW_Y "window_y"
-#define MUIOPTION_WINDOW_WIDTH "window_width"
-#define MUIOPTION_WINDOW_HEIGHT "window_height"
-#define MUIOPTION_WINDOW_STATE "window_state"
-#define MUIOPTION_CUSTOM_COLOR "custom_color"
-#define MUIOPTION_LIST_FONT "list_font"
-#define MUIOPTION_TEXT_COLOR "text_color"
-#define MUIOPTION_CLONE_COLOR "clone_color"
-#define MUIOPTION_HIDE_TABS "hide_tabs"
-#define MUIOPTION_HISTORY_TAB "history_tab"
-#define MUIOPTION_COLUMN_WIDTHS "column_widths"
-#define MUIOPTION_COLUMN_ORDER "column_order"
-#define MUIOPTION_COLUMN_SHOWN "column_shown"
-#define MUIOPTION_SPLITTERS "splitters"
-#define MUIOPTION_SORT_COLUMN "sort_column"
-#define MUIOPTION_SORT_REVERSED "sort_reversed"
-#define MUIOPTION_ICONS_DIRECTORY "icons_directory"
-#define MUIOPTION_BACKGROUND_DIRECTORY "background_directory"
-#define MUIOPTION_DATS_DIRECTORY "dats_directory"
-#define MUIOPTION_UI_KEY_UP "ui_key_up"
-#define MUIOPTION_UI_KEY_DOWN "ui_key_down"
-#define MUIOPTION_UI_KEY_LEFT "ui_key_left"
-#define MUIOPTION_UI_KEY_RIGHT "ui_key_right"
-#define MUIOPTION_UI_KEY_START "ui_key_start"
-#define MUIOPTION_UI_KEY_PGUP "ui_key_pgup"
-#define MUIOPTION_UI_KEY_PGDWN "ui_key_pgdwn"
-#define MUIOPTION_UI_KEY_HOME "ui_key_home"
-#define MUIOPTION_UI_KEY_END "ui_key_end"
-#define MUIOPTION_UI_KEY_SS_CHANGE "ui_key_ss_change"
-#define MUIOPTION_UI_KEY_HISTORY_UP "ui_key_history_up"
-#define MUIOPTION_UI_KEY_HISTORY_DOWN "ui_key_history_down"
-#define MUIOPTION_UI_KEY_CONTEXT_FILTERS "ui_key_context_filters"
-#define MUIOPTION_UI_KEY_SELECT_RANDOM "ui_key_select_random"
-#define MUIOPTION_UI_KEY_GAME_AUDIT "ui_key_game_audit"
-#define MUIOPTION_UI_KEY_GAME_PROPERTIES "ui_key_game_properties"
-#define MUIOPTION_UI_KEY_HELP_CONTENTS "ui_key_help_contents"
-#define MUIOPTION_UI_KEY_UPDATE_GAMELIST "ui_key_update_gamelist"
-#define MUIOPTION_UI_KEY_VIEW_FOLDERS "ui_key_view_folders"
-#define MUIOPTION_UI_KEY_VIEW_FULLSCREEN "ui_key_view_fullscreen"
-#define MUIOPTION_UI_KEY_VIEW_PAGETAB "ui_key_view_pagetab"
-#define MUIOPTION_UI_KEY_VIEW_PICTURE_AREA "ui_key_view_picture_area"
-#define MUIOPTION_UI_KEY_VIEW_STATUS "ui_key_view_status"
-#define MUIOPTION_UI_KEY_VIEW_TOOLBARS "ui_key_view_toolbars"
-#define MUIOPTION_UI_KEY_VIEW_TAB_CABINET "ui_key_view_tab_cabinet"
-#define MUIOPTION_UI_KEY_VIEW_TAB_CPANEL "ui_key_view_tab_cpanel"
-#define MUIOPTION_UI_KEY_VIEW_TAB_FLYER "ui_key_view_tab_flyer"
-#define MUIOPTION_UI_KEY_VIEW_TAB_HISTORY "ui_key_view_tab_history"
-#define MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE "ui_key_view_tab_marquee"
-#define MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT "ui_key_view_tab_screenshot"
-#define MUIOPTION_UI_KEY_VIEW_TAB_TITLE "ui_key_view_tab_title"
-#define MUIOPTION_UI_KEY_VIEW_TAB_PCB "ui_key_view_tab_pcb"
-#define MUIOPTION_UI_KEY_QUIT "ui_key_quit"
-#define MUIOPTION_UI_JOY_UP "ui_joy_up"
-#define MUIOPTION_UI_JOY_DOWN "ui_joy_down"
-#define MUIOPTION_UI_JOY_LEFT "ui_joy_left"
-#define MUIOPTION_UI_JOY_RIGHT "ui_joy_right"
-#define MUIOPTION_UI_JOY_START "ui_joy_start"
-#define MUIOPTION_UI_JOY_PGUP "ui_joy_pgup"
-#define MUIOPTION_UI_JOY_PGDWN "ui_joy_pgdwn"
-#define MUIOPTION_UI_JOY_HOME "ui_joy_home"
-#define MUIOPTION_UI_JOY_END "ui_joy_end"
-#define MUIOPTION_UI_JOY_SS_CHANGE "ui_joy_ss_change"
-#define MUIOPTION_UI_JOY_HISTORY_UP "ui_joy_history_up"
-#define MUIOPTION_UI_JOY_HISTORY_DOWN "ui_joy_history_down"
-#define MUIOPTION_UI_JOY_EXEC "ui_joy_exec"
-#define MUIOPTION_EXEC_COMMAND "exec_command"
-#define MUIOPTION_EXEC_WAIT "exec_wait"
-#define MUIOPTION_HIDE_MOUSE "hide_mouse"
-#define MUIOPTION_FULL_SCREEN "full_screen"
-#define MUIOPTION_SHOW_SOFTWARE_SECTION "show_software_section"
-#define MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA "ui_key_view_software_area"
-
-#ifdef MESS
-#define MUIOPTION_DEFAULT_GAME "default_system"
-#define MUIDEFAULT_SELECTION "3do"
-#define MUIDEFAULT_SPLITTERS "152,310,468"
-#else
-#define MUIOPTION_DEFAULT_GAME "default_machine"
-#define MUIDEFAULT_SELECTION "puckman"
-#define MUIDEFAULT_SPLITTERS "152,362"
-#endif
-
-#define MUIOPTION_VERSION "version"
-
-#define MESSUI_SL_COLUMN_SHOWN "sl_column_shown"
-#define MESSUI_SL_COLUMN_WIDTHS "sl_column_widths"
-#define MESSUI_SL_COLUMN_ORDER "sl_column_order"
-#define MESSUI_SL_SORT_REVERSED "sl_sort_reversed"
-#define MESSUI_SL_SORT_COLUMN "sl_sort_column"
-#define MESSUI_SW_COLUMN_SHOWN "sw_column_shown"
-#define MESSUI_SW_COLUMN_WIDTHS "sw_column_widths"
-#define MESSUI_SW_COLUMN_ORDER "sw_column_order"
-#define MESSUI_SW_SORT_REVERSED "sw_sort_reversed"
-#define MESSUI_SW_SORT_COLUMN "sw_sort_column"
-#define MESSUI_SOFTWARE_TAB "current_software_tab"
-#define MESSUI_SLPATH "slpath"
/***************************************************************************
@@ -213,149 +85,11 @@ static void ResetToDefaults(windows_options &opts, int priority);
Internal variables
***************************************************************************/
-static mame_options mameopts; // core options
+static emu_options mameopts; // core options
static ui_options mewui; // ui.ini
-static winui_options settings; // mameui.ini
-
+static winui_ui_options settings; // mameui.ini
static windows_options global; // Global 'default' options
-
-static game_options game_opts;
-
-// UI options in MAMEui.ini
-const options_entry winui_options::s_option_entries[] =
-{
- // UI options
- { NULL, NULL, OPTION_HEADER, "APPLICATION OPTIONS" },
- { MUIOPTION_VERSION, "", OPTION_STRING, NULL },
- { NULL, NULL, OPTION_HEADER, "DISPLAY STATE OPTIONS" },
- { MUIOPTION_DEFAULT_GAME, MUIDEFAULT_SELECTION, OPTION_STRING, NULL },
- { MUIOPTION_DEFAULT_FOLDER_ID, "0", OPTION_INTEGER, NULL },
- { MUIOPTION_SHOW_IMAGE_SECTION, "1", OPTION_BOOLEAN, NULL },
- { MUIOPTION_FULL_SCREEN, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_CURRENT_TAB, "0", OPTION_STRING, NULL },
- { MESSUI_SOFTWARE_TAB, "0", OPTION_STRING, NULL },
- { MUIOPTION_SHOW_TOOLBAR, "1", OPTION_BOOLEAN, NULL },
- { MUIOPTION_SHOW_STATUS_BAR, "1", OPTION_BOOLEAN, NULL },
- { MUIOPTION_HIDE_FOLDERS, "", OPTION_STRING, NULL },
- { MUIOPTION_SHOW_FOLDER_SECTION, "1", OPTION_BOOLEAN, NULL },
- { MUIOPTION_SHOW_TABS, "1", OPTION_BOOLEAN, NULL },
- { MUIOPTION_HIDE_TABS, "marquee, title, cpanel, pcb, history", OPTION_STRING, NULL },
- { MUIOPTION_HISTORY_TAB, "0", OPTION_INTEGER, NULL },
- { MUIOPTION_SHOW_SOFTWARE_SECTION, "1", OPTION_BOOLEAN, NULL },
- { MUIOPTION_SORT_COLUMN, "0", OPTION_INTEGER, NULL },
- { MUIOPTION_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_WINDOW_X, "0", OPTION_INTEGER, NULL },
- { MUIOPTION_WINDOW_Y, "0", OPTION_INTEGER, NULL },
- { MUIOPTION_WINDOW_WIDTH, "800", OPTION_INTEGER, NULL },
- { MUIOPTION_WINDOW_HEIGHT, "600", OPTION_INTEGER, NULL },
- { MUIOPTION_WINDOW_STATE, "1", OPTION_INTEGER, NULL },
- { MUIOPTION_TEXT_COLOR, "-1", OPTION_INTEGER, NULL },
- { MUIOPTION_CLONE_COLOR, "-1", OPTION_INTEGER, NULL },
- { MUIOPTION_CUSTOM_COLOR, "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", OPTION_STRING, NULL },
- /* ListMode needs to be before ColumnWidths settings */
- { MUIOPTION_LIST_MODE, "5", OPTION_INTEGER, NULL },
- { MUIOPTION_SPLITTERS, MUIDEFAULT_SPLITTERS, OPTION_STRING, NULL },
- { MUIOPTION_LIST_FONT, "-8,0,0,0,400,0,0,0,0,0,0,0,MS Sans Serif", OPTION_STRING, NULL },
- { MUIOPTION_COLUMN_WIDTHS, "185,78,84,84,64,88,74,108,60,144,84,40,40", OPTION_STRING, NULL },
- { MUIOPTION_COLUMN_ORDER, "0,1,2,3,4,5,6,7,8,9,10,11,12", OPTION_STRING, NULL },
- { MUIOPTION_COLUMN_SHOWN, "1,1,1,1,1,1,1,1,1,1,1,1,0", OPTION_STRING, NULL },
- { MESSUI_SL_COLUMN_WIDTHS, "100,75,223,46,120,120", OPTION_STRING, NULL },
- { MESSUI_SL_COLUMN_ORDER, "0,1,2,3,4,5", OPTION_STRING, NULL }, // order of columns
- { MESSUI_SL_COLUMN_SHOWN, "1,1,1,1,1,1", OPTION_STRING, NULL }, // 0=hide,1=show
- { MESSUI_SL_SORT_COLUMN, "0", OPTION_INTEGER, NULL },
- { MESSUI_SL_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL },
- { MESSUI_SW_COLUMN_WIDTHS, "400", OPTION_STRING, NULL },
- { MESSUI_SW_COLUMN_ORDER, "0", OPTION_STRING, NULL }, // 1= dummy column
- { MESSUI_SW_COLUMN_SHOWN, "1", OPTION_STRING, NULL }, // 0=don't show it
- { MESSUI_SW_SORT_COLUMN, "0", OPTION_INTEGER, NULL },
- { MESSUI_SW_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL },
- { NULL, NULL, OPTION_HEADER, "INTERFACE OPTIONS" },
- { MUIOPTION_CHECK_GAME, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_JOYSTICK_IN_INTERFACE, "1", OPTION_BOOLEAN, NULL },
- { MUIOPTION_KEYBOARD_IN_INTERFACE, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_HIDE_MOUSE, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_INHERIT_FILTER, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_OFFSET_CLONES, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_STRETCH_SCREENSHOT_LARGER, "0", OPTION_BOOLEAN, NULL },
- { MUIOPTION_CYCLE_SCREENSHOT, "0", OPTION_INTEGER, NULL },
- { MUIOPTION_SCREENSHOT_BORDER_SIZE, "11", OPTION_INTEGER, NULL },
- { MUIOPTION_SCREENSHOT_BORDER_COLOR, "-1", OPTION_INTEGER, NULL },
- { MUIOPTION_EXEC_COMMAND, "", OPTION_STRING, NULL },
- { MUIOPTION_EXEC_WAIT, "0", OPTION_INTEGER, NULL },
- { NULL, NULL, OPTION_HEADER, "SEARCH PATH OPTIONS" },
- { MUIOPTION_BACKGROUND_DIRECTORY, "bkground", OPTION_STRING, NULL },
- { MUIOPTION_ICONS_DIRECTORY, "icons", OPTION_STRING, NULL },
- { MUIOPTION_DATS_DIRECTORY, "dats", OPTION_STRING, NULL },
- { MESSUI_SLPATH, "software", OPTION_STRING, NULL },
- { NULL, NULL, OPTION_HEADER, "NAVIGATION KEY CODES" },
- { MUIOPTION_UI_KEY_UP, "KEYCODE_UP", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_DOWN, "KEYCODE_DOWN", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_LEFT, "KEYCODE_LEFT", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_RIGHT, "KEYCODE_RIGHT", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_START, "KEYCODE_ENTER NOT KEYCODE_LALT", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_PGUP, "KEYCODE_PGUP", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_PGDWN, "KEYCODE_PGDN", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_HOME, "KEYCODE_HOME", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_END, "KEYCODE_END", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_SS_CHANGE, "KEYCODE_INSERT", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_HISTORY_UP, "KEYCODE_DEL", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_HISTORY_DOWN, "KEYCODE_LALT KEYCODE_0", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_CONTEXT_FILTERS, "KEYCODE_LCONTROL KEYCODE_F", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_SELECT_RANDOM, "KEYCODE_LCONTROL KEYCODE_R", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_GAME_AUDIT, "KEYCODE_LALT KEYCODE_A", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_GAME_PROPERTIES, "KEYCODE_LALT KEYCODE_ENTER", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_HELP_CONTENTS, "KEYCODE_F1", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_UPDATE_GAMELIST, "KEYCODE_F5", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_FOLDERS, "KEYCODE_LALT KEYCODE_D", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_FULLSCREEN, "KEYCODE_F11", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_PAGETAB, "KEYCODE_LALT KEYCODE_B", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_PICTURE_AREA, "KEYCODE_LALT KEYCODE_P", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA, "KEYCODE_LALT KEYCODE_W", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_STATUS, "KEYCODE_LALT KEYCODE_S", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TOOLBARS, "KEYCODE_LALT KEYCODE_T", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_CABINET, "KEYCODE_LALT KEYCODE_3", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_CPANEL, "KEYCODE_LALT KEYCODE_6", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_FLYER, "KEYCODE_LALT KEYCODE_2", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_HISTORY, "KEYCODE_LALT KEYCODE_8", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE, "KEYCODE_LALT KEYCODE_4", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT, "KEYCODE_LALT KEYCODE_1", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_TITLE, "KEYCODE_LALT KEYCODE_5", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_VIEW_TAB_PCB, "KEYCODE_LALT KEYCODE_7", OPTION_STRING, NULL },
- { MUIOPTION_UI_KEY_QUIT, "KEYCODE_LALT KEYCODE_Q", OPTION_STRING, NULL },
- { NULL, NULL, OPTION_HEADER, "NAVIGATION JOYSTICK CODES" },
- { MUIOPTION_UI_JOY_UP, "1,1,1,1", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_DOWN, "1,1,1,2", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_LEFT, "1,1,2,1", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_RIGHT, "1,1,2,2", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_START, "1,0,1,0", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_PGUP, "2,1,2,1", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_PGDWN, "2,1,2,2", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_HOME, "0,0,0,0", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_END, "0,0,0,0", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_SS_CHANGE, "2,0,3,0", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_HISTORY_UP, "2,0,4,0", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_HISTORY_DOWN, "2,0,1,0", OPTION_STRING, NULL },
- { MUIOPTION_UI_JOY_EXEC, "0,0,0,0", OPTION_STRING, NULL },
- { NULL }
-};
-
-#if 0
-// no longer used, but keep in case we need to add more per-game options in the future
-static const options_entry perGameOptions[] =
-{
- // per game options in messui.ini - transferred to swpath
- { "_extra_software", "", OPTION_STRING, NULL },
- { NULL }
-};
-#endif
-
-static const options_entry filterOptions[] =
-{
- // filters
- { "_filters", "0", OPTION_INTEGER, NULL },
- { NULL }
-};
-
+static winui_game_options game_opts; // game stats
// Screen shot Page tab control text
@@ -363,25 +97,45 @@ static const options_entry filterOptions[] =
// (TAB_...)
static const char *const image_tabs_long_name[MAX_TAB_TYPES] =
{
- "Snapshot",
- "Flyer",
+ "Artwork",
+ "Boss",
"Cabinet",
- "Marquee",
- "Title",
"Control Panel",
+ "Cover",
+ "End",
+ "Flyer",
+ "Game Over",
+ "How To",
+ "Logo",
+ "Marquee",
"PCB",
- "History",
+ "Scores",
+ "Select",
+ "Snapshot",
+ "Title",
+ "Versus",
+ "History"
};
static const char *const image_tabs_short_name[MAX_TAB_TYPES] =
{
- "snapshot",
- "flyer",
+ "artpreview",
+ "boss",
"cabinet",
- "marquee",
- "title",
"cpanel",
+ "cover",
+ "end",
+ "flyer",
+ "gameover",
+ "howto",
+ "logo",
+ "marquee",
"pcb",
+ "scores",
+ "select",
+ "snap",
+ "title",
+ "versus",
"history"
};
@@ -389,64 +143,33 @@ static const char *const image_tabs_short_name[MAX_TAB_TYPES] =
/***************************************************************************
External functions
***************************************************************************/
-winui_options::winui_options()
+void SetSystemName(windows_options &opts, OPTIONS_TYPE opt_type, int driver_index)
{
- add_entries(s_option_entries);
+ if (driver_index >= 0)
+ mameopts.set_system_name(driver_list::driver(driver_index).name);
}
-void CreateGameOptions(windows_options &opts, OPTIONS_TYPE opt_type, int driver_index)
+string GetGameName(uint32_t driver_index)
{
- if (driver_index >= 0)
- mameopts.set_system_name(opts, driver_list::driver(driver_index).name);
+ if (driver_index < driver_list::total())
+ return driver_list::driver(driver_index).name;
+ else
+ return "0";
}
BOOL OptionsInit()
{
-#if 0
-// keep in case we need per-game options in the future
- // set up per game options
- {
- char buffer[128];
- int i, j;
- int game_option_count = 0;
-
- while(perGameOptions[game_option_count].name)
- game_option_count++;
-
- for (i = 0; i < driver_list::total(); i++)
- {
- for (j = 0; j < game_option_count; j++)
- {
- options_entry entry[2] = { { 0 }, { 0 } };
- snprintf(buffer, ARRAY_LENGTH(buffer), "%s%s", driver_list::driver(i).name, perGameOptions[j].name);
-
- entry[0].name = core_strdup(buffer);
- entry[0].defvalue = perGameOptions[j].defvalue;
- entry[0].flags = perGameOptions[j].flags;
- entry[0].description = perGameOptions[j].description;
- settings.add_entries(entry);
- }
- }
- }
-#endif
-
- game_opts.add_entries();
// set up global options
- CreateGameOptions(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS);
- // now load the options and settings
- LoadOptionsAndSettings();
-
+ printf("OptionsInit: About to load %s\n",UI_INI_FILENAME);fflush(stdout);
+ settings.load_file(UI_INI_FILENAME); // parse MAMEUI.ini
+ printf("OptionsInit: About to load %s\n",MEWUI_FILENAME);fflush(stdout);
+ LoadSettingsFile(mewui, MEWUI_FILENAME); // parse UI.INI
+ printf("OptionsInit: About to load %s\n",GAMEINFO_INI_FILENAME);fflush(stdout);
+ game_opts.load_file(GAMEINFO_INI_FILENAME); // parse MAME_g.ini
+ printf("OptionsInit: About to load Global Options\n");fflush(stdout);
+ load_options(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS, 0); // parse MAME.INI
+ printf("OptionsInit: Finished\n");fflush(stdout);
return TRUE;
-
-}
-
-void OptionsExit(void)
-{
-}
-
-winui_options & MameUISettings(void)
-{
- return settings;
}
windows_options & MameUIGlobal(void)
@@ -457,22 +180,16 @@ windows_options & MameUIGlobal(void)
// Restore ui settings to factory
void ResetGUI(void)
{
- settings.revert(OPTION_PRIORITY_NORMAL);
- // Save the new MAMEui.ini
- SaveOptions();
+ settings.reset_and_save(UI_INI_FILENAME);
}
const char * GetImageTabLongName(int tab_index)
{
- assert(tab_index >= 0);
- assert(tab_index < ARRAY_LENGTH(image_tabs_long_name));
return image_tabs_long_name[tab_index];
}
const char * GetImageTabShortName(int tab_index)
{
- assert(tab_index >= 0);
- assert(tab_index < ARRAY_LENGTH(image_tabs_short_name));
return image_tabs_short_name[tab_index];
}
@@ -480,60 +197,54 @@ const char * GetImageTabShortName(int tab_index)
// OPTIONS WRAPPERS
//============================================================
-static COLORREF options_get_color(winui_options &opts, const char *name)
+static COLORREF options_get_color(const char *name)
{
- const char *value_str;
unsigned int r = 0, g = 0, b = 0;
COLORREF value;
+ const string val = settings.getter(name);
- value_str = opts.value(name);
-
- if (sscanf(value_str, "%u,%u,%u", &r, &g, &b) == 3)
+ if (sscanf(val.c_str(), "%u,%u,%u", &r, &g, &b) == 3)
value = RGB(r,g,b);
else
value = (COLORREF) - 1;
return value;
}
-static void options_set_color(winui_options &opts, const char *name, COLORREF value)
+static void options_set_color(const char *name, COLORREF value)
{
char value_str[32];
if (value == (COLORREF) -1)
- {
snprintf(value_str, ARRAY_LENGTH(value_str), "%d", (int) value);
- }
else
- {
snprintf(value_str, ARRAY_LENGTH(value_str), "%d,%d,%d", (((int) value) >> 0) & 0xFF, (((int) value) >> 8) & 0xFF, (((int) value) >> 16) & 0xFF);
- }
- std::string error_string;
- opts.set_value(name, value_str, OPTION_PRIORITY_CMDLINE,error_string);
+
+ settings.setter(name, string(value_str));
}
-static COLORREF options_get_color_default(winui_options &opts, const char *name, int default_color)
+static COLORREF options_get_color_default(const char *name, int default_color)
{
- COLORREF value = options_get_color(opts, name);
+ COLORREF value = options_get_color(name);
if (value == (COLORREF) -1)
value = GetSysColor(default_color);
+
return value;
}
-static void options_set_color_default(winui_options &opts, const char *name, COLORREF value, int default_color)
+static void options_set_color_default(const char *name, COLORREF value, int default_color)
{
if (value == GetSysColor(default_color))
- options_set_color(settings, name, (COLORREF) -1);
+ options_set_color(name, (COLORREF) -1);
else
- options_set_color(settings, name, value);
+ options_set_color(name, value);
}
-static input_seq *options_get_input_seq(winui_options &opts, const char *name)
+static input_seq *options_get_input_seq(const char *name)
{
-/* static input_seq seq;
- const char *seq_string;
-
- seq_string = opts.value( name);
- input_seq_from_tokens(NULL, seq_string, &seq); // HACK
+/*
+ static input_seq seq;
+ string val = settings.getter(name);
+ input_seq_from_tokens(NULL, seq_string.c_str(), &seq); // HACK
return &seq;*/
return NULL;
}
@@ -544,10 +255,10 @@ static input_seq *options_get_input_seq(winui_options &opts, const char *name)
// OPTIONS CALLS
//============================================================
+// ***************************************************************** MAMEUI.INI settings **************************************************************************
void SetViewMode(int val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_LIST_MODE, val, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_LIST_MODE, val);
}
int GetViewMode(void)
@@ -557,8 +268,7 @@ int GetViewMode(void)
void SetGameCheck(BOOL game_check)
{
- std::string error_string;
- settings.set_value(MUIOPTION_CHECK_GAME, game_check, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_CHECK_GAME, game_check);
}
BOOL GetGameCheck(void)
@@ -568,8 +278,7 @@ BOOL GetGameCheck(void)
void SetJoyGUI(BOOL use_joygui)
{
- std::string error_string;
- settings.set_value(MUIOPTION_JOYSTICK_IN_INTERFACE, use_joygui, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_JOYSTICK_IN_INTERFACE, use_joygui);
}
BOOL GetJoyGUI(void)
@@ -579,19 +288,17 @@ BOOL GetJoyGUI(void)
void SetKeyGUI(BOOL use_keygui)
{
- std::string error_string;
- settings.set_value(MUIOPTION_KEYBOARD_IN_INTERFACE, use_keygui, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_KEYBOARD_IN_INTERFACE, use_keygui);
}
BOOL GetKeyGUI(void)
{
- return settings.bool_value( MUIOPTION_KEYBOARD_IN_INTERFACE);
+ return settings.bool_value(MUIOPTION_KEYBOARD_IN_INTERFACE);
}
void SetCycleScreenshot(int cycle_screenshot)
{
- std::string error_string;
- settings.set_value(MUIOPTION_CYCLE_SCREENSHOT, cycle_screenshot, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_CYCLE_SCREENSHOT, cycle_screenshot);
}
int GetCycleScreenshot(void)
@@ -601,19 +308,17 @@ int GetCycleScreenshot(void)
void SetStretchScreenShotLarger(BOOL stretch)
{
- std::string error_string;
- settings.set_value(MUIOPTION_STRETCH_SCREENSHOT_LARGER, stretch, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_STRETCH_SCREENSHOT_LARGER, stretch);
}
BOOL GetStretchScreenShotLarger(void)
{
- return settings.bool_value( MUIOPTION_STRETCH_SCREENSHOT_LARGER);
+ return settings.bool_value(MUIOPTION_STRETCH_SCREENSHOT_LARGER);
}
void SetScreenshotBorderSize(int size)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SCREENSHOT_BORDER_SIZE, size, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_SCREENSHOT_BORDER_SIZE, size);
}
int GetScreenshotBorderSize(void)
@@ -623,18 +328,17 @@ int GetScreenshotBorderSize(void)
void SetScreenshotBorderColor(COLORREF uColor)
{
- options_set_color_default(settings, MUIOPTION_SCREENSHOT_BORDER_COLOR, uColor, COLOR_3DFACE);
+ options_set_color_default(MUIOPTION_SCREENSHOT_BORDER_COLOR, uColor, COLOR_3DFACE);
}
COLORREF GetScreenshotBorderColor(void)
{
- return options_get_color_default(settings, MUIOPTION_SCREENSHOT_BORDER_COLOR, COLOR_3DFACE);
+ return options_get_color_default(MUIOPTION_SCREENSHOT_BORDER_COLOR, COLOR_3DFACE);
}
void SetFilterInherit(BOOL inherit)
{
- std::string error_string;
- settings.set_value(MUIOPTION_INHERIT_FILTER, inherit, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_INHERIT_FILTER, inherit);
}
BOOL GetFilterInherit(void)
@@ -644,8 +348,7 @@ BOOL GetFilterInherit(void)
void SetOffsetClones(BOOL offset)
{
- std::string error_string;
- settings.set_value(MUIOPTION_OFFSET_CLONES, offset, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_OFFSET_CLONES, offset);
}
BOOL GetOffsetClones(void)
@@ -655,8 +358,7 @@ BOOL GetOffsetClones(void)
void SetSavedFolderID(UINT val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_DEFAULT_FOLDER_ID, (int) val, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_DEFAULT_FOLDER_ID, (int) val);
}
UINT GetSavedFolderID(void)
@@ -664,50 +366,28 @@ UINT GetSavedFolderID(void)
return (UINT) settings.int_value(MUIOPTION_DEFAULT_FOLDER_ID);
}
-void SetShowScreenShot(BOOL val)
-{
- std::string error_string;
- settings.set_value(MUIOPTION_SHOW_IMAGE_SECTION, val, OPTION_PRIORITY_CMDLINE,error_string);
-}
-
-BOOL GetShowScreenShot(void)
-{
- return settings.bool_value(MUIOPTION_SHOW_IMAGE_SECTION);
-}
-
-void SetShowSoftware(BOOL val)
+void SetOverrideRedX(BOOL val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SHOW_SOFTWARE_SECTION, val, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_OVERRIDE_REDX, val);
}
-BOOL GetShowSoftware(void)
+BOOL GetOverrideRedX(void)
{
- return settings.bool_value(MUIOPTION_SHOW_SOFTWARE_SECTION);
+ return settings.bool_value(MUIOPTION_OVERRIDE_REDX);
}
-void SetShowFolderList(BOOL val)
+static LPBITS GetShowFolderFlags(LPBITS bits)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SHOW_FOLDER_SECTION, val, OPTION_PRIORITY_CMDLINE,error_string);
-}
+ SetAllBits(bits, TRUE);
-BOOL GetShowFolderList(void)
-{
- return settings.bool_value(MUIOPTION_SHOW_FOLDER_SECTION);
-}
+ string val = settings.getter(MUIOPTION_HIDE_FOLDERS);
+ if (val.empty())
+ return bits;
-static void GetsShowFolderFlags(LPBITS bits)
-{
- char s[2000];
extern const FOLDERDATA g_folderData[];
- char *token;
-
- snprintf(s, ARRAY_LENGTH(s), "%s", settings.value( MUIOPTION_HIDE_FOLDERS));
-
- SetAllBits(bits, TRUE);
-
- token = strtok(s,", \t");
+ char s[val.size()+1];
+ snprintf(s, val.size()+1, "%s", val.c_str());
+ char *token = strtok(s, ",");
int j;
while (token)
{
@@ -719,36 +399,35 @@ static void GetsShowFolderFlags(LPBITS bits)
break;
}
}
- token = strtok(NULL,", \t");
+ token = strtok(NULL,",");
}
+ return bits;
}
BOOL GetShowFolder(int folder)
{
LPBITS show_folder_flags = NewBits(MAX_FOLDERS);
- GetsShowFolderFlags(show_folder_flags);
+ show_folder_flags = GetShowFolderFlags(show_folder_flags);
BOOL result = TestBit(show_folder_flags, folder);
DeleteBits(show_folder_flags);
return result;
}
-void SetShowFolder(int folder,BOOL show)
+void SetShowFolder(int folder, BOOL show)
{
LPBITS show_folder_flags = NewBits(MAX_FOLDERS);
int i = 0, j = 0;
int num_saved = 0;
- char str[10000];
+ string str;
extern const FOLDERDATA g_folderData[];
- GetsShowFolderFlags(show_folder_flags);
+ show_folder_flags = GetShowFolderFlags(show_folder_flags);
if (show)
SetBit(show_folder_flags, folder);
else
ClearBit(show_folder_flags, folder);
- strcpy(str, "");
-
// we save the ones that are NOT displayed, so we can add new ones
// and upgraders will see them
for (i=0; i<MAX_FOLDERS; i++)
@@ -756,28 +435,26 @@ void SetShowFolder(int folder,BOOL show)
if (TestBit(show_folder_flags, i) == FALSE)
{
if (num_saved != 0)
- strcat(str,", ");
+ str.append(",");
for (j=0; g_folderData[j].m_lpTitle; j++)
{
if (g_folderData[j].m_nFolderId == i)
{
- strcat(str,g_folderData[j].short_name);
+ str.append(g_folderData[j].short_name);
num_saved++;
break;
}
}
}
}
- std::string error_string;
- settings.set_value(MUIOPTION_HIDE_FOLDERS, str, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_HIDE_FOLDERS, str);
DeleteBits(show_folder_flags);
}
void SetShowStatusBar(BOOL val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SHOW_STATUS_BAR, val, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_SHOW_STATUS_BAR, val);
}
BOOL GetShowStatusBar(void)
@@ -787,8 +464,7 @@ BOOL GetShowStatusBar(void)
void SetShowTabCtrl (BOOL val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SHOW_TABS, val, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_SHOW_TABS, val);
}
BOOL GetShowTabCtrl (void)
@@ -798,8 +474,7 @@ BOOL GetShowTabCtrl (void)
void SetShowToolBar(BOOL val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SHOW_TOOLBAR, val, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_SHOW_TOOLBAR, val);
}
BOOL GetShowToolBar(void)
@@ -807,35 +482,39 @@ BOOL GetShowToolBar(void)
return settings.bool_value( MUIOPTION_SHOW_TOOLBAR);
}
-void SetCurrentTab(const char *shortname)
+void SetCurrentTab(int val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_CURRENT_TAB, shortname, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_CURRENT_TAB, val);
}
-const char *GetCurrentTab(void)
+int GetCurrentTab(void)
{
- return settings.value( MUIOPTION_CURRENT_TAB);
+ return settings.int_value(MUIOPTION_CURRENT_TAB);
}
-void SetDefaultGame(const char *name)
+// Need int here in case no games were in the list at exit
+void SetDefaultGame(uint32_t val)
{
- std::string error_string;
- settings.set_value(MUIOPTION_DEFAULT_GAME, name, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_DEFAULT_GAME, driver_list::driver(val).name);
}
-const char *GetDefaultGame(void)
+uint32_t GetDefaultGame(void)
{
- return settings.value( MUIOPTION_DEFAULT_GAME);
+ string t = settings.getter(MUIOPTION_DEFAULT_GAME);
+ if (t.empty())
+ return 0;
+ int val = driver_list::find(t.c_str());
+ if (val < 0)
+ val = 0;
+ return val;
}
void SetWindowArea(const AREA *area)
{
- std::string error_string;
- settings.set_value(MUIOPTION_WINDOW_X, area->x, OPTION_PRIORITY_CMDLINE,error_string);
- settings.set_value(MUIOPTION_WINDOW_Y, area->y, OPTION_PRIORITY_CMDLINE,error_string);
- settings.set_value(MUIOPTION_WINDOW_WIDTH, area->width, OPTION_PRIORITY_CMDLINE,error_string);
- settings.set_value(MUIOPTION_WINDOW_HEIGHT, area->height, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_WINDOW_X, area->x);
+ settings.setter(MUIOPTION_WINDOW_Y, area->y);
+ settings.setter(MUIOPTION_WINDOW_WIDTH, area->width);
+ settings.setter(MUIOPTION_WINDOW_HEIGHT, area->height);
}
void GetWindowArea(AREA *area)
@@ -848,8 +527,7 @@ void GetWindowArea(AREA *area)
void SetWindowState(UINT state)
{
- std::string error_string;
- settings.set_value(MUIOPTION_WINDOW_STATE, (int)state, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_WINDOW_STATE, (int)state);
}
UINT GetWindowState(void)
@@ -857,29 +535,35 @@ UINT GetWindowState(void)
return settings.int_value(MUIOPTION_WINDOW_STATE);
}
-void SetCustomColor(int iIndex, COLORREF uColor)
+void SetWindowPanes(int val)
{
- const char *custom_color_string;
- COLORREF custom_color[256];
- char buffer[80];
+ settings.setter(MUIOPTION_WINDOW_PANES, val & 15);
+}
- custom_color_string = settings.value( MUIOPTION_CUSTOM_COLOR);
- CusColorDecodeString(custom_color_string, custom_color);
+UINT GetWindowPanes(void)
+{
+ return settings.int_value(MUIOPTION_WINDOW_PANES) & 15;
+}
- custom_color[iIndex] = uColor;
+void SetCustomColor(int iIndex, COLORREF uColor)
+{
+ if ((iIndex < 0) || (iIndex > 15))
+ return;
- CusColorEncodeString(custom_color, buffer);
- std::string error_string;
- settings.set_value(MUIOPTION_CUSTOM_COLOR, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+ COLORREF custom_color[16];
+ CusColorDecodeString(settings.getter(MUIOPTION_CUSTOM_COLOR), custom_color);
+ custom_color[iIndex] = uColor;
+ settings.setter(MUIOPTION_CUSTOM_COLOR, CusColorEncodeString(custom_color));
}
COLORREF GetCustomColor(int iIndex)
{
- const char *custom_color_string;
- COLORREF custom_color[256];
+ if ((iIndex < 0) || (iIndex > 15))
+ return (COLORREF)RGB(0,0,0);
+
+ COLORREF custom_color[16];
- custom_color_string = settings.value( MUIOPTION_CUSTOM_COLOR);
- CusColorDecodeString(custom_color_string, custom_color);
+ CusColorDecodeString(settings.getter(MUIOPTION_CUSTOM_COLOR), custom_color);
if (custom_color[iIndex] == (COLORREF)-1)
return (COLORREF)RGB(0,0,0);
@@ -889,78 +573,63 @@ COLORREF GetCustomColor(int iIndex)
void SetListFont(const LOGFONT *font)
{
- char font_string[10000];
- FontEncodeString(font, font_string);
- std::string error_string;
- settings.set_value(MUIOPTION_LIST_FONT, font_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_LIST_FONT, FontEncodeString(font));
}
void GetListFont(LOGFONT *font)
{
- const char *font_string = settings.value( MUIOPTION_LIST_FONT);
- FontDecodeString(font_string, font);
+ FontDecodeString(settings.getter(MUIOPTION_LIST_FONT), font);
}
void SetListFontColor(COLORREF uColor)
{
- options_set_color_default(settings, MUIOPTION_TEXT_COLOR, uColor, COLOR_WINDOWTEXT);
+ options_set_color_default(MUIOPTION_TEXT_COLOR, uColor, COLOR_WINDOWTEXT);
}
COLORREF GetListFontColor(void)
{
- return options_get_color_default(settings, MUIOPTION_TEXT_COLOR, COLOR_WINDOWTEXT);
+ return options_get_color_default(MUIOPTION_TEXT_COLOR, COLOR_WINDOWTEXT);
}
void SetListCloneColor(COLORREF uColor)
{
- options_set_color_default(settings, MUIOPTION_CLONE_COLOR, uColor, COLOR_WINDOWTEXT);
+ options_set_color_default(MUIOPTION_CLONE_COLOR, uColor, COLOR_WINDOWTEXT);
}
COLORREF GetListCloneColor(void)
{
- return options_get_color_default(settings, MUIOPTION_CLONE_COLOR, COLOR_WINDOWTEXT);
+ return options_get_color_default(MUIOPTION_CLONE_COLOR, COLOR_WINDOWTEXT);
}
int GetShowTab(int tab)
{
- const char *show_tabs_string;
int show_tab_flags = 0;
-
- show_tabs_string = settings.value( MUIOPTION_HIDE_TABS);
- TabFlagsDecodeString(show_tabs_string, &show_tab_flags);
+ TabFlagsDecodeString(settings.getter(MUIOPTION_HIDE_TABS), &show_tab_flags);
return (show_tab_flags & (1 << tab)) != 0;
}
void SetShowTab(int tab,BOOL show)
{
- const char *show_tabs_string;
int show_tab_flags = 0;
- char buffer[10000];
-
- show_tabs_string = settings.value( MUIOPTION_HIDE_TABS);
- TabFlagsDecodeString(show_tabs_string, &show_tab_flags);
+ TabFlagsDecodeString(settings.getter(MUIOPTION_HIDE_TABS), &show_tab_flags);
if (show)
show_tab_flags |= 1 << tab;
else
show_tab_flags &= ~(1 << tab);
- TabFlagsEncodeString(show_tab_flags, buffer);
- std::string error_string;
- settings.set_value(MUIOPTION_HIDE_TABS, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_HIDE_TABS, TabFlagsEncodeString(show_tab_flags));
}
// don't delete the last one
BOOL AllowedToSetShowTab(int tab,BOOL show)
{
- const char *show_tabs_string;
int show_tab_flags = 0;
if (show == TRUE)
return TRUE;
- show_tabs_string = settings.value( MUIOPTION_HIDE_TABS);
- TabFlagsDecodeString(show_tabs_string, &show_tab_flags);
+ TabFlagsDecodeString(settings.getter(MUIOPTION_HIDE_TABS), &show_tab_flags);
show_tab_flags &= ~(1 << tab);
return show_tab_flags != 0;
@@ -973,56 +642,40 @@ int GetHistoryTab(void)
void SetHistoryTab(int tab, BOOL show)
{
- std::string error_string;
if (show)
- settings.set_value(MUIOPTION_HISTORY_TAB, tab, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_HISTORY_TAB, tab);
else
- settings.set_value(MUIOPTION_HISTORY_TAB, TAB_NONE, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_HISTORY_TAB, TAB_NONE);
}
void SetColumnWidths(int width[])
{
- char column_width_string[80];
- ColumnEncodeStringWithCount(width, column_width_string, COLUMN_MAX);
- std::string error_string;
- settings.set_value(MUIOPTION_COLUMN_WIDTHS, column_width_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_COLUMN_WIDTHS, ColumnEncodeStringWithCount(width, COLUMN_MAX));
}
void GetColumnWidths(int width[])
{
- const char *column_width_string;
- column_width_string = settings.value(MUIOPTION_COLUMN_WIDTHS);
- ColumnDecodeStringWithCount(column_width_string, width, COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MUIOPTION_COLUMN_WIDTHS), width, COLUMN_MAX);
}
void SetSplitterPos(int splitterId, int pos)
{
- const char *splitter_string;
int *splitter;
- char buffer[80];
if (splitterId < GetSplitterCount())
{
- splitter_string = settings.value(MUIOPTION_SPLITTERS);
splitter = (int *) alloca(GetSplitterCount() * sizeof(*splitter));
- SplitterDecodeString(splitter_string, splitter);
-
+ SplitterDecodeString(settings.getter(MUIOPTION_SPLITTERS), splitter);
splitter[splitterId] = pos;
-
- SplitterEncodeString(splitter, buffer);
- std::string error_string;
- settings.set_value(MUIOPTION_SPLITTERS, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_SPLITTERS, SplitterEncodeString(splitter));
}
}
-int GetSplitterPos(int splitterId)
+int GetSplitterPos(int splitterId)
{
- const char *splitter_string;
int *splitter;
-
- splitter_string = settings.value( MUIOPTION_SPLITTERS);
splitter = (int *) alloca(GetSplitterCount() * sizeof(*splitter));
- SplitterDecodeString(splitter_string, splitter);
+ SplitterDecodeString(settings.getter(MUIOPTION_SPLITTERS), splitter);
if (splitterId < GetSplitterCount())
return splitter[splitterId];
@@ -1032,38 +685,27 @@ int GetSplitterPos(int splitterId)
void SetColumnOrder(int order[])
{
- char column_order_string[80];
- ColumnEncodeStringWithCount(order, column_order_string, COLUMN_MAX);
- std::string error_string;
- settings.set_value(MUIOPTION_COLUMN_ORDER, column_order_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_COLUMN_ORDER, ColumnEncodeStringWithCount(order, COLUMN_MAX));
}
void GetColumnOrder(int order[])
{
- const char *column_order_string;
- column_order_string = settings.value( MUIOPTION_COLUMN_ORDER);
- ColumnDecodeStringWithCount(column_order_string, order, COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MUIOPTION_COLUMN_ORDER), order, COLUMN_MAX);
}
void SetColumnShown(int shown[])
{
- char column_shown_string[80];
- ColumnEncodeStringWithCount(shown, column_shown_string, COLUMN_MAX);
- std::string error_string;
- settings.set_value(MUIOPTION_COLUMN_SHOWN, column_shown_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_COLUMN_SHOWN, ColumnEncodeStringWithCount(shown, COLUMN_MAX));
}
void GetColumnShown(int shown[])
{
- const char *column_shown_string;
- column_shown_string = settings.value( MUIOPTION_COLUMN_SHOWN);
- ColumnDecodeStringWithCount(column_shown_string, shown, COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MUIOPTION_COLUMN_SHOWN), shown, COLUMN_MAX);
}
void SetSortColumn(int column)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SORT_COLUMN, column, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_SORT_COLUMN, column);
}
int GetSortColumn(void)
@@ -1073,8 +715,7 @@ int GetSortColumn(void)
void SetSortReverse(BOOL reverse)
{
- std::string error_string;
- settings.set_value(MUIOPTION_SORT_REVERSED, reverse, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_SORT_REVERSED, reverse);
}
BOOL GetSortReverse(void)
@@ -1082,6 +723,81 @@ BOOL GetSortReverse(void)
return settings.bool_value( MUIOPTION_SORT_REVERSED);
}
+const string GetIconsDir(void)
+{
+ string t = settings.getter(MUIOPTION_ICONS_DIRECTORY);
+ if (t.empty())
+ return "icons";
+ else
+ return settings.getter(MUIOPTION_ICONS_DIRECTORY);
+}
+
+void SetIconsDir(const char* path)
+{
+ settings.setter(MUIOPTION_ICONS_DIRECTORY, path);
+}
+
+const string GetBgDir (void)
+{
+ string t = settings.getter(MUIOPTION_BACKGROUND_DIRECTORY);
+ if (t.empty())
+ return "bkground\\bkground.png";
+ else
+ return settings.getter(MUIOPTION_BACKGROUND_DIRECTORY);
+}
+
+void SetBgDir (const char* path)
+{
+ settings.setter(MUIOPTION_BACKGROUND_DIRECTORY, path);
+}
+
+const string GetDatsDir(void)
+{
+ string t = settings.getter(MUIOPTION_DATS_DIRECTORY);
+ if (t.empty())
+ return "dats";
+ else
+ return settings.getter(MUIOPTION_DATS_DIRECTORY);
+ //return mewui.value(OPTION_HISTORY_PATH);
+}
+
+void SetDatsDir(const char *path)
+{
+ char t1[strlen(path)+1];
+ strcpy(t1, path);
+ settings.setter(MUIOPTION_DATS_DIRECTORY, path);
+ mewui.set_value(OPTION_HISTORY_PATH, t1, OPTION_PRIORITY_CMDLINE);
+}
+
+const string GetVideoDir(void)
+{
+ string t = settings.getter(MUIOPTION_VIDEO_DIRECTORY);
+ if (t.empty())
+ return "video";
+ else
+ return settings.getter(MUIOPTION_VIDEO_DIRECTORY);
+}
+
+void SetVideoDir(const char *path)
+{
+ settings.setter(MUIOPTION_VIDEO_DIRECTORY, path);
+}
+
+const string GetManualsDir(void)
+{
+ string t = settings.getter(MUIOPTION_MANUALS_DIRECTORY);
+ if (t.empty())
+ return "manuals";
+ else
+ return settings.getter(MUIOPTION_MANUALS_DIRECTORY);
+}
+
+void SetManualsDir(const char *path)
+{
+ settings.setter(MUIOPTION_MANUALS_DIRECTORY, path);
+}
+
+// ***************************************************************** MAME.INI settings **************************************************************************
const char* GetLanguageUI(void)
{
return global.value(OPTION_LANGUAGE);
@@ -1097,662 +813,813 @@ const char* GetPlugins(void)
return global.value(OPTION_PLUGIN);
}
-const char* GetRomDirs(void)
+const string GetRomDirs(void)
{
- return global.media_path();
+ const char* t = global.value(OPTION_MEDIAPATH);
+ if (t)
+ return string(global.value(OPTION_MEDIAPATH));
+ else
+ return "roms";
}
void SetRomDirs(const char* paths)
{
- std::string error_string;
- global.set_value(OPTION_MEDIAPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_MEDIAPATH, paths, OPTION_PRIORITY_CMDLINE);
}
-const char* GetHashDirs(void)
+const string GetHashDirs(void)
{
- return global.hash_path();
+ const char* t = global.value(OPTION_HASHPATH);
+ if (t)
+ return string(global.value(OPTION_HASHPATH));
+ else
+ return "hash";
}
void SetHashDirs(const char* paths)
{
- std::string error_string;
- global.set_value(OPTION_HASHPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_HASHPATH, paths, OPTION_PRIORITY_CMDLINE);
}
-const char* GetSampleDirs(void)
+const string GetSampleDirs(void)
{
- return global.value(OPTION_SAMPLEPATH);
+ const char* t = global.value(OPTION_SAMPLEPATH);
+ if (t)
+ return string(global.value(OPTION_SAMPLEPATH));
+ else
+ return "samples";
}
void SetSampleDirs(const char* paths)
{
- std::string error_string;
- global.set_value(OPTION_SAMPLEPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_SAMPLEPATH, paths, OPTION_PRIORITY_CMDLINE);
}
const char * GetIniDir(void)
{
const char *ini_dir;
- const char *s;
-
- ini_dir = global.value(OPTION_INIPATH);
- while((s = strchr(ini_dir, ';')) != NULL)
- ini_dir = s + 1;
-
- //ini_dir = "ini\0";
+// const char *s;
+
+// ini_dir = global.value(OPTION_INIPATH);
+// while((s = strchr(ini_dir, ';')) != NULL)
+// {
+// ini_dir = s + 1;
+// }
+ ini_dir = "ini\0";
return ini_dir;
}
void SetIniDir(const char *path)
{
- std::string error_string;
- global.set_value(OPTION_INIPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_INIPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetCtrlrDir(void)
+const string GetCtrlrDir(void)
{
- return global.value(OPTION_CTRLRPATH);
+ const char* t = global.value(OPTION_CTRLRPATH);
+ if (t)
+ return string(global.value(OPTION_CTRLRPATH));
+ else
+ return "ctrlr";
}
void SetCtrlrDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_CTRLRPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_CTRLRPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetSWDir(void)
+const string GetSWDir(void)
{
- return global.value(OPTION_SWPATH);
+ const char* t = global.value(OPTION_SWPATH);
+ if (t)
+ return string(global.value(OPTION_SWPATH));
+ else
+ return "";
}
void SetSWDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_SWPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_SWPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetCfgDir(void)
+const string GetCfgDir(void)
{
- return global.value(OPTION_CFG_DIRECTORY);
+ const char* t = global.value(OPTION_CFG_DIRECTORY);
+ if (t)
+ return string(global.value(OPTION_CFG_DIRECTORY));
+ else
+ return "cfg";
}
void SetCfgDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_CFG_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_CFG_DIRECTORY, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetNvramDir(void)
+const string GetNvramDir(void)
{
- return global.value(OPTION_NVRAM_DIRECTORY);
+ const char* t = global.value(OPTION_NVRAM_DIRECTORY);
+ if (t)
+ return string(global.value(OPTION_NVRAM_DIRECTORY));
+ else
+ return "nvram";
}
void SetNvramDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_NVRAM_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_NVRAM_DIRECTORY, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetInpDir(void)
+const string GetInpDir(void)
{
- return global.value(OPTION_INPUT_DIRECTORY);
+ const char* t = global.value(OPTION_INPUT_DIRECTORY);
+ if (t)
+ return string(global.value(OPTION_INPUT_DIRECTORY));
+ else
+ return "inp";
}
void SetInpDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_INPUT_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_INPUT_DIRECTORY, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetImgDir(void)
+const string GetImgDir(void)
{
- return global.value(OPTION_SNAPSHOT_DIRECTORY);
+ const char* t = global.value(OPTION_SNAPSHOT_DIRECTORY);
+ if (t)
+ return string(global.value(OPTION_SNAPSHOT_DIRECTORY));
+ else
+ return "snap";
}
void SetImgDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_SNAPSHOT_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_SNAPSHOT_DIRECTORY, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetStateDir(void)
+const string GetStateDir(void)
{
- return global.value(OPTION_STATE_DIRECTORY);
+ const char* t = global.value(OPTION_STATE_DIRECTORY);
+ if (t)
+ return string(global.value(OPTION_STATE_DIRECTORY));
+ else
+ return "sta";
}
void SetStateDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_STATE_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_STATE_DIRECTORY, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetArtDir(void)
+const string GetArtDir(void)
{
- return global.value(OPTION_ARTPATH);
+ const char* t = global.value(OPTION_ARTPATH);
+ if (t)
+ return string(global.value(OPTION_ARTPATH));
+ else
+ return "artwork";
}
void SetArtDir(const char* path)
{
- std::string error_string;
- global.set_value(OPTION_ARTPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_ARTPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetFontDir(void)
+const string GetFontDir(void)
{
- return global.value(OPTION_FONTPATH);
+ const char* t = global.value(OPTION_FONTPATH);
+ if (t)
+ return string(global.value(OPTION_FONTPATH));
+ else
+ return ".";
}
void SetFontDir(const char* paths)
{
- std::string error_string;
- global.set_value(OPTION_FONTPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_FONTPATH, paths, OPTION_PRIORITY_CMDLINE);
}
-const char* GetCrosshairDir(void)
+const string GetCrosshairDir(void)
{
- return global.value(OPTION_CROSSHAIRPATH);
+ const char* t = global.value(OPTION_CROSSHAIRPATH);
+ if (t)
+ return string(global.value(OPTION_CROSSHAIRPATH));
+ else
+ return "crosshair";
}
void SetCrosshairDir(const char* paths)
{
- std::string error_string;
- global.set_value(OPTION_CROSSHAIRPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_CROSSHAIRPATH, paths, OPTION_PRIORITY_CMDLINE);
}
-const char* GetFlyerDir(void)
+const string GetPluginsDir(void)
{
- return mewui.value(OPTION_FLYERS_PATH);
+ const char* t = global.value(OPTION_PLUGINSPATH);
+ if (t)
+ return string(global.value(OPTION_PLUGINSPATH));
+ else
+ return "plugins";
}
-void SetFlyerDir(const char* path)
+void SetPluginsDir(const char* path)
{
- std::string error_string;
- mewui.set_value(OPTION_FLYERS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_PLUGINSPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetCabinetDir(void)
+const string GetLangDir(void)
{
- return mewui.value(OPTION_CABINETS_PATH);
+ const char* t = global.value(OPTION_LANGUAGEPATH);
+ if (t)
+ return string(global.value(OPTION_LANGUAGEPATH));
+ else
+ return "language";
}
-void SetCabinetDir(const char* path)
+void SetLangDir(const char* path)
{
- std::string error_string;
- mewui.set_value(OPTION_CABINETS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_LANGUAGEPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetMarqueeDir(void)
+const string GetDiffDir(void)
{
- return mewui.value(OPTION_MARQUEES_PATH);
+ const char* t = global.value(OPTION_DIFF_DIRECTORY);
+ if (t)
+ return string(global.value(OPTION_DIFF_DIRECTORY));
+ else
+ return "diff";
}
-void SetMarqueeDir(const char* path)
+void SetDiffDir(const char* path)
{
- std::string error_string;
- mewui.set_value(OPTION_MARQUEES_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_DIFF_DIRECTORY, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetTitlesDir(void)
+const string GetCheatDir(void)
{
- return mewui.value(OPTION_TITLES_PATH);
+ const char* t = global.value(OPTION_CHEATPATH);
+ if (t)
+ return string(global.value(OPTION_CHEATPATH));
+ else
+ return "cheat";
}
-void SetTitlesDir(const char* path)
+void SetCheatDir(const char* path)
{
- std::string error_string;
- mewui.set_value(OPTION_TITLES_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_CHEATPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char * GetControlPanelDir(void)
+const string GetHLSLDir(void)
{
- return mewui.value(OPTION_CPANELS_PATH);
+ const char* t = global.value(WINOPTION_HLSLPATH);
+ if (t)
+ return string(global.value(WINOPTION_HLSLPATH));
+ else
+ return "hlsl";
}
-void SetControlPanelDir(const char *path)
+void SetHLSLDir(const char* path)
{
- std::string error_string;
- mewui.set_value(OPTION_CPANELS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(WINOPTION_HLSLPATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char * GetPcbDir(void)
+const char* GetSnapName(void)
{
- return mewui.value(OPTION_PCBS_PATH);
+ return global.value(OPTION_SNAPNAME);
}
-void SetPcbDir(const char *path)
+void SetSnapName(const char* pattern)
{
- std::string error_string;
- mewui.set_value(OPTION_PCBS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ global.set_value(OPTION_SNAPNAME, pattern, OPTION_PRIORITY_CMDLINE);
}
-const char* GetPluginsDir(void)
+// ***************************************************************** UI.INI settings **************************************************************************
+const string GetScoresDir(void)
{
- return global.value(OPTION_PLUGINSPATH);
+ const char* t = mewui.value(OPTION_SCORES_PATH);
+ if (t)
+ return string(mewui.value(OPTION_SCORES_PATH));
+ else
+ return "scores";
}
-void SetPluginsDir(const char* path)
+void SetScoresDir(const char *path)
{
- std::string error_string;
- global.set_value(OPTION_PLUGINSPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_SCORES_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetLangDir(void)
+const string GetBossesDir(void)
{
- return global.value(OPTION_LANGUAGEPATH);
+ const char* t = mewui.value(OPTION_BOSSES_PATH);
+ if (t)
+ return string(mewui.value(OPTION_BOSSES_PATH));
+ else
+ return "bosses";
}
-void SetLangDir(const char* path)
+void SetBossesDir(const char *path)
{
- std::string error_string;
- global.set_value(OPTION_LANGUAGEPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_BOSSES_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char * GetDiffDir(void)
+const string GetCoversDir(void)
{
- return global.value(OPTION_DIFF_DIRECTORY);
+ const char* t = mewui.value(OPTION_COVER_PATH);
+ if (t)
+ return string(mewui.value(OPTION_COVER_PATH));
+ else
+ return "covers";
}
-void SetDiffDir(const char* path)
+void SetCoversDir(const char *path)
{
- std::string error_string;
- global.set_value(OPTION_DIFF_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_COVER_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetIconsDir(void)
+const string GetVersusDir(void)
{
- return settings.value( MUIOPTION_ICONS_DIRECTORY);
+ const char* t = mewui.value(OPTION_VERSUS_PATH);
+ if (t)
+ return string(mewui.value(OPTION_VERSUS_PATH));
+ else
+ return "versus";
}
-void SetIconsDir(const char* path)
+void SetVersusDir(const char *path)
{
- std::string error_string;
- settings.set_value(MUIOPTION_ICONS_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_VERSUS_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetBgDir (void)
+const string GetEndsDir(void)
{
- return settings.value( MUIOPTION_BACKGROUND_DIRECTORY);
+ const char* t = mewui.value(OPTION_ENDS_PATH);
+ if (t)
+ return string(mewui.value(OPTION_ENDS_PATH));
+ else
+ return "ends";
}
-void SetBgDir (const char* path)
+void SetEndsDir(const char *path)
{
- std::string error_string;
- settings.set_value(MUIOPTION_BACKGROUND_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_ENDS_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char * GetDatsDir(void)
+const string GetGameOverDir(void)
{
- const char* t = settings.value( MUIOPTION_DATS_DIRECTORY);
- const char* t1 = strtok((char*)t, ";");
- if (t1)
- return t1;
+ const char* t = mewui.value(OPTION_GAMEOVER_PATH);
+ if (t)
+ return string(mewui.value(OPTION_GAMEOVER_PATH));
else
- return t;
- //return settings.value( MUIOPTION_DATS_DIRECTORY);
- //return mewui.value(OPTION_HISTORY_PATH);
+ return "gameover";
}
-void SetDatsDir(const char *path)
+void SetGameOverDir(const char *path)
{
- std::string error_string;
- settings.set_value(MUIOPTION_DATS_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
- //mewui.set_value(OPTION_HISTORY_PATH, path, OPTION_PRIORITY_CMDLINE, error_string);
+ mewui.set_value(OPTION_GAMEOVER_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetFolderDir(void)
+const string GetHowToDir(void)
{
- return mewui.value(OPTION_EXTRAINI_PATH);
+ const char* t = mewui.value(OPTION_HOWTO_PATH);
+ if (t)
+ return string(mewui.value(OPTION_HOWTO_PATH));
+ else
+ return "howto";
}
-void SetFolderDir(const char* path)
+void SetHowToDir(const char *path)
{
- std::string error_string;
- mewui.set_value(OPTION_EXTRAINI_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_HOWTO_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetCheatDir(void)
+const string GetSelectDir(void)
{
- return global.value(OPTION_CHEATPATH);
+ const char* t = mewui.value(OPTION_SELECT_PATH);
+ if (t)
+ return string(mewui.value(OPTION_SELECT_PATH));
+ else
+ return "select";
}
-void SetCheatDir(const char* path)
+void SetSelectDir(const char *path)
{
- std::string error_string;
- global.set_value(OPTION_CHEATPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_SELECT_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-const char* GetSnapName(void)
+const string GetLogoDir(void)
{
- return global.value(OPTION_SNAPNAME);
+ const char* t = mewui.value(OPTION_LOGOS_PATH);
+ if (t)
+ return string(mewui.value(OPTION_LOGOS_PATH));
+ else
+ return "logo";
}
-void SetSnapName(const char* pattern)
+void SetLogoDir(const char *path)
{
- std::string error_string;
- global.set_value(OPTION_SNAPNAME, pattern, OPTION_PRIORITY_CMDLINE,error_string);
+ mewui.set_value(OPTION_LOGOS_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-void ResetGameOptions(int driver_index)
+const string GetArtworkDir(void)
{
- assert(0 <= driver_index && driver_index < driver_list::total());
+ const char* t = mewui.value(OPTION_ARTPREV_PATH);
+ if (t)
+ return string(mewui.value(OPTION_ARTPREV_PATH));
+ else
+ return "artpreview";
+}
- //save_options(NULL, OPTIONS_GAME, driver_index);
+void SetArtworkDir(const char *path)
+{
+ mewui.set_value(OPTION_ARTPREV_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-void ResetGameDefaults(void)
+const string GetFlyerDir(void)
{
- // Walk the global settings and reset everything to defaults;
- ResetToDefaults(global, OPTION_PRIORITY_CMDLINE);
- save_options(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS);
+ const char* t = mewui.value(OPTION_FLYERS_PATH);
+ if (t)
+ return string(mewui.value(OPTION_FLYERS_PATH));
+ else
+ return "flyers";
}
-/*
- * Reset all game, vector and source options to defaults.
- * No reason to reboot if this is done.
- */
-void ResetAllGameOptions(void)
+void SetFlyerDir(const char* path)
{
- for (int i = 0; i < driver_list::total(); i++)
- ResetGameOptions(i);
+ mewui.set_value(OPTION_FLYERS_PATH, path, OPTION_PRIORITY_CMDLINE);
+}
+
+const string GetCabinetDir(void)
+{
+ const char* t = mewui.value(OPTION_CABINETS_PATH);
+ if (t)
+ return string(mewui.value(OPTION_CABINETS_PATH));
+ else
+ return "cabinets";
+}
+
+void SetCabinetDir(const char* path)
+{
+ mewui.set_value(OPTION_CABINETS_PATH, path, OPTION_PRIORITY_CMDLINE);
+}
+
+const string GetMarqueeDir(void)
+{
+ const char* t = mewui.value(OPTION_MARQUEES_PATH);
+ if (t)
+ return string(mewui.value(OPTION_MARQUEES_PATH));
+ else
+ return "marquees";
+}
+
+void SetMarqueeDir(const char* path)
+{
+ mewui.set_value(OPTION_MARQUEES_PATH, path, OPTION_PRIORITY_CMDLINE);
+}
+
+const string GetTitlesDir(void)
+{
+ const char* t = mewui.value(OPTION_TITLES_PATH);
+ if (t)
+ return string(mewui.value(OPTION_TITLES_PATH));
+ else
+ return "titles";
+}
+
+void SetTitlesDir(const char* path)
+{
+ mewui.set_value(OPTION_TITLES_PATH, path, OPTION_PRIORITY_CMDLINE);
+}
+
+const string GetControlPanelDir(void)
+{
+ const char* t = mewui.value(OPTION_CPANELS_PATH);
+ if (t)
+ return string(mewui.value(OPTION_CPANELS_PATH));
+ else
+ return "cpanel";
+}
+
+void SetControlPanelDir(const char *path)
+{
+ mewui.set_value(OPTION_CPANELS_PATH, path, OPTION_PRIORITY_CMDLINE);
+}
+
+const string GetPcbDir(void)
+{
+ const char* t = mewui.value(OPTION_PCBS_PATH);
+ if (t)
+ return string(mewui.value(OPTION_PCBS_PATH));
+ else
+ return "pcb";
+}
+
+void SetPcbDir(const char *path)
+{
+ mewui.set_value(OPTION_PCBS_PATH, path, OPTION_PRIORITY_CMDLINE);
}
-int GetRomAuditResults(int driver_index)
+const string GetFolderDir(void)
+{
+ const char* t = mewui.value(OPTION_CATEGORYINI_PATH);
+ if (t)
+ return string(mewui.value(OPTION_CATEGORYINI_PATH));
+ else
+ return "folders";
+}
+
+void SetFolderDir(const char* path)
+{
+ mewui.set_value(OPTION_CATEGORYINI_PATH, path, OPTION_PRIORITY_CMDLINE);
+}
+
+// ***************************************************************** MAME_g.INI settings **************************************************************************
+int GetRomAuditResults(uint32_t driver_index)
{
return game_opts.rom(driver_index);
}
-void SetRomAuditResults(int driver_index, int audit_results)
+void SetRomAuditResults(uint32_t driver_index, int audit_results)
{
game_opts.rom(driver_index, audit_results);
}
-int GetSampleAuditResults(int driver_index)
+int GetSampleAuditResults(uint32_t driver_index)
{
return game_opts.sample(driver_index);
}
-void SetSampleAuditResults(int driver_index, int audit_results)
+void SetSampleAuditResults(uint32_t driver_index, int audit_results)
{
game_opts.sample(driver_index, audit_results);
}
-static void IncrementPlayVariable(int driver_index, const char *play_variable, int increment)
+static void IncrementPlayVariable(uint32_t driver_index, const char *play_variable, uint32_t increment)
{
- int count = 0;
-
if (strcmp(play_variable, "count") == 0)
- {
- count = game_opts.play_count(driver_index);
- game_opts.play_count(driver_index, count + increment);
- }
- else if (strcmp(play_variable, "time") == 0)
- {
- count = game_opts.play_time(driver_index);
- game_opts.play_time(driver_index, count + increment);
- }
+ game_opts.play_count(driver_index, game_opts.play_count(driver_index) + increment);
+ else
+ if (strcmp(play_variable, "time") == 0)
+ game_opts.play_time(driver_index, game_opts.play_time(driver_index) + increment);
}
-void IncrementPlayCount(int driver_index)
+void IncrementPlayCount(uint32_t driver_index)
{
IncrementPlayVariable(driver_index, "count", 1);
}
-int GetPlayCount(int driver_index)
+uint32_t GetPlayCount(uint32_t driver_index)
{
return game_opts.play_count(driver_index);
}
+// int needed here so we can reset all games
static void ResetPlayVariable(int driver_index, const char *play_variable)
{
if (driver_index < 0)
- {
/* all games */
- for (int i = 0; i< driver_list::total(); i++)
- {
+ for (uint32_t i = 0; i < driver_list::total(); i++)
ResetPlayVariable(i, play_variable);
- }
- }
else
{
if (strcmp(play_variable, "count") == 0)
game_opts.play_count(driver_index, 0);
- else if (strcmp(play_variable, "time") == 0)
+ else
+ if (strcmp(play_variable, "time") == 0)
game_opts.play_time(driver_index, 0);
}
}
+// int needed here so we can reset all games
void ResetPlayCount(int driver_index)
{
ResetPlayVariable(driver_index, "count");
}
+// int needed here so we can reset all games
void ResetPlayTime(int driver_index)
{
ResetPlayVariable(driver_index, "time");
}
-int GetPlayTime(int driver_index)
+uint32_t GetPlayTime(uint32_t driver_index)
{
return game_opts.play_time(driver_index);
}
-void IncrementPlayTime(int driver_index,int playtime)
+void IncrementPlayTime(uint32_t driver_index, uint32_t playtime)
{
IncrementPlayVariable(driver_index, "time", playtime);
}
-void GetTextPlayTime(int driver_index, char *buf)
+void GetTextPlayTime(uint32_t driver_index, char *buf)
{
- assert(0 <= driver_index && driver_index < driver_list::total());
- int temp = GetPlayTime(driver_index);
- int hour = temp / 3600;
- temp = temp - 3600*hour;
- int minute = temp / 60; //Calc Minutes
- int second = temp - 60*minute;
-
- if (hour == 0)
- sprintf(buf, "%d:%02d", minute, second );
- else
- sprintf(buf, "%d:%02d:%02d", hour, minute, second );
+ if (driver_index < driver_list::total())
+ {
+ uint32_t second = GetPlayTime(driver_index);
+ uint32_t hour = second / 3600;
+ second -= 3600*hour;
+ uint8_t minute = second / 60; //Calc Minutes
+ second -= 60*minute;
+
+ if (hour == 0)
+ sprintf(buf, "%d:%02d", minute, second );
+ else
+ sprintf(buf, "%d:%02d:%02d", hour, minute, second );
+ }
}
input_seq* Get_ui_key_up(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_UP);
+ return options_get_input_seq(MUIOPTION_UI_KEY_UP);
}
input_seq* Get_ui_key_down(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_DOWN);
+ return options_get_input_seq(MUIOPTION_UI_KEY_DOWN);
}
input_seq* Get_ui_key_left(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_LEFT);
+ return options_get_input_seq(MUIOPTION_UI_KEY_LEFT);
}
input_seq* Get_ui_key_right(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_RIGHT);
+ return options_get_input_seq(MUIOPTION_UI_KEY_RIGHT);
}
input_seq* Get_ui_key_start(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_START);
+ return options_get_input_seq(MUIOPTION_UI_KEY_START);
}
input_seq* Get_ui_key_pgup(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_PGUP);
+ return options_get_input_seq(MUIOPTION_UI_KEY_PGUP);
}
input_seq* Get_ui_key_pgdwn(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_PGDWN);
+ return options_get_input_seq(MUIOPTION_UI_KEY_PGDWN);
}
input_seq* Get_ui_key_home(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_HOME);
+ return options_get_input_seq(MUIOPTION_UI_KEY_HOME);
}
input_seq* Get_ui_key_end(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_END);
+ return options_get_input_seq(MUIOPTION_UI_KEY_END);
}
input_seq* Get_ui_key_ss_change(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_SS_CHANGE);
+ return options_get_input_seq(MUIOPTION_UI_KEY_SS_CHANGE);
}
input_seq* Get_ui_key_history_up(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_HISTORY_UP);
+ return options_get_input_seq(MUIOPTION_UI_KEY_HISTORY_UP);
}
input_seq* Get_ui_key_history_down(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_HISTORY_DOWN);
+ return options_get_input_seq(MUIOPTION_UI_KEY_HISTORY_DOWN);
}
input_seq* Get_ui_key_context_filters(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_CONTEXT_FILTERS);
+ return options_get_input_seq(MUIOPTION_UI_KEY_CONTEXT_FILTERS);
}
input_seq* Get_ui_key_select_random(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_SELECT_RANDOM);
+ return options_get_input_seq(MUIOPTION_UI_KEY_SELECT_RANDOM);
}
input_seq* Get_ui_key_game_audit(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_GAME_AUDIT);
+ return options_get_input_seq(MUIOPTION_UI_KEY_GAME_AUDIT);
}
input_seq* Get_ui_key_game_properties(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_GAME_PROPERTIES);
+ return options_get_input_seq(MUIOPTION_UI_KEY_GAME_PROPERTIES);
}
input_seq* Get_ui_key_help_contents(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_HELP_CONTENTS);
+ return options_get_input_seq(MUIOPTION_UI_KEY_HELP_CONTENTS);
}
input_seq* Get_ui_key_update_gamelist(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_UPDATE_GAMELIST);
+ return options_get_input_seq(MUIOPTION_UI_KEY_UPDATE_GAMELIST);
}
input_seq* Get_ui_key_view_folders(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_FOLDERS);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_FOLDERS);
}
input_seq* Get_ui_key_view_fullscreen(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_FULLSCREEN);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_FULLSCREEN);
}
input_seq* Get_ui_key_view_pagetab(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_PAGETAB);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_PAGETAB);
}
input_seq* Get_ui_key_view_picture_area(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_PICTURE_AREA);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_PICTURE_AREA);
}
input_seq* Get_ui_key_view_software_area(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA);
}
input_seq* Get_ui_key_view_status(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_STATUS);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_STATUS);
}
input_seq* Get_ui_key_view_toolbars(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TOOLBARS);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TOOLBARS);
}
input_seq* Get_ui_key_view_tab_cabinet(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_CABINET);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_CABINET);
}
input_seq* Get_ui_key_view_tab_cpanel(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_CPANEL);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_CPANEL);
}
input_seq* Get_ui_key_view_tab_flyer(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_FLYER);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_FLYER);
}
input_seq* Get_ui_key_view_tab_history(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_HISTORY);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_HISTORY);
}
input_seq* Get_ui_key_view_tab_marquee(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE);
}
input_seq* Get_ui_key_view_tab_screenshot(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT);
}
input_seq* Get_ui_key_view_tab_title(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_TITLE);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_TITLE);
}
input_seq* Get_ui_key_view_tab_pcb(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_PCB);
+ return options_get_input_seq(MUIOPTION_UI_KEY_VIEW_TAB_PCB);
}
input_seq* Get_ui_key_quit(void)
{
- return options_get_input_seq(settings, MUIOPTION_UI_KEY_QUIT);
+ return options_get_input_seq(MUIOPTION_UI_KEY_QUIT);
}
static int GetUIJoy(const char *option_name, int joycodeIndex)
{
- const char *joycodes_string;
int joycodes[4];
- assert(0 <= joycodeIndex && joycodeIndex < 4);
- joycodes_string = settings.value( option_name);
- ColumnDecodeStringWithCount(joycodes_string, joycodes, ARRAY_LENGTH(joycodes));
+ if ((joycodeIndex < 0) || (joycodeIndex > 3))
+ joycodeIndex = 0;
+ ColumnDecodeStringWithCount(settings.getter(option_name), joycodes, ARRAY_LENGTH(joycodes));
return joycodes[joycodeIndex];
}
static void SetUIJoy(const char *option_name, int joycodeIndex, int val)
{
- const char *joycodes_string;
int joycodes[4];
- char buffer[1024];
-
- assert(0 <= joycodeIndex && joycodeIndex < 4);
- joycodes_string = settings.value( option_name);
- ColumnDecodeStringWithCount(joycodes_string, joycodes, ARRAY_LENGTH(joycodes));
+ if ((joycodeIndex < 0) || (joycodeIndex > 3))
+ joycodeIndex = 0;
+ ColumnDecodeStringWithCount(settings.getter(option_name), joycodes, ARRAY_LENGTH(joycodes));
joycodes[joycodeIndex] = val;
- ColumnEncodeStringWithCount(joycodes, buffer, ARRAY_LENGTH(joycodes));
- std::string error_string;
- settings.set_value(option_name, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(option_name, ColumnEncodeStringWithCount(joycodes, ARRAY_LENGTH(joycodes)));
}
int GetUIJoyUp(int joycodeIndex)
@@ -1875,6 +1742,7 @@ void SetUIJoyHistoryDown(int joycodeIndex, int val)
SetUIJoy(MUIOPTION_UI_JOY_HISTORY_DOWN, joycodeIndex, val);
}
+// exec functions start: these are unsupported
void SetUIJoyExec(int joycodeIndex, int val)
{
SetUIJoy(MUIOPTION_UI_JOY_EXEC, joycodeIndex, val);
@@ -1885,15 +1753,15 @@ int GetUIJoyExec(int joycodeIndex)
return GetUIJoy(MUIOPTION_UI_JOY_EXEC, joycodeIndex);
}
-const char * GetExecCommand(void)
+const string GetExecCommand(void)
{
- return settings.value( MUIOPTION_EXEC_COMMAND);
+ return settings.getter(MUIOPTION_EXEC_COMMAND);
}
+// not used
void SetExecCommand(char *cmd)
{
- std::string error_string;
- settings.set_value(MUIOPTION_EXEC_COMMAND, cmd, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_EXEC_COMMAND, cmd);
}
int GetExecWait(void)
@@ -1903,19 +1771,18 @@ int GetExecWait(void)
void SetExecWait(int wait)
{
- std::string error_string;
- settings.set_value(MUIOPTION_EXEC_WAIT, wait, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_EXEC_WAIT, wait);
}
+// exec functions end
BOOL GetHideMouseOnStartup(void)
{
- return settings.bool_value( MUIOPTION_HIDE_MOUSE);
+ return settings.bool_value(MUIOPTION_HIDE_MOUSE);
}
void SetHideMouseOnStartup(BOOL hide)
{
- std::string error_string;
- settings.set_value(MUIOPTION_HIDE_MOUSE, hide, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_HIDE_MOUSE, hide);
}
BOOL GetRunFullScreen(void)
@@ -1925,31 +1792,26 @@ BOOL GetRunFullScreen(void)
void SetRunFullScreen(BOOL fullScreen)
{
- std::string error_string;
- settings.set_value(MUIOPTION_FULL_SCREEN, fullScreen, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MUIOPTION_FULL_SCREEN, fullScreen);
}
/***************************************************************************
Internal functions
***************************************************************************/
-static void CusColorEncodeString(const COLORREF *value, char* str)
+static string CusColorEncodeString(const COLORREF *value)
{
- char tmpStr[256];
-
- sprintf(tmpStr, "%u", (int) value[0]);
-
- strcpy(str, tmpStr);
+ string str = std::to_string(value[0]);
for (int i = 1; i < 16; i++)
- {
- sprintf(tmpStr, ",%u", (unsigned) value[i]);
- strcat(str, tmpStr);
- }
+ str.append(",").append(std::to_string(value[i]));
+
+ return str;
}
-static void CusColorDecodeString(const char* str, COLORREF *value)
+static void CusColorDecodeString(string ss, COLORREF *value)
{
+ const char *str = ss.c_str();
char *s, *p;
char tmpStr[256];
@@ -1970,23 +1832,19 @@ static void CusColorDecodeString(const char* str, COLORREF *value)
}
-void ColumnEncodeStringWithCount(const int *value, char *str, int count)
+static string ColumnEncodeStringWithCount(const int *value, int count)
{
- char buffer[256];
-
- snprintf(buffer,sizeof(buffer),"%d",value[0]);
-
- strcpy(str,buffer);
+ string str = std::to_string(value[0]);
for (int i = 1; i < count; i++)
- {
- snprintf(buffer,sizeof(buffer),",%d",value[i]);
- strcat(str,buffer);
- }
+ str.append(",").append(std::to_string(value[i]));
+
+ return str;
}
-void ColumnDecodeStringWithCount(const char* str, int *value, int count)
+static void ColumnDecodeStringWithCount(string ss, int *value, int count)
{
+ const char *str = ss.c_str();
char *s, *p;
char tmpStr[256];
@@ -2009,23 +1867,19 @@ void ColumnDecodeStringWithCount(const char* str, int *value, int count)
}
}
-static void SplitterEncodeString(const int *value, char* str)
+static string SplitterEncodeString(const int *value)
{
- char tmpStr[256];
-
- sprintf(tmpStr, "%d", value[0]);
-
- strcpy(str, tmpStr);
+ string str = std::to_string(value[0]);
for (int i = 1; i < GetSplitterCount(); i++)
- {
- sprintf(tmpStr, ",%d", value[i]);
- strcat(str, tmpStr);
- }
+ str.append(",").append(std::to_string(value[i]));
+
+ return str;
}
-static void SplitterDecodeString(const char *str, int *value)
+static void SplitterDecodeString(string ss, int *value)
{
+ const char *str = ss.c_str();
char *s, *p;
char tmpStr[256];
@@ -2046,11 +1900,9 @@ static void SplitterDecodeString(const char *str, int *value)
}
/* Parse the given comma-delimited string into a LOGFONT structure */
-static void FontDecodeString(const char* str, LOGFONT *f)
+static void FontDecodeString(string ss, LOGFONT *f)
{
- const char* ptr;
- TCHAR* t_ptr;
-
+ const char* str = ss.c_str();
sscanf(str, "%li,%li,%li,%li,%li,%i,%i,%i,%i,%i,%i,%i,%i",
&f->lfHeight,
&f->lfWidth,
@@ -2065,25 +1917,26 @@ static void FontDecodeString(const char* str, LOGFONT *f)
(int*)&f->lfClipPrecision,
(int*)&f->lfQuality,
(int*)&f->lfPitchAndFamily);
- ptr = strrchr(str, ',');
+ const char *ptr = strrchr(str, ',');
if (ptr)
{
- t_ptr = ui_wstring_from_utf8(ptr + 1);
- if( !t_ptr )
+ TCHAR *t_s = ui_wstring_from_utf8(ptr + 1);
+ if( !t_s )
return;
- _tcscpy(f->lfFaceName, t_ptr);
- free(t_ptr);
+ _tcscpy(f->lfFaceName, t_s);
+ free(t_s);
}
}
/* Encode the given LOGFONT structure into a comma-delimited string */
-static void FontEncodeString(const LOGFONT *f, char *str)
+static string FontEncodeString(const LOGFONT *f)
{
char* utf8_FaceName = ui_utf8_from_wstring(f->lfFaceName);
if( !utf8_FaceName )
- return;
+ return "";
- sprintf(str, "%li,%li,%li,%li,%li,%i,%i,%i,%i,%i,%i,%i,%i,%s",
+ char s[200];
+ sprintf(s, "%li,%li,%li,%li,%li,%i,%i,%i,%i,%i,%i,%i,%i,%s",
f->lfHeight,
f->lfWidth,
f->lfEscapement,
@@ -2100,13 +1953,13 @@ static void FontEncodeString(const LOGFONT *f, char *str)
utf8_FaceName);
free(utf8_FaceName);
+ return string(s);
}
-static void TabFlagsEncodeString(int data, char *str)
+static string TabFlagsEncodeString(int data)
{
int num_saved = 0;
-
- strcpy(str,"");
+ string str;
// we save the ones that are NOT displayed, so we can add new ones
// and upgraders will see them
@@ -2115,16 +1968,18 @@ static void TabFlagsEncodeString(int data, char *str)
if (((data & (1 << i)) == 0) && GetImageTabShortName(i))
{
if (num_saved > 0)
- strcat(str, ", ");
+ str.append(",");
- strcat(str,GetImageTabShortName(i));
+ str.append(GetImageTabShortName(i));
num_saved++;
}
}
+ return str;
}
-static void TabFlagsDecodeString(const char *str, int *data)
+static void TabFlagsDecodeString(string ss, int *data)
{
+ const char *str = ss.c_str();
int j = 0;
char s[2000];
char *token;
@@ -2156,6 +2011,7 @@ static void TabFlagsDecodeString(const char *str, int *data)
}
}
+// load mewui settings
static void LoadSettingsFile(ui_options &opts, const char *filename)
{
osd_file::error filerr;
@@ -2164,26 +2020,12 @@ static void LoadSettingsFile(ui_options &opts, const char *filename)
filerr = util::core_file::open(filename, OPEN_FLAG_READ, file);
if (filerr == osd_file::error::NONE)
{
- std::string error_string;
- opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, OPTION_PRIORITY_CMDLINE, error_string);
- file.reset();
- }
-}
-
-static void LoadSettingsFile(winui_options &opts, const char *filename)
-{
- osd_file::error filerr;
- util::core_file::ptr file;
-
- filerr = util::core_file::open(filename, OPEN_FLAG_READ, file);
- if (filerr == osd_file::error::NONE)
- {
- std::string error_string;
- opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, OPTION_PRIORITY_CMDLINE, error_string);
+ opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, true, true);
file.reset();
}
}
+// load a game ini
static void LoadSettingsFile(windows_options &opts, const char *filename)
{
osd_file::error filerr;
@@ -2192,8 +2034,7 @@ static void LoadSettingsFile(windows_options &opts, const char *filename)
filerr = util::core_file::open(filename, OPEN_FLAG_READ, file);
if (filerr == osd_file::error::NONE)
{
- std::string error_string;
- opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, OPTION_PRIORITY_CMDLINE, error_string);
+ opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, true, true);
file.reset();
}
}
@@ -2208,25 +2049,7 @@ static void SaveSettingsFile(ui_options &opts, const char *filename)
if (filerr == osd_file::error::NONE)
{
- std::string inistring = opts.output_ini();
- file->puts(inistring.c_str());
- file.reset();
- }
-}
-
-
-
-// This saves changes to MAMEUI.INI only
-static void SaveSettingsFile(winui_options &opts, const char *filename)
-{
- osd_file::error filerr = osd_file::error::NONE;
- util::core_file::ptr file;
-
- filerr = util::core_file::open(filename, OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS, file);
-
- if (filerr == osd_file::error::NONE)
- {
- std::string inistring = opts.output_ini();
+ string inistring = opts.output_ini();
file->puts(inistring.c_str());
file.reset();
}
@@ -2244,7 +2067,7 @@ static void SaveSettingsFile(windows_options &opts, const char *filename)
if (filerr == osd_file::error::NONE)
{
- std::string inistring = opts.output_ini();
+ string inistring = opts.output_ini();
// printf("=====%s=====\n%s\n",filename,inistring.c_str()); // for debugging
file->puts(inistring.c_str());
file.reset();
@@ -2253,40 +2076,45 @@ static void SaveSettingsFile(windows_options &opts, const char *filename)
-/* Register access functions below */
-static void LoadOptionsAndSettings(void)
+void ResetGameOptions(int driver_index)
{
-// char buffer[MAX_PATH];
-
- // parse MAMEui.ini - always in the current directory.
- LoadSettingsFile(settings, UI_INI_FILENAME);
- LoadSettingsFile(mewui, MEWUI_FILENAME);
+ //save_options(NULL, OPTIONS_GAME, driver_index);
+}
- // parse GameInfo.ini - game options.
- game_opts.load_file(GAMEINFO_INI_FILENAME);
+void ResetGameDefaults(void)
+{
+ // Walk the global settings and reset everything to defaults;
+ ResetToDefaults(global, OPTION_PRIORITY_CMDLINE);
+ save_options(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS);
+}
- // parse global options ini/mame32.ini
- load_options(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS);
+/*
+ * Reset all game, vector and source options to defaults.
+ * No reason to reboot if this is done.
+ */
+void ResetAllGameOptions(void)
+{
+ for (int i = 0; i < driver_list::total(); i++)
+ ResetGameOptions(i);
}
void SetDirectories(windows_options &opts)
{
- std::string error_string;
- opts.set_value(OPTION_MEDIAPATH, GetRomDirs(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_SAMPLEPATH, GetSampleDirs(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_INIPATH, GetIniDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_CFG_DIRECTORY, GetCfgDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_SNAPSHOT_DIRECTORY, GetImgDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_INPUT_DIRECTORY, GetInpDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_STATE_DIRECTORY, GetStateDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_ARTPATH, GetArtDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_NVRAM_DIRECTORY, GetNvramDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_CTRLRPATH, GetCtrlrDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_CHEATPATH, GetCheatDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_CROSSHAIRPATH, GetCrosshairDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_FONTPATH, GetFontDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_DIFF_DIRECTORY, GetDiffDir(), OPTION_PRIORITY_CMDLINE, error_string);
- opts.set_value(OPTION_SNAPNAME, GetSnapName(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_MEDIAPATH, GetRomDirs(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_SAMPLEPATH, GetSampleDirs(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_INIPATH, GetIniDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_CFG_DIRECTORY, GetCfgDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_SNAPSHOT_DIRECTORY, GetImgDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_INPUT_DIRECTORY, GetInpDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_STATE_DIRECTORY, GetStateDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_ARTPATH, GetArtDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_NVRAM_DIRECTORY, GetNvramDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_CTRLRPATH, GetCtrlrDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_CHEATPATH, GetCheatDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_CROSSHAIRPATH, GetCrosshairDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_FONTPATH, GetFontDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_DIFF_DIRECTORY, GetDiffDir(), OPTION_PRIORITY_CMDLINE);
+ opts.set_value(OPTION_SNAPNAME, GetSnapName(), OPTION_PRIORITY_CMDLINE);
}
// not used
@@ -2322,8 +2150,9 @@ DWORD GetFolderFlags(int folder_index)
/* Decode the flags into a DWORD */
-static DWORD DecodeFolderFlags(const char *buf)
+static DWORD DecodeFolderFlags(string ss)
{
+ const char *buf = ss.c_str();
DWORD flags = 0;
int shift = 0;
const char *ptr = buf;
@@ -2331,9 +2160,8 @@ static DWORD DecodeFolderFlags(const char *buf)
while (*ptr && (1 << shift) & F_MASK)
{
if (*ptr++ == '1')
- {
flags |= (1 << shift);
- }
+
shift++;
}
return flags;
@@ -2362,14 +2190,8 @@ static const char * EncodeFolderFlags(DWORD value)
*/
void LoadFolderFlags(void)
{
- winui_options opts;
- int i, numFolders = 0;
LPTREEFOLDER lpFolder;
- options_entry entries[2] = { { 0 }, { 0 } };
-
- memcpy(entries, filterOptions, sizeof(filterOptions));
-
- numFolders = GetNumFolders();
+ int i, numFolders = GetNumFolders();
for (i = 0; i < numFolders; i++)
{
@@ -2385,23 +2207,18 @@ void LoadFolderFlags(void)
ptr = folder_name;
while (*ptr && *ptr != '\0')
{
- if (*ptr == ' ')
- {
+ if ((*ptr == ' ') || (*ptr == '-'))
*ptr = '_';
- }
+
ptr++;
}
- std::string option_name = std::string(folder_name) + "_filters";
- // create entry
- entries[0].name = option_name.c_str();
- opts.add_entries(entries);
+ string option_name = string(folder_name) + "_filters";
}
}
// These are overlaid at the end of our UI ini
// The normal read will skip them.
- LoadSettingsFile(opts, UI_INI_FILENAME);
// retrieve the stored values
for (i = 0; i < numFolders; i++)
@@ -2411,48 +2228,32 @@ void LoadFolderFlags(void)
if (lpFolder)
{
char folder_name[256];
- char *ptr;
- const char *value;
// Convert spaces to underscores
strcpy(folder_name, lpFolder->m_lpTitle);
- ptr = folder_name;
+ char *ptr = folder_name;
while (*ptr && *ptr != '\0')
{
- if (*ptr == ' ')
- {
+ if ((*ptr == ' ') || (*ptr == '-'))
*ptr = '_';
- }
+
ptr++;
}
- std::string option_name = std::string(folder_name) + "_filters";
- // get entry and decode it
- value = opts.value(option_name.c_str());
+ string option_name = string(folder_name) + "_filters";
- if (value)
- lpFolder->m_dwFlags |= DecodeFolderFlags(value) & F_MASK;
+ // get entry and decode it
+ lpFolder->m_dwFlags |= DecodeFolderFlags(settings.getter(option_name.c_str())) & F_MASK;
}
}
}
-// Adds our folder flags to a temporary winui_options, for saving.
-static void AddFolderFlags(winui_options &opts)
+// Adds our folder flags to winui_options, for saving.
+static void AddFolderFlags()
{
- int numFolders = 0, num_entries = 0;
LPTREEFOLDER lpFolder;
- options_entry entries[2] = { { 0 }, { 0 } };
-
- entries[0].name = NULL;
- entries[0].defvalue = NULL;
- entries[0].flags = OPTION_HEADER;
- entries[0].description = "FOLDER FILTERS";
- opts.add_entries(entries);
-
- memcpy(entries, filterOptions, sizeof(filterOptions));
-
- numFolders = GetNumFolders();
+ int num_entries = 0, numFolders = GetNumFolders();
for (int i = 0; i < numFolders; i++)
{
@@ -2460,29 +2261,22 @@ static void AddFolderFlags(winui_options &opts)
if (lpFolder && (lpFolder->m_dwFlags & F_MASK) != 0)
{
char folder_name[256];
- char *ptr;
// Convert spaces to underscores
strcpy(folder_name, lpFolder->m_lpTitle);
- ptr = folder_name;
+ char *ptr = folder_name;
while (*ptr && *ptr != '\0')
{
- if (*ptr == ' ')
- {
+ if ((*ptr == ' ') || (*ptr == '-'))
*ptr = '_';
- }
+
ptr++;
}
- std::string option_name = std::string(folder_name) + "_filters";
-
- // create entry
- entries[0].name = option_name.c_str();
- opts.add_entries(entries);
+ string option_name = string(folder_name) + "_filters";
// store entry
- std::string error_string;
- opts.set_value(option_name.c_str(), EncodeFolderFlags(lpFolder->m_dwFlags), OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(option_name.c_str(), EncodeFolderFlags(lpFolder->m_dwFlags));
// increment counter
num_entries++;
@@ -2494,10 +2288,8 @@ static void AddFolderFlags(winui_options &opts)
void SaveOptions(void)
{
// Add the folder flag to settings.
- AddFolderFlags(settings);
- // Save opts if it is non-null, else save settings.
- // It will be null if there are no filters set.
- SaveSettingsFile(settings, UI_INI_FILENAME);
+ AddFolderFlags();
+ settings.save_file(UI_INI_FILENAME);
SaveSettingsFile(mewui, MEWUI_FILENAME);
}
@@ -2509,7 +2301,7 @@ void SaveGameListOptions(void)
void SaveDefaultOptions(void)
{
- std::string fname = std::string(GetIniDir()) + PATH_SEPARATOR + std::string(emulator_info::get_configname()).append(".ini");
+ string fname = string(GetIniDir()) + PATH_SEPARATOR + string(emulator_info::get_configname()).append(".ini");
SaveSettingsFile(global, fname.c_str());
}
@@ -2520,40 +2312,37 @@ const char * GetVersionString(void)
/* get options, based on passed in game number. */
-void load_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num)
+void load_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num, bool set_system_name)
{
const game_driver *driver = NULL;
if (game_num > -1)
driver = &driver_list::driver(game_num);
- CreateGameOptions(opts, opt_type, game_num);
// Try base ini first
- std::string fname = std::string(emulator_info::get_configname()).append(".ini");
+ string fname = string(emulator_info::get_configname()).append(".ini");
LoadSettingsFile(opts, fname.c_str());
if (opt_type == OPTIONS_SOURCE)
{
- fname = std::string(GetIniDir()) + PATH_SEPARATOR + "source" + PATH_SEPARATOR + core_filename_extract_base(driver->source_file, true) + ".ini";
+ fname = string(GetIniDir()) + PATH_SEPARATOR + "source" + PATH_SEPARATOR + core_filename_extract_base(driver->type.source(), true) + ".ini";
LoadSettingsFile(opts, fname.c_str());
return;
}
if (game_num > -2)
{
- driver = &driver_list::driver(game_num);
// Now try global ini
- fname = std::string(GetIniDir()) + PATH_SEPARATOR + std::string(emulator_info::get_configname()).append(".ini");
+ fname = string(GetIniDir()) + PATH_SEPARATOR + string(emulator_info::get_configname()).append(".ini");
LoadSettingsFile(opts, fname.c_str());
if (game_num > -1)
{
- // global swpath serves a different purpose than for games, so blank it out
- std::string error_string;
- opts.set_value(OPTION_SWPATH, "", OPTION_PRIORITY_CMDLINE,error_string);
// Lastly, gamename.ini
if (driver)
{
- fname = std::string(GetIniDir()) + PATH_SEPARATOR + std::string(driver->name).append(".ini");
+ fname = string(GetIniDir()) + PATH_SEPARATOR + string(driver->name).append(".ini");
+ if (set_system_name)
+ opts.set_value(OPTION_SYSTEMNAME, driver->name, OPTION_PRIORITY_CMDLINE);
LoadSettingsFile(opts, fname.c_str());
}
}
@@ -2565,7 +2354,7 @@ void load_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num)
void save_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num)
{
const game_driver *driver = NULL;
- std::string filename, filepath;
+ string filename, filepath;
if (game_num >= 0)
{
@@ -2574,18 +2363,18 @@ void save_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num)
{
filename.assign(driver->name);
if (opt_type == OPTIONS_SOURCE)
- filepath = std::string(GetIniDir()) + PATH_SEPARATOR + "source" + PATH_SEPARATOR + core_filename_extract_base(driver->source_file, true) + ".ini";
+ filepath = string(GetIniDir()) + PATH_SEPARATOR + "source" + PATH_SEPARATOR + core_filename_extract_base(driver->type.source(), true) + ".ini";
}
}
else
if (game_num == -1)
- filename = std::string(emulator_info::get_configname());
+ filename = string(emulator_info::get_configname());
if (!filename.empty() && filepath.empty())
- filepath = std::string(GetIniDir()).append(PATH_SEPARATOR).append(filename.c_str()).append(".ini");
+ filepath = string(GetIniDir()).append(PATH_SEPARATOR).append(filename.c_str()).append(".ini");
if (game_num == -2)
- filepath = std::string(emulator_info::get_configname()).append(".ini");
+ filepath = string(emulator_info::get_configname()).append(".ini");
if (!filepath.empty())
{
@@ -2598,210 +2387,252 @@ void save_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num)
}
+// See if this driver has software support
+bool DriverHasSoftware(uint32_t drvindex)
+{
+ if (drvindex < driver_list::total())
+ {
+ windows_options o;
+ load_options(o, OPTIONS_GAME, drvindex, 1);
+ machine_config config(driver_list::driver(drvindex), o);
+
+ for (device_image_interface &img : image_interface_iterator(config.root_device()))
+ if (img.user_loadable())
+ return 1;
+ }
+
+ return 0;
+}
+
+
// Reset the given windows_options to their default settings.
static void ResetToDefaults(windows_options &opts, int priority)
{
// iterate through the options setting each one back to the default value.
- opts.revert(priority);
+ windows_options dummy;
+ OptionsCopy(dummy, opts);
+}
+
+uint32_t GetDriverCacheLower(uint32_t driver_index)
+{
+ return game_opts.cache_lower(driver_index);
}
-int GetDriverCache(int driver_index)
+uint32_t GetDriverCacheUpper(uint32_t driver_index)
{
- return game_opts.cache(driver_index);
+ return game_opts.cache_upper(driver_index);
}
-void SetDriverCache(int driver_index, int val)
+void SetDriverCache(uint32_t driver_index, uint32_t val)
{
- game_opts.cache(driver_index, val);
+ game_opts.cache_upper(driver_index, val);
}
BOOL RequiredDriverCache(void)
{
- bool ret = false;
+ return game_opts.rebuild();
+}
- if ( strcmp(settings.value(MUIOPTION_VERSION), GetVersionString()) != 0 )
- ret = true;
+void ForceRebuild(void)
+{
+ game_opts.force_rebuild();
+}
- std::string error_string;
- settings.set_value(MUIOPTION_VERSION, GetVersionString(), OPTION_PRIORITY_CMDLINE,error_string);
+BOOL DriverIsComputer(uint32_t driver_index)
+{
+ uint32_t cache = game_opts.cache_lower(driver_index) & 3;
+ return (cache == 2) ? true : false;
+}
- return ret;
+BOOL DriverIsConsole(uint32_t driver_index)
+{
+ uint32_t cache = game_opts.cache_lower(driver_index) & 3;
+ return (cache == 1) ? true : false;
+}
+
+BOOL DriverIsModified(uint32_t driver_index)
+{
+ return BIT(game_opts.cache_lower(driver_index), 12);
+}
+
+BOOL DriverIsImperfect(uint32_t driver_index)
+{
+ return (game_opts.cache_lower(driver_index) & 0xff0000) ? true : false; // (NO|IMPERFECT) (CONTROLS|PALETTE|SOUND|GRAPHICS)
}
// from optionsms.cpp (MESSUI)
-#define LOG_SOFTWARE 0
+#define LOG_SOFTWARE 1
void SetSLColumnOrder(int order[])
{
- char column_order_string[80];
- ColumnEncodeStringWithCount(order, column_order_string, SL_COLUMN_MAX);
- std::string error_string;
- MameUISettings().set_value(MESSUI_SL_COLUMN_ORDER, column_order_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SL_COLUMN_ORDER, ColumnEncodeStringWithCount(order, SL_COLUMN_MAX));
}
void GetSLColumnOrder(int order[])
{
- const char *column_order_string;
- column_order_string = MameUISettings().value(MESSUI_SL_COLUMN_ORDER);
- ColumnDecodeStringWithCount(column_order_string, order, SL_COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MESSUI_SL_COLUMN_ORDER), order, SL_COLUMN_MAX);
}
void SetSLColumnShown(int shown[])
{
- char column_shown_string[80];
- ColumnEncodeStringWithCount(shown, column_shown_string, SL_COLUMN_MAX);
- std::string error_string;
- MameUISettings().set_value(MESSUI_SL_COLUMN_SHOWN, column_shown_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SL_COLUMN_SHOWN, ColumnEncodeStringWithCount(shown, SL_COLUMN_MAX));
}
void GetSLColumnShown(int shown[])
{
- const char *column_shown_string;
- column_shown_string = MameUISettings().value(MESSUI_SL_COLUMN_SHOWN);
- ColumnDecodeStringWithCount(column_shown_string, shown, SL_COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MESSUI_SL_COLUMN_SHOWN), shown, SL_COLUMN_MAX);
}
void SetSLColumnWidths(int width[])
{
- char column_width_string[80];
- ColumnEncodeStringWithCount(width, column_width_string, SL_COLUMN_MAX);
- std::string error_string;
- MameUISettings().set_value(MESSUI_SL_COLUMN_WIDTHS, column_width_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SL_COLUMN_WIDTHS, ColumnEncodeStringWithCount(width, SL_COLUMN_MAX));
}
void GetSLColumnWidths(int width[])
{
- const char *column_width_string;
- column_width_string = MameUISettings().value(MESSUI_SL_COLUMN_WIDTHS);
- ColumnDecodeStringWithCount(column_width_string, width, SL_COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MESSUI_SL_COLUMN_WIDTHS), width, SL_COLUMN_MAX);
}
void SetSLSortColumn(int column)
{
- std::string error_string;
- MameUISettings().set_value(MESSUI_SL_SORT_COLUMN, column, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SL_SORT_COLUMN, column);
}
int GetSLSortColumn(void)
{
- return MameUISettings().int_value(MESSUI_SL_SORT_COLUMN);
+ return settings.int_value(MESSUI_SL_SORT_COLUMN);
}
void SetSLSortReverse(BOOL reverse)
{
- std::string error_string;
- MameUISettings().set_value( MESSUI_SL_SORT_REVERSED, reverse, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SL_SORT_REVERSED, reverse);
}
BOOL GetSLSortReverse(void)
{
- return MameUISettings().bool_value(MESSUI_SL_SORT_REVERSED);
+ return settings.bool_value(MESSUI_SL_SORT_REVERSED);
}
void SetSWColumnOrder(int order[])
{
- char column_order_string[80];
- ColumnEncodeStringWithCount(order, column_order_string, SW_COLUMN_MAX);
- std::string error_string;
- MameUISettings().set_value(MESSUI_SW_COLUMN_ORDER, column_order_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SW_COLUMN_ORDER, ColumnEncodeStringWithCount(order, SW_COLUMN_MAX));
}
void GetSWColumnOrder(int order[])
{
- const char *column_order_string;
- column_order_string = MameUISettings().value(MESSUI_SW_COLUMN_ORDER);
- ColumnDecodeStringWithCount(column_order_string, order, SW_COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MESSUI_SW_COLUMN_ORDER), order, SW_COLUMN_MAX);
}
void SetSWColumnShown(int shown[])
{
- char column_shown_string[80];
- ColumnEncodeStringWithCount(shown, column_shown_string, SW_COLUMN_MAX);
- std::string error_string;
- MameUISettings().set_value(MESSUI_SW_COLUMN_SHOWN, column_shown_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SW_COLUMN_SHOWN, ColumnEncodeStringWithCount(shown, SW_COLUMN_MAX));
}
void GetSWColumnShown(int shown[])
{
- const char *column_shown_string;
- column_shown_string = MameUISettings().value(MESSUI_SW_COLUMN_SHOWN);
- ColumnDecodeStringWithCount(column_shown_string, shown, SW_COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MESSUI_SW_COLUMN_SHOWN), shown, SW_COLUMN_MAX);
}
void SetSWColumnWidths(int width[])
{
- char column_width_string[80];
- ColumnEncodeStringWithCount(width, column_width_string, SW_COLUMN_MAX);
- std::string error_string;
- MameUISettings().set_value(MESSUI_SW_COLUMN_WIDTHS, column_width_string, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SW_COLUMN_WIDTHS, ColumnEncodeStringWithCount(width, SW_COLUMN_MAX));
}
void GetSWColumnWidths(int width[])
{
- const char *column_width_string;
- column_width_string = MameUISettings().value(MESSUI_SW_COLUMN_WIDTHS);
- ColumnDecodeStringWithCount(column_width_string, width, SW_COLUMN_MAX);
+ ColumnDecodeStringWithCount(settings.getter(MESSUI_SW_COLUMN_WIDTHS), width, SW_COLUMN_MAX);
}
void SetSWSortColumn(int column)
{
- std::string error_string;
- MameUISettings().set_value(MESSUI_SW_SORT_COLUMN, column, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SW_SORT_COLUMN, column);
}
int GetSWSortColumn(void)
{
- return MameUISettings().int_value(MESSUI_SW_SORT_COLUMN);
+ return settings.int_value(MESSUI_SW_SORT_COLUMN);
}
void SetSWSortReverse(BOOL reverse)
{
- std::string error_string;
- MameUISettings().set_value( MESSUI_SW_SORT_REVERSED, reverse, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter( MESSUI_SW_SORT_REVERSED, reverse);
}
BOOL GetSWSortReverse(void)
{
- return MameUISettings().bool_value(MESSUI_SW_SORT_REVERSED);
+ return settings.bool_value(MESSUI_SW_SORT_REVERSED);
}
-void SetSelectedSoftware(int driver_index, const machine_config *config, const device_image_interface *dev, const char *software)
+
+void SetSelectedSoftware(int driver_index, string opt_name, const char *software)
{
- std::string opt_name = dev->instance_name();
- windows_options o;
- std::string error_string;
+ const char *s = opt_name.c_str();
if (LOG_SOFTWARE)
{
- dprintf("SetSelectedSoftware(): dev=%p (\'%s\') software='%s'\n", dev, driver_list::driver(driver_index).name, software);
+ printf("SetSelectedSoftware(): slot=%s driver=%s software='%s'\n", s, driver_list::driver(driver_index).name, software);
}
- load_options(o, OPTIONS_GAME, driver_index);
- o.set_value(opt_name.c_str(), software, OPTION_PRIORITY_CMDLINE,error_string);
- save_options(o, OPTIONS_GAME, driver_index);
+ if (s)
+ {
+ printf("About to load %s into slot %s\n",software,s);
+ windows_options o;
+ //o.set_value(OPTION_SYSTEMNAME, driver_list::driver(driver_index).name, OPTION_PRIORITY_CMDLINE);
+ load_options(o, OPTIONS_GAME, driver_index, 1);
+ o.set_value(s, software, OPTION_PRIORITY_CMDLINE);
+ //o.image_option(opt_name).specify(software);
+ printf("Done\n");
+ save_options(o, OPTIONS_GAME, driver_index);
+ }
}
-void SetCurrentSoftwareTab(const char *shortname)
+void SetCurrentSoftwareTab(int val)
{
- std::string error_string;
- MameUISettings().set_value(MESSUI_SOFTWARE_TAB, shortname, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.setter(MESSUI_SOFTWARE_TAB, val);
}
-const char *GetCurrentSoftwareTab(void)
+int GetCurrentSoftwareTab(void)
{
- return MameUISettings().value(MESSUI_SOFTWARE_TAB);
+ return settings.int_value(MESSUI_SOFTWARE_TAB);
}
-const char* GetSLDir(void)
+bool AreOptionsEqual(windows_options &opts1, windows_options &opts2)
{
- return MameUISettings().value(MESSUI_SLPATH);
+ for (auto &curentry : opts1.entries())
+ {
+ if (curentry->type() != OPTION_HEADER)
+ {
+ const char *value = curentry->value();
+ const char *comp = opts2.value(curentry->name().c_str());
+ if (!value && !comp) // both empty, they are the same
+ {}
+ else
+ if (!value || !comp) // only one empty, they are different
+ return false;
+ else
+ if (strcmp(value, comp) != 0) // both not empty, do proper compare
+ return false;
+ }
+ }
+ return true;
}
-void SetSLDir(const char* paths)
+void OptionsCopy(windows_options &source, windows_options &dest)
{
- std::string error_string;
- MameUISettings().set_value(MESSUI_SLPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+ for (auto &dest_entry : source.entries())
+ {
+ if (dest_entry->names().size() > 0)
+ {
+ // identify the source entry
+ const core_options::entry::shared_ptr source_entry = source.get_entry(dest_entry->name());
+ if (source_entry)
+ {
+ const char *value = source_entry->value();
+ if (value)
+ dest_entry->set_value(value, source_entry->priority(), true);
+ }
+ }
+ }
}
-