summaryrefslogtreecommitdiffstats
path: root/docs/release/src/osd/winui/properties.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/osd/winui/properties.cpp')
-rw-r--r--docs/release/src/osd/winui/properties.cpp969
1 files changed, 474 insertions, 495 deletions
diff --git a/docs/release/src/osd/winui/properties.cpp b/docs/release/src/osd/winui/properties.cpp
index fa692a9618b..4d11c4fb412 100644
--- a/docs/release/src/osd/winui/properties.cpp
+++ b/docs/release/src/osd/winui/properties.cpp
@@ -4,7 +4,7 @@
/***************************************************************************
- Properties.c
+ Properties.cpp
Properties Popup and Misc UI support routines.
@@ -123,7 +123,9 @@ b) Exit the dialog.
#endif
#include "newuires.h"
+#ifdef UI_DIRECTDRAW
#include "directdraw.h" /* has to be after samples.h */
+#endif
#include "properties.h"
#include "drivenum.h"
#include "machine/ram.h"
@@ -135,6 +137,9 @@ b) Exit the dialog.
#define PropSheet_GetTabControl(d) (HWND)(LRESULT)(int)SendMessage((d),PSM_GETTABCONTROL,0,0)
#endif /* defined(__GNUC__) */
+/* Enable this if MAME supports multiple versions of D3D */
+//#define D3DVERSION
+
/***************************************************************
* Imported function prototypes
***************************************************************/
@@ -154,7 +159,9 @@ static void InitializeSkippingUI(HWND hwnd);
static void InitializeRotateUI(HWND hwnd);
static void UpdateSelectScreenUI(HWND hwnd);
static void InitializeSelectScreenUI(HWND hwnd);
+#ifdef D3DVERSION
static void InitializeD3DVersionUI(HWND hwnd);
+#endif
static void InitializeVideoUI(HWND hwnd);
static void InitializeBIOSUI(HWND hwnd);
static void InitializeControllerMappingUI(HWND hwnd);
@@ -181,7 +188,7 @@ static BOOL DirListReadControl(datamap *map, HWND dialog, HWND control, windows_
static BOOL DirListPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name);
static BOOL RamPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name);
extern BOOL BrowseForDirectory(HWND hwnd, LPCTSTR pStartDir, TCHAR* pResult);
-//static BOOL g_bModifiedSoftwarePaths = FALSE;
+//static BOOL g_bModifiedSoftwarePaths = false;
#endif
/**************************************************************
@@ -201,8 +208,8 @@ static int g_nGame = 0;
static int g_nFolder = 0;
static int g_nFolderGame = 0;
static OPTIONS_TYPE g_nPropertyMode = OPTIONS_GAME;
-static BOOL g_bAutoAspect[MAX_SCREENS] = {FALSE, FALSE, FALSE, FALSE};
-static BOOL g_bAutoSnapSize = FALSE;
+static BOOL g_bAutoAspect[MAX_SCREENS] = {false, false, false, false};
+static BOOL g_bAutoSnapSize = false;
static HICON g_hIcon = NULL;
/* Property sheets */
@@ -226,66 +233,62 @@ BOOL PropSheetFilter_Vector(const machine_config *drv, const game_driver *gamedr
/* Help IDs - moved to auto-generated helpids.c */
extern const DWORD dwHelpIDs[];
-static struct ComboBoxVideo
+typedef struct
{
const TCHAR* m_pText;
const char* m_pData;
-} g_ComboBoxVideo[] =
-{
- { TEXT("Auto"), "auto" },
- { TEXT("GDI"), "gdi" },
-// { TEXT("DirectDraw"), "ddraw" }, // removed 20160217
- { TEXT("Direct3D"), "d3d" },
- { TEXT("BGFX"), "bgfx" },
- { TEXT("OpenGL"), "opengl" },
-};
-#define NUMVIDEO (sizeof(g_ComboBoxVideo) / sizeof(g_ComboBoxVideo[0]))
+}
+DUALCOMBOSTR;
-static struct ComboBoxSound
+typedef struct
{
const TCHAR* m_pText;
- const char* m_pData;
-} g_ComboBoxSound[] =
+ const int m_pData;
+}
+DUALCOMBOINT;
+
+const DUALCOMBOSTR g_ComboBoxVideo[] =
{
- { TEXT("None"), "none" },
- { TEXT("Auto"), "auto" },
- { TEXT("DirectSound"), "dsound" },
- { TEXT("PortAudio"), "portaudio" },
-// { TEXT("XAudio2"), "xaudio2" }, // invalid option
+ { TEXT("Auto"), "auto" },
+ { TEXT("GDI"), "gdi" },
+#ifdef UI_DIRECTDRAW
+ { TEXT("DirectDraw"), "ddraw" }, // removed 20160217
+#endif
+ { TEXT("Direct3D"), "d3d" },
+ { TEXT("BGFX"), "bgfx" },
+ { TEXT("OpenGL"), "opengl" },
};
-#define NUMSOUND (sizeof(g_ComboBoxSound) / sizeof(g_ComboBoxSound[0]))
+#define NUMVIDEO (sizeof(g_ComboBoxVideo) / sizeof(g_ComboBoxVideo[0]))
-static struct ComboBoxD3DVersion
+const DUALCOMBOSTR g_ComboBoxSound[] =
{
- const TCHAR* m_pText;
- const int m_pData;
-} g_ComboBoxD3DVersion[] =
+ { TEXT("None"), "none" },
+ { TEXT("Auto"), "auto" },
+ { TEXT("DirectSound"), "dsound" },
+ { TEXT("PortAudio"), "portaudio" },
+// { TEXT("XAudio2"), "xaudio2" }, // invalid option
+};
+#define NUMSOUND (sizeof(g_ComboBoxSound) / sizeof(g_ComboBoxSound[0]))
+#ifdef D3DVERSION
+const DUALCOMBOINT g_ComboBoxD3DVersion[] =
{
- { TEXT("Version 9"), 9 },
-// { TEXT("Version 8"), 8 },
+ { TEXT("Version 9"), 9 },
+// { TEXT("Version 8"), 8 },
};
#define NUMD3DVERSIONS (sizeof(g_ComboBoxD3DVersion) / sizeof(g_ComboBoxD3DVersion[0]))
#define WINOPTION_D3DVERSION "9"
-
-static struct ComboBoxSelectScreen
-{
- const TCHAR* m_pText;
- const int m_pData;
-} g_ComboBoxSelectScreen[] =
+#endif
+const DUALCOMBOINT g_ComboBoxSelectScreen[] =
{
- { TEXT("Screen 0"), 0 },
- { TEXT("Screen 1"), 1 },
- { TEXT("Screen 2"), 2 },
- { TEXT("Screen 3"), 3 },
+ { TEXT("Screen 0"), 0 },
+ { TEXT("Screen 1"), 1 },
+ { TEXT("Screen 2"), 2 },
+ { TEXT("Screen 3"), 3 },
};
#define NUMSELECTSCREEN (sizeof(g_ComboBoxSelectScreen) / sizeof(g_ComboBoxSelectScreen[0]))
-static struct ComboBoxView
-{
- const TCHAR* m_pText;
- const char* m_pData;
-} g_ComboBoxView[] =
+const DUALCOMBOSTR g_ComboBoxView[] =
{
{ TEXT("Auto"), "auto" },
{ TEXT("Standard"), "standard" },
@@ -296,26 +299,18 @@ static struct ComboBoxView
-static struct ComboBoxDevices
+const DUALCOMBOSTR g_ComboBoxDevice[] =
{
- const TCHAR* m_pText;
- const char* m_pData;
-} g_ComboBoxDevice[] =
-{
- { TEXT("None"), "none" },
- { TEXT("Keyboard"), "keyboard" },
- { TEXT("Mouse"), "mouse" },
- { TEXT("Joystick"), "joystick" },
- { TEXT("Lightgun"), "lightgun" },
+ { TEXT("None"), "none" },
+ { TEXT("Keyboard"), "keyboard" },
+ { TEXT("Mouse"), "mouse" },
+ { TEXT("Joystick"), "joystick" },
+ { TEXT("Lightgun"), "lightgun" },
};
#define NUMDEVICES (sizeof(g_ComboBoxDevice) / sizeof(g_ComboBoxDevice[0]))
-static struct ComboBoxSnapView
-{
- const TCHAR* m_pText;
- const char* m_pData;
-} g_ComboBoxSnapView[] =
+const DUALCOMBOSTR g_ComboBoxSnapView[] =
{
{ TEXT("Internal"), "internal" },
{ TEXT("Auto"), "auto" },
@@ -420,30 +415,26 @@ static PROPSHEETPAGE *CreatePropSheetPages(HINSTANCE hInst, BOOL bOnlyDefault,
// This is for the DEFAULT property-page options only
void InitDefaultPropertyPage(HINSTANCE hInst, HWND hWnd)
{
- PROPSHEETHEADER pshead;
- PROPSHEETPAGE *pspage;
-
// clear globals
g_nGame = GLOBAL_OPTIONS;
windows_options dummy;
- pCurrentOpts = dummy;
- pOrigOpts = dummy;
- pDefaultOpts = dummy;
+ OptionsCopy(dummy,pDefaultOpts);
+ OptionsCopy(dummy,pOrigOpts);
+ OptionsCopy(dummy,pCurrentOpts);
/* Get default options to populate property sheets */
- load_options(pCurrentOpts, OPTIONS_GLOBAL, g_nGame);
- load_options(pOrigOpts, OPTIONS_GLOBAL, g_nGame);
- load_options(pDefaultOpts, OPTIONS_GLOBAL, -2);
-
- /* Stash the result for comparing later */
- //CreateGameOptions(pOrigOpts, OPTIONS_TYPE_GLOBAL);
+ load_options(pCurrentOpts, OPTIONS_GLOBAL, g_nGame, 0);
+ load_options(pOrigOpts, OPTIONS_GLOBAL, g_nGame, 0);
+ load_options(pDefaultOpts, OPTIONS_GLOBAL, -2, 0);
g_nPropertyMode = OPTIONS_GLOBAL;
BuildDataMap();
+ PROPSHEETHEADER pshead;
ZeroMemory(&pshead, sizeof(pshead));
- pspage = CreatePropSheetPages(hInst, TRUE, -1, &pshead.nPages, FALSE);
+ PROPSHEETPAGE *pspage;
+ pspage = CreatePropSheetPages(hInst, true, -1, &pshead.nPages, false);
if (!pspage)
return;
@@ -477,11 +468,6 @@ void InitPropertyPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYPE opt_
void InitPropertyPageToPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYPE opt_type, int folder_id, int game_num, int start_page )
{
- PROPSHEETHEADER pshead;
- PROPSHEETPAGE *pspage;
- TCHAR* t_description = 0;
-/// OPTIONS_TYPE default_type = opt_type;
-
if (highlight_brush == NULL)
highlight_brush = CreateSolidBrush(HIGHLIGHT_COLOR);
@@ -489,15 +475,17 @@ void InitPropertyPageToPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYP
background_brush = CreateSolidBrush(GetSysColor(COLOR_3DFACE));
// Initialize the options
- load_options(pCurrentOpts, opt_type, game_num);
- load_options(pOrigOpts, opt_type, game_num);
+ windows_options dummy;
+ OptionsCopy(dummy,pDefaultOpts);
+ OptionsCopy(dummy,pOrigOpts);
+ OptionsCopy(dummy,pCurrentOpts);
+
+ load_options(pCurrentOpts, opt_type, game_num, 1);
+ load_options(pOrigOpts, opt_type, game_num, 1);
if (game_num == GLOBAL_OPTIONS)
- load_options(pDefaultOpts, OPTIONS_GLOBAL, -2); // base opts is the backup for global
+ load_options(pDefaultOpts, OPTIONS_GLOBAL, -2, 0); // base opts is the backup for global
else
- load_options(pDefaultOpts, OPTIONS_GLOBAL, -1); // global is the backup for games
-
- // Copy current_options to original options
-/// CreateGameOptions(pOrigOpts, OPTIONS_TYPE_GLOBAL);
+ load_options(pDefaultOpts, OPTIONS_GLOBAL, -1, 0); // global is the backup for games
// Copy icon to use for the property pages
g_hIcon = CopyIcon(hIcon);
@@ -509,34 +497,32 @@ void InitPropertyPageToPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYP
// Keep track of OPTIONS_TYPE that was passed in.
g_nPropertyMode = opt_type;
- // Evaluate if the current set uses the Default set
- //g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- //g_bReset = FALSE;
BuildDataMap();
+ PROPSHEETHEADER pshead;
ZeroMemory(&pshead, sizeof(PROPSHEETHEADER));
// Set the game to audit to this game
// Create the property sheets
+ PROPSHEETPAGE *pspage;
if( OPTIONS_GAME == opt_type )
{
InitGameAudit(game_num);
-// pspage = CreatePropSheetPages(hInst, FALSE, &driver_list::driver(game_num), &pshead.nPages, TRUE);
- pspage = CreatePropSheetPages(hInst, FALSE, game_num, &pshead.nPages, TRUE);
+ pspage = CreatePropSheetPages(hInst, false, game_num, &pshead.nPages, true);
}
else
- pspage = CreatePropSheetPages(hInst, FALSE, -1, &pshead.nPages, FALSE);
+ pspage = CreatePropSheetPages(hInst, false, -1, &pshead.nPages, false);
if (!pspage)
return;
-
// Get the description use as the dialog caption.
+ TCHAR* t_description = 0;
switch( opt_type )
{
case OPTIONS_GAME:
- t_description = ui_wstring_from_utf8(ModifyThe(driver_list::driver(g_nGame).description));
+ t_description = ui_wstring_from_utf8(ModifyThe(driver_list::driver(g_nGame).type.fullname()));
break;
case OPTIONS_SOURCE:
t_description = ui_wstring_from_utf8(GetDriverFilename(g_nGame));
@@ -578,76 +564,101 @@ void InitPropertyPageToPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYP
/*********************************************************************
* Local Functions
*********************************************************************/
+#define WINUI_ARRAY_LENGTH(x) (sizeof(x) / sizeof(x[0]))
/* Build CPU info string */
-static char *GameInfoCPU(UINT nIndex)
+static char *GameInfoCPU(int nIndex)
{
- static char buf[1024];
- machine_config config(driver_list::driver(nIndex),pCurrentOpts);
- ZeroMemory(buf, sizeof(buf));
+ machine_config config(driver_list::driver(nIndex), MameUIGlobal());
+ execute_interface_iterator cpuiter(config.root_device());
+ std::unordered_set<std::string> exectags;
+ static char buffer[1024];
- for (device_execute_interface &cpu : execute_interface_iterator(config.root_device()))
+ memset(&buffer, 0, sizeof(buffer));
+
+ for (device_execute_interface &exec : cpuiter)
{
- if (cpu.device().clock() >= 1000000)
+ if (!exectags.insert(exec.device().tag()).second)
+ continue;
+
+ char temp[300];
+ int count = 1;
+ int clock = exec.device().clock();
+ const char *name = exec.device().name();
+
+ for (device_execute_interface &scan : cpuiter)
{
- sprintf(&buf[strlen(buf)], "%s %d.%06d MHz",
- cpu.device().name(),
- cpu.device().clock() / 1000000,
- cpu.device().clock() % 1000000);
+ if (exec.device().type() == scan.device().type() && strcmp(name, scan.device().name()) == 0 && clock == scan.device().clock())
+ if (exectags.insert(scan.device().tag()).second)
+ count++;
}
- else
+
+ if (count > 1)
{
- sprintf(&buf[strlen(buf)], "%s %d.%03d kHz",
- cpu.device().name(),
- cpu.device().clock() / 1000,
- cpu.device().clock() % 1000);
+ snprintf(temp, WINUI_ARRAY_LENGTH(temp), "%d x ", count);
+ strcat(buffer, temp);
}
- strcat(buf, "\n");
+ if (clock >= 1000000)
+ snprintf(temp, WINUI_ARRAY_LENGTH(temp), "%s %d.%06d MHz\r\n", name, clock / 1000000, clock % 1000000);
+ else
+ snprintf(temp, WINUI_ARRAY_LENGTH(temp), "%s %d.%03d kHz\r\n", name, clock / 1000, clock % 1000);
+
+ strcat(buffer, temp);
}
- return buf;
+ return buffer;
}
/* Build Sound system info string */
-static char *GameInfoSound(UINT nIndex)
+static char *GameInfoSound(int nIndex)
{
- static char buf[1024];
+ machine_config config(driver_list::driver(nIndex), MameUIGlobal());
+ sound_interface_iterator sounditer(config.root_device());
+ std::unordered_set<std::string> soundtags;
+ static char buffer[1024];
- buf[0] = 0;
+ memset(&buffer, 0, sizeof(buffer));
- machine_config config(driver_list::driver(nIndex),pCurrentOpts);
-
- /* iterate over sound chips */
- for (device_sound_interface &sound : sound_interface_iterator(config.root_device()))
+ for (device_sound_interface &sound : sounditer)
{
- char tmpname[1024];
-
- sprintf(tmpname,"%s",sound.device().name());
+ if (!soundtags.insert(sound.device().tag()).second)
+ continue;
+ char temp[300];
+ int count = 1;
int clock = sound.device().clock();
+ const char *name = sound.device().name();
+
+ for (device_sound_interface &scan : sounditer)
+ {
+ if (sound.device().type() == scan.device().type() && strcmp(name, scan.device().name()) == 0 && clock == scan.device().clock())
+ if (soundtags.insert(scan.device().tag()).second)
+ count++;
+ }
- sprintf(&buf[strlen(buf)],"%s",tmpname);
+ if (count > 1)
+ {
+ snprintf(temp, WINUI_ARRAY_LENGTH(temp), "%d x ", count);
+ strcat(buffer, temp);
+ }
+
+ strcat(buffer, name);
if (clock)
{
if (clock >= 1000000)
- {
- sprintf(&buf[strlen(buf)]," %d.%06d MHz",
- clock / 1000000,
- clock % 1000000);
- }
+ snprintf(temp, WINUI_ARRAY_LENGTH(temp), " %d.%06d MHz", clock / 1000000, clock % 1000000);
else
- {
- sprintf(&buf[strlen(buf)]," %d.%03d kHz",
- clock / 1000,
- clock % 1000);
- }
+ snprintf(temp, WINUI_ARRAY_LENGTH(temp), " %d.%03d kHz", clock / 1000, clock % 1000);
+
+ strcat(buffer, temp);
}
- strcat(buf,"\n");
+ strcat(buffer, "\r\n");
}
- return buf;
+
+ return buffer;
}
/* Build Display info string */
@@ -672,7 +683,7 @@ static char *GameInfoScreen(UINT nIndex)
char tmpbuf[256];
const rectangle &visarea = screen.visible_area();
- if (driver_list::driver(nIndex).flags & ORIENTATION_SWAP_XY)
+ if (BIT(GetDriverCacheLower(nIndex), 2)) //ORIENTATION_SWAP_XY
{
sprintf(tmpbuf,"%d x %d (V) %f Hz\n",
visarea.max_y - visarea.min_y + 1,
@@ -698,61 +709,66 @@ static char *GameInfoScreen(UINT nIndex)
const char *GameInfoStatus(int driver_index, BOOL bRomStatus)
{
static char buffer[1024];
- int audit_result = GetRomAuditResults(driver_index);
memset(buffer,0,sizeof(char)*1024);
+ if (driver_index < 0)
+ return buffer;
+
+ int audit_result = GetRomAuditResults(driver_index);
+ uint32_t cache = GetDriverCacheLower(driver_index);
if ( bRomStatus )
{
- if (IsAuditResultKnown(audit_result) == FALSE)
+ if (IsAuditResultKnown(audit_result) == false)
strcpy(buffer, "Unknown");
- else if (IsAuditResultYes(audit_result))
+ else
+ if (IsAuditResultYes(audit_result))
{
if (DriverIsBroken(driver_index))
{
strcpy(buffer, "Not working");
- if (driver_list::driver(driver_index).flags & MACHINE_UNEMULATED_PROTECTION)
+ if (BIT(cache, 22))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Game protection isn't fully emulated");
}
- if (driver_list::driver(driver_index).flags & MACHINE_WRONG_COLORS)
+ if (BIT(cache, 21))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Colors are completely wrong");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_COLORS)
+ if (BIT(cache, 20))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Colors aren't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_GRAPHICS)
+ if (BIT(cache, 18))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Video emulation isn't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_NO_SOUND)
+ if (BIT(cache, 17))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Game lacks sound");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_SOUND)
+ if (BIT(cache, 16))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Sound emulation isn't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_NO_COCKTAIL)
+ if (BIT(cache, 8))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Screen flipping is not supported");
}
- if (driver_list::driver(driver_index).flags & MACHINE_REQUIRES_ARTWORK)
+ if (BIT(cache, 10))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
@@ -763,49 +779,49 @@ const char *GameInfoStatus(int driver_index, BOOL bRomStatus)
{
strcpy(buffer, "Working");
- if (driver_list::driver(driver_index).flags & MACHINE_UNEMULATED_PROTECTION)
+ if (BIT(cache, 22))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Game protection isn't fully emulated");
}
- if (driver_list::driver(driver_index).flags & MACHINE_WRONG_COLORS)
+ if (BIT(cache, 21))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Colors are completely wrong");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_COLORS)
+ if (BIT(cache, 20))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Colors aren't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_GRAPHICS)
+ if (BIT(cache, 18))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Video emulation isn't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_NO_SOUND)
+ if (BIT(cache, 17))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Game lacks sound");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_SOUND)
+ if (BIT(cache, 16))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Sound emulation isn't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_NO_COCKTAIL)
+ if (BIT(cache, 8))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Screen flipping is not supported");
}
- if (driver_list::driver(driver_index).flags & MACHINE_REQUIRES_ARTWORK)
+ if (BIT(cache, 10))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
@@ -814,65 +830,60 @@ const char *GameInfoStatus(int driver_index, BOOL bRomStatus)
}
}
else
- {
// audit result is no
strcpy(buffer, "BIOS missing");
- }
}
else
{
//Just show the emulation flags
if (DriverIsBroken(driver_index))
- {
strcpy(buffer, "Not working");
- }
else
- {
strcpy(buffer, "Working");
- }
- if (driver_list::driver(driver_index).flags & MACHINE_UNEMULATED_PROTECTION)
+
+ if (BIT(cache, 22))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Game protection isn't fully emulated");
}
- if (driver_list::driver(driver_index).flags & MACHINE_WRONG_COLORS)
+ if (BIT(cache, 21))
{
- if (*buffer != '\0')
+ if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Colors are completely wrong");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_COLORS)
+ if (BIT(cache, 20))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Colors aren't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_GRAPHICS)
+ if (BIT(cache, 18))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Video emulation isn't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_NO_SOUND)
+ if (BIT(cache, 17))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Game lacks sound");
}
- if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_SOUND)
+ if (BIT(cache, 16))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Sound emulation isn't 100% accurate");
}
- if (driver_list::driver(driver_index).flags & MACHINE_NO_COCKTAIL)
+ if (BIT(cache, 8))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
strcat(buffer, "Screen flipping is not supported");
}
- if (driver_list::driver(driver_index).flags & MACHINE_REQUIRES_ARTWORK)
+ if (BIT(cache, 10))
{
if (*buffer != '\0')
strcat(buffer, "\r\n");
@@ -906,7 +917,7 @@ char *GameInfoTitle(OPTIONS_TYPE opt_type, UINT nIndex)
strcpy(buf, "Global vector options");
else
if (OPTIONS_GAME == opt_type)
- sprintf(buf, "%s\n\"%s\"", ModifyThe(driver_list::driver(nIndex).description), driver_list::driver(nIndex).name);
+ sprintf(buf, "%s\n\"%s\"", ModifyThe(driver_list::driver(nIndex).type.fullname()), driver_list::driver(nIndex).name);
return buf;
}
@@ -922,7 +933,7 @@ static char *GameInfoCloneOf(UINT nIndex)
{
nParentIndex = GetParentIndex(&driver_list::driver(nIndex));
sprintf(buf, "%s - \"%s\"",
- ConvertAmpersandString(ModifyThe(driver_list::driver(nParentIndex).description)),
+ ConvertAmpersandString(ModifyThe(driver_list::driver(nParentIndex).type.fullname())),
driver_list::driver(nParentIndex).name);
}
@@ -951,9 +962,9 @@ HWND hWnd;
}
#endif
- win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_TITLE), GameInfoTitle(g_nPropertyMode, g_nGame));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_TITLE), GameInfoTitle(g_nPropertyMode, g_nGame));
win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_MANUFACTURED), GameInfoManufactured(g_nGame));
- win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_STATUS), GameInfoStatus(g_nGame, FALSE));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_STATUS), GameInfoStatus(g_nGame, false));
win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_CPU), GameInfoCPU(g_nGame));
win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_SOUND), GameInfoSound(g_nGame));
win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_SCREEN), GameInfoScreen(g_nGame));
@@ -974,12 +985,9 @@ HWND hWnd;
}
/* Handle all options property pages */
-// NOTE you cannot just say opts1=opts2, although in theory it should work, in practice opts1 becomes null.
INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
- BOOL g_bUseDefaults = 0, g_bReset = 0;
- //d3d_version = pCurrentOpts.int_value(WINOPTION_D3DVERSION);
-
+ BOOL g_bUseDefaults = false, g_bReset = false;
switch (Msg)
{
@@ -991,8 +999,8 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
// Default button doesn't exist on Default settings
// if (g_nGame == GLOBAL_OPTIONS)
@@ -1008,7 +1016,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
case WM_HSCROLL:
/* slider changed */
HANDLE_WM_HSCROLL(hDlg, wParam, lParam, OptOnHScroll);
- EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), true);
// Enable Apply button
PropSheet_Changed(GetParent(hDlg), hDlg);
@@ -1017,7 +1025,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
// redraw it, it might be a new color now
- InvalidateRect((HWND)lParam,NULL,TRUE);
+ InvalidateRect((HWND)lParam,NULL,true);
break;
@@ -1027,7 +1035,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
WORD wID = GET_WM_COMMAND_ID(wParam, lParam);
HWND hWndCtrl = GET_WM_COMMAND_HWND(wParam, lParam);
WORD wNotifyCode = GET_WM_COMMAND_CMD(wParam, lParam);
- BOOL changed = FALSE;
+ BOOL changed = false;
int nCurSelection = 0;
TCHAR szClass[256];
@@ -1037,7 +1045,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
if (wNotifyCode == LBN_SELCHANGE)
{
RefreshSelectionChange(hDlg, hWndCtrl);
- changed = TRUE;
+ changed = true;
}
break;
@@ -1045,7 +1053,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
nCurSelection = Button_GetCheck( GetDlgItem(hDlg, IDC_ASPECT));
if( g_bAutoAspect[GetSelectedScreen(hDlg)] != nCurSelection )
{
- changed = TRUE;
+ changed = true;
g_bAutoAspect[GetSelectedScreen(hDlg)] = nCurSelection;
}
break;
@@ -1054,7 +1062,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
nCurSelection = Button_GetCheck( GetDlgItem(hDlg, IDC_SNAPSIZE));
if( g_bAutoSnapSize != nCurSelection )
{
- changed = TRUE;
+ changed = true;
g_bAutoSnapSize = nCurSelection;
}
break;
@@ -1093,8 +1101,8 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
// The original options become the current options.
UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
// Turn off Apply
PropSheet_UnChanged(GetParent(hDlg), hDlg);
EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
@@ -1111,8 +1119,8 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
// The original options become the current options.
UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
// Enable/Disable the Reset to Defaults button
EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
@@ -1137,7 +1145,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
//MSH 20070814 - Hate to do this, but its either this, or update each individual
// control on the SCREEN tab.
UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
- changed = TRUE;
+ changed = true;
/* NOT USED *************
datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_SCREENSELECT);
datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_SCREEN);
@@ -1150,13 +1158,14 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
strcmp(options_get_string(pCurrentOpts, "screen1"), options_get_string(pOrigOpts, "screen1")!=0) ||
strcmp(options_get_string(pCurrentOpts, "screen2"), options_get_string(pOrigOpts, "screen2")!=0) ||
strcmp(options_get_string(pCurrentOpts, "screen3"), options_get_string(pOrigOpts, "screen3")!=0))
- changed = TRUE;
+ changed = true;
************************************* */
}
break;
default:
#ifdef MESS
if (MessPropertiesCommand(hDlg, wNotifyCode, wID, &changed))
+ // To Do: add a hook to MessReadMountedSoftware(drvindex); so the software will update itself when the folder is configured
break;
#endif
@@ -1177,14 +1186,14 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
break;
}
- if (changed == TRUE)
+ if (changed == true)
{
// make sure everything's copied over, to determine what's changed
UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
// enable the apply button
PropSheet_Changed(GetParent(hDlg), hDlg);
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
}
@@ -1203,8 +1212,8 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
case PSN_SETACTIVE:
/* Initialize the controls. */
UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
break;
@@ -1216,7 +1225,7 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
//if (bClosing)
//{
//if (NULL == pCurrentOpts)
- //return TRUE;
+ //return true;
//}
// Read the datamap
@@ -1227,8 +1236,8 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
// Repopulate the controls? WTF? We just read them, they should be fine.
UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
@@ -1239,29 +1248,29 @@ INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
PropSheet_UnChanged(GetParent(hDlg), hDlg);
SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
- return TRUE;
+ return true;
case PSN_KILLACTIVE:
/* Save Changes to the options here. */
UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
// Determine button states.
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
ResetDataMap(hDlg);
- SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE);
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, false);
return 1;
case PSN_RESET:
// Reset to the original values. Disregard changes
//pCurrentOpts = pOrigOpts;
- g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
- g_bReset = (pCurrentOpts != pOrigOpts);
+ g_bUseDefaults = AreOptionsEqual(pCurrentOpts, pDefaultOpts) ? false : true;
+ g_bReset = AreOptionsEqual(pCurrentOpts, pOrigOpts) ? false : true;
EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
- SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE);
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, false);
break;
case PSN_HELP:
@@ -1291,7 +1300,6 @@ static void PropToOptions(HWND hWnd, windows_options &o)
HWND hCtrl;
HWND hCtrl2;
HWND hCtrl3;
- std::string error_string;
/* aspect ratio */
hCtrl = GetDlgItem(hWnd, IDC_ASPECTRATION);
@@ -1304,7 +1312,7 @@ static void PropToOptions(HWND hWnd, windows_options &o)
if (Button_GetCheck(hCtrl3))
{
- o.set_value(aspect_option, "auto", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(aspect_option, "auto", OPTION_PRIORITY_CMDLINE);
}
else
{
@@ -1326,7 +1334,7 @@ static void PropToOptions(HWND hWnd, windows_options &o)
}
snprintf(buffer2, sizeof(buffer2), "%d:%d", n, d);
- o.set_value(aspect_option, buffer2, OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(aspect_option, buffer2, OPTION_PRIORITY_CMDLINE);
}
}
/* aspect ratio */
@@ -1337,7 +1345,7 @@ static void PropToOptions(HWND hWnd, windows_options &o)
{
if (Button_GetCheck(hCtrl3))
{
- o.set_value(OPTION_SNAPSIZE, "auto", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_SNAPSIZE, "auto", OPTION_PRIORITY_CMDLINE);
}
else
{
@@ -1359,7 +1367,7 @@ static void PropToOptions(HWND hWnd, windows_options &o)
}
snprintf(buffer2, sizeof(buffer2), "%dx%d", width, height);
- o.set_value(OPTION_SNAPSIZE, buffer2, OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_SNAPSIZE, buffer2, OPTION_PRIORITY_CMDLINE);
}
}
}
@@ -1384,7 +1392,6 @@ static void UpdateProperties(HWND hDlg, datamap *map, windows_options &opts)
/* Populate controls that are not handled in the DataMap */
static void OptionsToProp(HWND hWnd, windows_options& o)
{
- HWND hCtrl;
HWND hCtrl2;
TCHAR buf[100];
int n = 0;
@@ -1400,7 +1407,7 @@ static void OptionsToProp(HWND hWnd, windows_options& o)
/* Setup Select screen*/
UpdateSelectScreenUI(hWnd );
- hCtrl = GetDlgItem(hWnd, IDC_ASPECT);
+ HWND hCtrl = GetDlgItem(hWnd, IDC_ASPECT);
if (hCtrl)
{
Button_SetCheck(hCtrl, g_bAutoAspect[GetSelectedScreen(hWnd)] ) ;
@@ -1439,13 +1446,13 @@ static void OptionsToProp(HWND hWnd, windows_options& o)
snprintf(aspect_option, ARRAY_LENGTH(aspect_option), "aspect%d", GetSelectedScreen(hWnd));
if( strcmp(o.value(aspect_option), "auto") == 0)
{
- Button_SetCheck(hCtrl, TRUE);
- g_bAutoAspect[GetSelectedScreen(hWnd)] = TRUE;
+ Button_SetCheck(hCtrl, true);
+ g_bAutoAspect[GetSelectedScreen(hWnd)] = true;
}
else
{
- Button_SetCheck(hCtrl, FALSE);
- g_bAutoAspect[GetSelectedScreen(hWnd)] = FALSE;
+ Button_SetCheck(hCtrl, false);
+ g_bAutoAspect[GetSelectedScreen(hWnd)] = false;
}
}
@@ -1485,8 +1492,7 @@ static void OptionsToProp(HWND hWnd, windows_options& o)
const char* effect = o.value(OPTION_EFFECT);
if (effect == NULL) {
effect = "none";
- std::string error_string;
- o.set_value(OPTION_EFFECT, effect, OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_EFFECT, effect, OPTION_PRIORITY_CMDLINE);
}
win_set_window_text_utf8(hCtrl, effect);
}
@@ -1495,13 +1501,13 @@ static void OptionsToProp(HWND hWnd, windows_options& o)
{
if( strcmp(o.value(OPTION_SNAPSIZE), "auto") == 0)
{
- Button_SetCheck(hCtrl, TRUE);
- g_bAutoSnapSize = TRUE;
+ Button_SetCheck(hCtrl, true);
+ g_bAutoSnapSize = true;
}
else
{
- Button_SetCheck(hCtrl, FALSE);
- g_bAutoSnapSize = FALSE;
+ Button_SetCheck(hCtrl, false);
+ g_bAutoSnapSize = false;
}
}
/* snapshot size */
@@ -1538,17 +1544,19 @@ static void OptionsToProp(HWND hWnd, windows_options& o)
/* Adjust controls - tune them to the currently selected game */
static void SetPropEnabledControls(HWND hWnd)
{
- //HWND hCtrl;
- bool useart = TRUE;
- BOOL joystick_attached = FALSE;
- bool in_window = FALSE;
+ bool useart = true;
+ BOOL joystick_attached = false;
+ bool in_window = false;
int nIndex = g_nGame;
// auto is a reserved word
bool autov = (core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "auto")==0);
bool d3d = (core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "d3d")==0) | autov;
- bool ddraw = 0;//(core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "ddraw")==0) | autov;
- //bool gdi = (core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "gdi")==0) | autov;
+#ifdef UI_DIRECTDRAW
+ bool ddraw = (core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "ddraw")==0) | autov;
+#else
+ bool ddraw = false;
+#endif
in_window = pCurrentOpts.bool_value(OSDOPTION_WINDOW);
Button_SetCheck(GetDlgItem(hWnd, IDC_ASPECT), g_bAutoAspect[GetSelectedScreen(hWnd)] );
@@ -1558,9 +1566,13 @@ static void SetPropEnabledControls(HWND hWnd)
EnableWindow(GetDlgItem(hWnd, IDC_PRESCALE), d3d|ddraw);
EnableWindow(GetDlgItem(hWnd, IDC_PRESCALEDISP), d3d|ddraw);
EnableWindow(GetDlgItem(hWnd, IDC_PRESCALETEXT), d3d|ddraw);
+#ifdef UI_DIRECTDRAW
EnableWindow(GetDlgItem(hWnd, IDC_HWSTRETCH), ddraw && DirectDraw_HasHWStretch());
- EnableWindow(GetDlgItem(hWnd, IDC_SWITCHRES), TRUE);
- EnableWindow(GetDlgItem(hWnd, IDC_SYNCREFRESH), TRUE);
+#else
+ EnableWindow(GetDlgItem(hWnd, IDC_HWSTRETCH), false);
+#endif
+ EnableWindow(GetDlgItem(hWnd, IDC_SWITCHRES), true);
+ EnableWindow(GetDlgItem(hWnd, IDC_SYNCREFRESH), true);
EnableWindow(GetDlgItem(hWnd, IDC_REFRESH), !in_window);
EnableWindow(GetDlgItem(hWnd, IDC_REFRESHTEXT), !in_window);
EnableWindow(GetDlgItem(hWnd, IDC_FSGAMMA), !in_window);
@@ -1582,11 +1594,12 @@ static void SetPropEnabledControls(HWND hWnd)
EnableWindow(GetDlgItem(hWnd, IDC_SNAPSIZEWIDTH), !g_bAutoSnapSize);
EnableWindow(GetDlgItem(hWnd, IDC_SNAPSIZEX), !g_bAutoSnapSize);
- EnableWindow(GetDlgItem(hWnd,IDC_D3D_FILTER),d3d);
- EnableWindow(GetDlgItem(hWnd,IDC_D3D_VERSION),(NUMD3DVERSIONS>1) & d3d);
+ EnableWindow(GetDlgItem(hWnd, IDC_D3D_FILTER),d3d);
+#ifdef D3DVERSION
+ EnableWindow(GetDlgItem(hWnd, IDC_D3D_VERSION),(NUMD3DVERSIONS>1) & d3d);
+#endif
//Switchres and D3D or ddraw enable the per screen parameters
-
EnableWindow(GetDlgItem(hWnd, IDC_NUMSCREENS), ddraw | d3d);
EnableWindow(GetDlgItem(hWnd, IDC_NUMSCREENSDISP), ddraw | d3d);
EnableWindow(GetDlgItem(hWnd, IDC_SCREENSELECT), ddraw | d3d);
@@ -1612,9 +1625,9 @@ static void SetPropEnabledControls(HWND hWnd)
EnableWindow(GetDlgItem(hWnd, IDC_JSAT), joystick_attached);
/* Trackball / Mouse options */
if (nIndex <= -1 || DriverUsesTrackball(nIndex) || DriverUsesLightGun(nIndex))
- Button_Enable(GetDlgItem(hWnd,IDC_USE_MOUSE),TRUE);
+ Button_Enable(GetDlgItem(hWnd,IDC_USE_MOUSE),true);
else
- Button_Enable(GetDlgItem(hWnd,IDC_USE_MOUSE),FALSE);
+ Button_Enable(GetDlgItem(hWnd,IDC_USE_MOUSE),false);
if (!in_window && (nIndex <= -1 || DriverUsesLightGun(nIndex)))
{
@@ -1637,16 +1650,16 @@ static void SetPropEnabledControls(HWND hWnd)
{
BOOL use_lightgun;
//XP and above...
- Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),FALSE);
+ Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),false);
use_lightgun = Button_GetCheck(GetDlgItem(hWnd,IDC_USE_MOUSE));
- Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),FALSE);
+ Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),false);
Button_Enable(GetDlgItem(hWnd,IDC_RELOAD),use_lightgun);
}
else
{
BOOL use_lightgun;
// Older than XP
- Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),TRUE);
+ Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),true);
use_lightgun = Button_GetCheck(GetDlgItem(hWnd,IDC_LIGHTGUN));
Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),use_lightgun);
Button_Enable(GetDlgItem(hWnd,IDC_RELOAD),use_lightgun);
@@ -1654,9 +1667,9 @@ static void SetPropEnabledControls(HWND hWnd)
}
else
{
- Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),FALSE);
- Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),FALSE);
- Button_Enable(GetDlgItem(hWnd,IDC_RELOAD),FALSE);
+ Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),false);
+ Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),false);
+ Button_Enable(GetDlgItem(hWnd,IDC_RELOAD),false);
}
@@ -1673,14 +1686,14 @@ static void SetPropEnabledControls(HWND hWnd)
SetSamplesEnabled(hWnd, nIndex, sound);
if (Button_GetCheck(GetDlgItem(hWnd, IDC_AUTOFRAMESKIP)))
- EnableWindow(GetDlgItem(hWnd, IDC_FRAMESKIP), FALSE);
+ EnableWindow(GetDlgItem(hWnd, IDC_FRAMESKIP), false);
else
EnableWindow(GetDlgItem(hWnd, IDC_FRAMESKIP), 1);
if (nIndex <= -1 || DriverHasOptionalBIOS(nIndex))
- EnableWindow(GetDlgItem(hWnd,IDC_BIOS),TRUE);
+ EnableWindow(GetDlgItem(hWnd,IDC_BIOS),true);
else
- EnableWindow(GetDlgItem(hWnd,IDC_BIOS),FALSE);
+ EnableWindow(GetDlgItem(hWnd,IDC_BIOS),false);
}
@@ -1705,21 +1718,20 @@ static BOOL RotateReadControl(datamap *map, HWND dialog, HWND control, windows_o
else if (opts->bool_value(OPTION_AUTOROL))
original_selection = 5;
- // Any work to do? If so, make the changes and return TRUE.
+ // Any work to do? If so, make the changes and return true.
if (selected_index != original_selection)
{
// Set the options based on the new selection.
- std::string error_string;
- opts->set_value(OPTION_ROR, selected_index == 1, OPTION_PRIORITY_CMDLINE,error_string);
- opts->set_value(OPTION_ROL, selected_index == 2, OPTION_PRIORITY_CMDLINE,error_string);
- opts->set_value(OPTION_ROTATE, selected_index != 3, OPTION_PRIORITY_CMDLINE,error_string);
- opts->set_value(OPTION_AUTOROR, selected_index == 4, OPTION_PRIORITY_CMDLINE,error_string);
- opts->set_value(OPTION_AUTOROL, selected_index == 5, OPTION_PRIORITY_CMDLINE,error_string);
- return TRUE;
+ opts->set_value(OPTION_ROR, selected_index == 1, OPTION_PRIORITY_CMDLINE);
+ opts->set_value(OPTION_ROL, selected_index == 2, OPTION_PRIORITY_CMDLINE);
+ opts->set_value(OPTION_ROTATE, selected_index != 3, OPTION_PRIORITY_CMDLINE);
+ opts->set_value(OPTION_AUTOROR, selected_index == 4, OPTION_PRIORITY_CMDLINE);
+ opts->set_value(OPTION_AUTOROL, selected_index == 5, OPTION_PRIORITY_CMDLINE);
+ return true;
}
// No changes
- return FALSE;
+ return false;
}
@@ -1740,7 +1752,7 @@ static BOOL RotatePopulateControl(datamap *map, HWND dialog, HWND control, windo
res = ComboBox_SetCurSel(control, selected_index);
res++;
- return FALSE;
+ return false;
}
@@ -1748,20 +1760,14 @@ static BOOL RotatePopulateControl(datamap *map, HWND dialog, HWND control, windo
static BOOL ScreenReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
{
char screen_option_name[32];
- TCHAR *screen_option_value;
- int selected_screen;
- int screen_option_index;
- char *op_val;
- std::string error_string;
-
- selected_screen = GetSelectedScreen(dialog);
- screen_option_index = ComboBox_GetCurSel(control);
- screen_option_value = (TCHAR*) ComboBox_GetItemData(control, screen_option_index);
+ int selected_screen = GetSelectedScreen(dialog);
+ int screen_option_index = ComboBox_GetCurSel(control);
+ TCHAR *screen_option_value = (TCHAR*) ComboBox_GetItemData(control, screen_option_index);
snprintf(screen_option_name, ARRAY_LENGTH(screen_option_name), "screen%d", selected_screen);
- op_val = ui_utf8_from_wstring(screen_option_value);
- opts->set_value(screen_option_name, op_val, OPTION_PRIORITY_CMDLINE,error_string);
+ char *op_val = ui_utf8_from_wstring(screen_option_value);
+ opts->set_value(screen_option_name, op_val, OPTION_PRIORITY_CMDLINE);
free(op_val);
- return FALSE;
+ return false;
}
@@ -1796,7 +1802,7 @@ static BOOL ScreenPopulateControl(datamap *map, HWND dialog, HWND control, windo
snprintf(screen_option, ARRAY_LENGTH(screen_option), "screen%d", GetSelectedScreen(dialog));
t_option = ui_wstring_from_utf8(opts->value(screen_option));
if( !t_option )
- return FALSE;
+ return false;
if (_tcscmp(t_option, dd.DeviceName) == 0)
nSelection = i+1;
free(t_option);
@@ -1804,7 +1810,7 @@ static BOOL ScreenPopulateControl(datamap *map, HWND dialog, HWND control, windo
}
res = ComboBox_SetCurSel(control, nSelection);
res++;
- return FALSE;
+ return false;
}
@@ -1816,17 +1822,15 @@ static void ViewSetOptionName(datamap *map, HWND dialog, HWND control, char *buf
static BOOL ViewPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
{
- int res, i;
int selected_index = 0;
char view_option[32];
- const char *view;
// determine the view option value
snprintf(view_option, ARRAY_LENGTH(view_option), "view%d", GetSelectedScreen(dialog));
- view = opts->value(view_option);
+ const char *view = opts->value(view_option);
- res = ComboBox_ResetContent(control);
- for (i = 0; i < NUMVIEW; i++)
+ int res = ComboBox_ResetContent(control);
+ for (int i = 0; i < NUMVIEW; i++)
{
res = ComboBox_InsertString(control, i, g_ComboBoxView[i].m_pText);
res = ComboBox_SetItemData(control, i, g_ComboBoxView[i].m_pData);
@@ -1836,20 +1840,18 @@ static BOOL ViewPopulateControl(datamap *map, HWND dialog, HWND control, windows
}
res = ComboBox_SetCurSel(control, selected_index);
res++;
- return FALSE;
+ return false;
}
static BOOL SnapViewPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
{
- int res, i;
int selected_index = 0;
- const char *snapview;
// determine the snapview option value
- snapview = opts->value(OPTION_SNAPVIEW);
+ const char *snapview = opts->value(OPTION_SNAPVIEW);
- res = ComboBox_ResetContent(control);
- for (i = 0; i < NUMSNAPVIEW; i++)
+ int res = ComboBox_ResetContent(control);
+ for (int i = 0; i < NUMSNAPVIEW; i++)
{
res = ComboBox_InsertString(control, i, g_ComboBoxSnapView[i].m_pText);
res = ComboBox_SetItemData(control, i, g_ComboBoxSnapView[i].m_pData);
@@ -1859,71 +1861,61 @@ static BOOL SnapViewPopulateControl(datamap *map, HWND dialog, HWND control, win
}
res = ComboBox_SetCurSel(control, selected_index);
res++;
- return FALSE;
+ return false;
}
static BOOL DefaultInputReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
{
- TCHAR *input_option_value;
- int input_option_index;
- char *op_val = NULL;
- std::string error_string;
-
- input_option_index = ComboBox_GetCurSel(control);
- input_option_value = (TCHAR*) ComboBox_GetItemData(control, input_option_index);
- op_val = ui_utf8_from_wstring(input_option_value);
- opts->set_value(OPTION_CTRLR, input_option_index ? op_val : "", OPTION_PRIORITY_CMDLINE,error_string);
+ int input_option_index = ComboBox_GetCurSel(control);
+ TCHAR *input_option_value = (TCHAR*) ComboBox_GetItemData(control, input_option_index);
+ char *op_val = ui_utf8_from_wstring(input_option_value);
+ opts->set_value(OPTION_CTRLR, input_option_index ? op_val : "", OPTION_PRIORITY_CMDLINE);
free(op_val);
- return FALSE;
+ return false;
}
static BOOL DefaultInputPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
{
- WIN32_FIND_DATA FindFileData;
- HANDLE hFind;
- TCHAR *ext;
TCHAR root[256];
TCHAR path[256];
int selected = 0;
- int res, index = 0;
+ int index = 0;
LPCTSTR t_ctrlr_option = 0;
LPTSTR t_buf = 0;
- const char *ctrlr_option;
- TCHAR* t_ctrldir;
// determine the ctrlr option
- ctrlr_option = opts->value(OPTION_CTRLR);
+ const char *ctrlr_option = opts->value(OPTION_CTRLR);
if( ctrlr_option )
{
t_buf = ui_wstring_from_utf8(ctrlr_option);
if( !t_buf )
- return FALSE;
+ return false;
t_ctrlr_option = t_buf;
}
else
- {
t_ctrlr_option = TEXT("");
- }
// reset the controllers dropdown
- res = ComboBox_ResetContent(control);
+ int res = ComboBox_ResetContent(control);
res = ComboBox_InsertString(control, index, TEXT("Default"));
res = ComboBox_SetItemData(control, index, "");
index++;
- t_ctrldir = ui_wstring_from_utf8(GetCtrlrDir());
+ std::string t = GetCtrlrDir();
+ TCHAR *t_ctrldir = ui_wstring_from_utf8(t.c_str());
if( !t_ctrldir )
{
if( t_buf )
free(t_buf);
- return FALSE;
+ return false;
}
_stprintf (path, TEXT("%s\\*.*"), t_ctrldir);
free(t_ctrldir);
- hFind = FindFirstFile(path, &FindFileData);
+ WIN32_FIND_DATA FindFileData;
+ HANDLE hFind = FindFirstFile(path, &FindFileData);
if (hFind != INVALID_HANDLE_VALUE)
{
@@ -1933,7 +1925,7 @@ static BOOL DefaultInputPopulateControl(datamap *map, HWND dialog, HWND control,
_tcscpy (root,FindFileData.cFileName);
// find the extension
- ext = _tcsrchr (root,'.');
+ TCHAR *ext = _tcsrchr (root,'.');
if (ext)
{
// check if it's a cfg file
@@ -1964,7 +1956,7 @@ static BOOL DefaultInputPopulateControl(datamap *map, HWND dialog, HWND control,
free(t_buf);
res++;
- return FALSE;
+ return false;
}
@@ -1979,28 +1971,26 @@ static BOOL ResolutionReadControl(datamap *map, HWND dialog, HWND control, windo
{
HWND refresh_control = GetDlgItem(dialog, IDC_REFRESH);
HWND sizes_control = GetDlgItem(dialog, IDC_SIZES);
- int res = 0, refresh_index = 0, refresh_value = 0, width = 0, height = 0;
+ int res = 0, width = 0, height = 0;
char option_value[256];
- TCHAR buffer[256];
- std::string error_string;
if (refresh_control && sizes_control)
{
+ TCHAR buffer[256];
res = ComboBox_GetText(sizes_control, buffer, ARRAY_LENGTH(buffer) - 1);
if (_stscanf(buffer, TEXT("%d x %d"), &width, &height) == 2)
{
- refresh_index = ComboBox_GetCurSel(refresh_control);
- refresh_value = ComboBox_GetItemData(refresh_control, refresh_index);
+ int refresh_index = ComboBox_GetCurSel(refresh_control);
+ int refresh_value = ComboBox_GetItemData(refresh_control, refresh_index);
snprintf(option_value, ARRAY_LENGTH(option_value), "%dx%d@%d", width, height, refresh_value);
}
else
- {
snprintf(option_value, ARRAY_LENGTH(option_value), "auto");
- }
- opts->set_value(option_name, option_value, OPTION_PRIORITY_CMDLINE,error_string);
+
+ opts->set_value(option_name, option_value, OPTION_PRIORITY_CMDLINE);
}
res++;
- return FALSE;
+ return false;
}
@@ -2094,7 +2084,7 @@ static BOOL ResolutionPopulateControl(datamap *map, HWND dialog, HWND control_,
res = ComboBox_SetCurSel(refresh_control, refresh_selection);
}
res++;
- return FALSE;
+ return false;
}
@@ -2113,8 +2103,7 @@ static void ResetDataMap(HWND hWnd)
|| (core_stricmp(pCurrentOpts.value(screen_option), "") == 0 )
|| (core_stricmp(pCurrentOpts.value(screen_option), "auto") == 0 ) )
{
- std::string error_string;
- pCurrentOpts.set_value(screen_option, "auto", OPTION_PRIORITY_CMDLINE,error_string);
+ pCurrentOpts.set_value(screen_option, "auto", OPTION_PRIORITY_CMDLINE);
}
}
@@ -2238,7 +2227,9 @@ static void BuildDataMap(void)
datamap_add(properties_datamap, IDC_SYNCREFRESH, DM_BOOL, OSDOPTION_SYNCREFRESH);
// Direct3D specific options
+#ifdef D3DVERSION
datamap_add(properties_datamap, IDC_D3D_VERSION, DM_INT, WINOPTION_D3DVERSION);
+#endif
datamap_add(properties_datamap, IDC_D3D_FILTER, DM_BOOL, OSDOPTION_FILTER);
// per window video options
@@ -2339,10 +2330,8 @@ static void BuildDataMap(void)
static void SetSamplesEnabled(HWND hWnd, int nIndex, BOOL bSoundEnabled)
{
- BOOL enabled = FALSE;
- HWND hCtrl;
-
- hCtrl = GetDlgItem(hWnd, IDC_SAMPLES);
+ BOOL enabled = false;
+ HWND hCtrl = GetDlgItem(hWnd, IDC_SAMPLES);
if (hCtrl)
@@ -2354,7 +2343,7 @@ static void SetSamplesEnabled(HWND hWnd, int nIndex, BOOL bSoundEnabled)
for (device_sound_interface &sound : sound_interface_iterator(config.root_device()))
{
if (sound.device().type() == SAMPLES)
- enabled = TRUE;
+ enabled = true;
}
}
enabled = enabled && bSoundEnabled;
@@ -2371,7 +2360,9 @@ static void InitializeOptions(HWND hDlg)
InitializeSelectScreenUI(hDlg);
InitializeBIOSUI(hDlg);
InitializeControllerMappingUI(hDlg);
+#ifdef D3DVERSION
InitializeD3DVersionUI(hDlg);
+#endif
InitializeVideoUI(hDlg);
}
@@ -2409,10 +2400,9 @@ static void RefreshSelectionChange(HWND hWnd, HWND hWndCtrl)
/* Initialize the sound options */
static void InitializeSoundUI(HWND hwnd)
{
- HWND hCtrl;
int res = 0, i;
- hCtrl = GetDlgItem(hwnd, IDC_SOUND_MODE);
+ HWND hCtrl = GetDlgItem(hwnd, IDC_SOUND_MODE);
if (hCtrl)
{
for (i = 0; i < NUMSOUND; i++)
@@ -2495,14 +2485,12 @@ static void InitializeRotateUI(HWND hwnd)
/* Populate the Video Mode drop down */
static void InitializeVideoUI(HWND hwnd)
{
- HWND hCtrl;
int res = 0;
- hCtrl = GetDlgItem(hwnd, IDC_VIDEO_MODE);
+ HWND hCtrl = GetDlgItem(hwnd, IDC_VIDEO_MODE);
if (hCtrl)
{
- int i;
- for (i = 0; i < NUMVIDEO; i++)
+ for (int i = 0; i < NUMVIDEO; i++)
{
res = ComboBox_InsertString(hCtrl, i, g_ComboBoxVideo[i].m_pText);
res = ComboBox_SetItemData( hCtrl, i, g_ComboBoxVideo[i].m_pData);
@@ -2511,14 +2499,15 @@ static void InitializeVideoUI(HWND hwnd)
res++;
}
+#ifdef D3DVERSION
/* Populate the D3D Version drop down */
static void InitializeD3DVersionUI(HWND hwnd)
{
HWND hCtrl = GetDlgItem(hwnd, IDC_D3D_VERSION);
- int res = 0, i;
+ int res = 0;
if (hCtrl)
{
- for (i = 0; i < NUMD3DVERSIONS; i++)
+ for (int i = 0; i < NUMD3DVERSIONS; i++)
{
res = ComboBox_InsertString(hCtrl, i, g_ComboBoxD3DVersion[i].m_pText);
res = ComboBox_SetItemData( hCtrl, i, g_ComboBoxD3DVersion[i].m_pData);
@@ -2526,7 +2515,7 @@ static void InitializeD3DVersionUI(HWND hwnd)
}
res++;
}
-
+#endif
static void UpdateSelectScreenUI(HWND hwnd)
{
int res = 0, i, curSel;
@@ -2559,7 +2548,7 @@ static void InitializeSelectScreenUI(HWND hwnd)
static void InitializeControllerMappingUI(HWND hwnd)
{
- int res = 0, i;
+ int res = 0;
HWND hCtrl = GetDlgItem(hwnd,IDC_PADDLE);
HWND hCtrl1 = GetDlgItem(hwnd,IDC_ADSTICK);
HWND hCtrl2 = GetDlgItem(hwnd,IDC_PEDAL);
@@ -2569,7 +2558,7 @@ static void InitializeControllerMappingUI(HWND hwnd)
HWND hCtrl6 = GetDlgItem(hwnd,IDC_LIGHTGUNDEVICE);
HWND hCtrl7 = GetDlgItem(hwnd,IDC_POSITIONAL);
- for (i = 0; i < NUMDEVICES; i++)
+ for (int i = 0; i < NUMDEVICES; i++)
{
if (hCtrl)
{
@@ -2642,7 +2631,7 @@ static void InitializeBIOSUI(HWND hwnd)
if (g_nGame == LOCAL_OPTIONS) //Folder Options: This is the only place that LOCAL_OPTIONS is used, is this code ever executed?
{
gamedrv = &driver_list::driver(g_nFolderGame);
- if (DriverHasOptionalBIOS(g_nFolderGame) == FALSE)
+ if (DriverHasOptionalBIOS(g_nFolderGame) == false)
{
res = ComboBox_InsertString(hCtrl, i, TEXT("None"));
res = ComboBox_SetItemData( hCtrl, i++, "");
@@ -2672,7 +2661,7 @@ static void InitializeBIOSUI(HWND hwnd)
return;
}
- if (DriverHasOptionalBIOS(g_nGame) == FALSE)
+ if (DriverHasOptionalBIOS(g_nGame) == false)
{
res = ComboBox_InsertString(hCtrl, i, TEXT("None"));
res = ComboBox_SetItemData( hCtrl, i++, "");
@@ -2706,7 +2695,7 @@ static void InitializeBIOSUI(HWND hwnd)
static BOOL SelectEffect(HWND hWnd)
{
char filename[MAX_PATH];
- BOOL changed = FALSE;
+ BOOL changed = false;
*filename = 0;
if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_EFFECT_FILES))
@@ -2721,20 +2710,18 @@ static BOOL SelectEffect(HWND hWnd)
if( filename[i] == '.' )
k = i;
}
- for(i=j+1;i<k;i++)
- {
+ for(i=j+1; i<k; i++)
buff[l++] = filename[i];
- }
+
buff[l] = '\0';
if (strcmp(buff, pCurrentOpts.value(OPTION_EFFECT))!=0)
{
HWND control = GetDlgItem(hWnd, IDC_EFFECT);
- std::string error_string;
- pCurrentOpts.set_value(OPTION_EFFECT, buff, OPTION_PRIORITY_CMDLINE,error_string);
+ pCurrentOpts.set_value(OPTION_EFFECT, buff, OPTION_PRIORITY_CMDLINE);
win_set_window_text_utf8(control, buff);
// datamap_populate_control(properties_datamap, hWnd, pCurrentOpts, IDC_EFFECT);
- changed = TRUE;
+ changed = true;
}
}
return changed;
@@ -2742,17 +2729,16 @@ static BOOL SelectEffect(HWND hWnd)
static BOOL ResetEffect(HWND hWnd)
{
- BOOL changed = FALSE;
+ BOOL changed = false;
const char *new_value = "none";
if (strcmp(new_value, pCurrentOpts.value(OPTION_EFFECT))!=0)
{
HWND control = GetDlgItem(hWnd, IDC_EFFECT);
- std::string error_string;
- pCurrentOpts.set_value(OPTION_EFFECT, new_value, OPTION_PRIORITY_CMDLINE,error_string);
+ pCurrentOpts.set_value(OPTION_EFFECT, new_value, OPTION_PRIORITY_CMDLINE);
win_set_window_text_utf8(control, new_value);
// datamap_populate_control(properties_datamap, hWnd, pCurrentOpts, IDC_EFFECT);
- changed = TRUE;
+ changed = true;
}
return changed;
}
@@ -2760,7 +2746,7 @@ static BOOL ResetEffect(HWND hWnd)
static BOOL SelectJoystickMap(HWND hWnd)
{
char filename[MAX_PATH];
- BOOL changed = FALSE;
+ BOOL changed = false;
*filename = 0;
if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_JOYMAP_FILES))
@@ -2768,10 +2754,9 @@ static BOOL SelectJoystickMap(HWND hWnd)
if (strcmp(filename, pCurrentOpts.value(OPTION_JOYSTICK_MAP))!=0)
{
HWND control = GetDlgItem(hWnd, IDC_JOYSTICKMAP);
- std::string error_string;
- pCurrentOpts.set_value(OPTION_JOYSTICK_MAP, filename, OPTION_PRIORITY_CMDLINE,error_string);
+ pCurrentOpts.set_value(OPTION_JOYSTICK_MAP, filename, OPTION_PRIORITY_CMDLINE);
win_set_window_text_utf8(control, filename);
- changed = TRUE;
+ changed = true;
}
}
return changed;
@@ -2779,16 +2764,15 @@ static BOOL SelectJoystickMap(HWND hWnd)
static BOOL ResetJoystickMap(HWND hWnd)
{
- BOOL changed = FALSE;
+ BOOL changed = false;
const char *new_value = "auto";
if (strcmp(new_value, pCurrentOpts.value(OPTION_JOYSTICK_MAP))!=0)
{
HWND control = GetDlgItem(hWnd, IDC_JOYSTICKMAP);
- std::string error_string;
- pCurrentOpts.set_value(OPTION_JOYSTICK_MAP, new_value, OPTION_PRIORITY_CMDLINE,error_string);
+ pCurrentOpts.set_value(OPTION_JOYSTICK_MAP, new_value, OPTION_PRIORITY_CMDLINE);
win_set_window_text_utf8(control, new_value);
- changed = TRUE;
+ changed = true;
}
return changed;
}
@@ -2796,7 +2780,7 @@ static BOOL ResetJoystickMap(HWND hWnd)
static BOOL SelectDebugscript(HWND hWnd)
{
char filename[MAX_PATH];
- BOOL changed = FALSE;
+ BOOL changed = false;
*filename = 0;
if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_DEBUGSCRIPT_FILES))
@@ -2804,10 +2788,9 @@ static BOOL SelectDebugscript(HWND hWnd)
if (strcmp(filename, pCurrentOpts.value(OPTION_DEBUGSCRIPT))!=0)
{
HWND control = GetDlgItem(hWnd, IDC_DEBUGSCRIPT);
- std::string error_string;
- pCurrentOpts.set_value(OPTION_DEBUGSCRIPT, filename, OPTION_PRIORITY_CMDLINE,error_string);
+ pCurrentOpts.set_value(OPTION_DEBUGSCRIPT, filename, OPTION_PRIORITY_CMDLINE);
win_set_window_text_utf8(control, filename);
- changed = TRUE;
+ changed = true;
}
}
return changed;
@@ -2815,16 +2798,15 @@ static BOOL SelectDebugscript(HWND hWnd)
static BOOL ResetDebugscript(HWND hWnd)
{
- BOOL changed = FALSE;
+ BOOL changed = false;
const char *new_value = "";
if (strcmp(new_value, pCurrentOpts.value(OPTION_DEBUGSCRIPT))!=0)
{
HWND control = GetDlgItem(hWnd, IDC_DEBUGSCRIPT);
- std::string error_string;
- pCurrentOpts.set_value(OPTION_DEBUGSCRIPT, new_value, OPTION_PRIORITY_CMDLINE,error_string);
+ pCurrentOpts.set_value(OPTION_DEBUGSCRIPT, new_value, OPTION_PRIORITY_CMDLINE);
win_set_window_text_utf8(control, new_value);
- changed = TRUE;
+ changed = true;
}
return changed;
}
@@ -2840,19 +2822,17 @@ void UpdateBackgroundBrush(HWND hwndTab)
// Only do this if the theme is active
if (SafeIsAppThemed())
{
- RECT rc;
- HDC hDC, hDCMem;
- HBITMAP hBmp, hBmpOld;
// Get tab control dimensions
+ RECT rc;
GetWindowRect( hwndTab, &rc);
// Get the tab control DC
- hDC = GetDC(hwndTab);
+ HDC hDC = GetDC(hwndTab);
// Create a compatible DC
- hDCMem = CreateCompatibleDC(hDC);
- hBmp = CreateCompatibleBitmap(hDC, rc.right - rc.left, rc.bottom - rc.top);
- hBmpOld = (HBITMAP)(SelectObject(hDCMem, hBmp));
+ HDC hDCMem = CreateCompatibleDC(hDC);
+ HBITMAP hBmp = CreateCompatibleBitmap(hDC, rc.right - rc.left, rc.bottom - rc.top);
+ HBITMAP hBmpOld = (HBITMAP)(SelectObject(hDCMem, hBmp));
// Tell the tab control to paint in our DC
SendMessage(hwndTab, WM_PRINTCLIENT, (WPARAM)(hDCMem), (LPARAM)(PRF_ERASEBKGND | PRF_CLIENT | PRF_NONCLIENT));
@@ -2883,12 +2863,11 @@ void UpdateBackgroundBrush(HWND hwndTab)
static void AppendList(HWND hList, LPCTSTR lpItem, int nItem)
{
LV_ITEM Item;
- HRESULT res;
memset(&Item, 0, sizeof(LV_ITEM));
Item.mask = LVIF_TEXT;
Item.pszText = (LPTSTR) lpItem;
Item.iItem = nItem;
- res = ListView_InsertItem(hList, &Item);
+ HRESULT res = ListView_InsertItem(hList, &Item);
res++;
}
@@ -2897,7 +2876,7 @@ static BOOL DirListReadControl(datamap *map, HWND dialog, HWND control, windows_
int directory_count;
LV_ITEM lvi;
TCHAR buffer[2048];
- int i, pos = 0;
+ int pos = 0;
BOOL res;
// determine the directory count; note that one item is the "< >" entry
@@ -2907,7 +2886,7 @@ static BOOL DirListReadControl(datamap *map, HWND dialog, HWND control, windows_
buffer[0] = '\0';
- for (i = 0; i < directory_count; i++)
+ for (int i = 0; i < directory_count; i++)
{
// append a semicolon, if we're past the first entry
if (i > 0)
@@ -2925,53 +2904,49 @@ static BOOL DirListReadControl(datamap *map, HWND dialog, HWND control, windows_
pos += _tcslen(&buffer[pos]);
}
- const char* paths = ui_utf8_from_wstring(buffer);
+ char* paths = ui_utf8_from_wstring(buffer);
if ((buffer[1] == 0x3A) || (buffer[0] == 0)) // must be a folder or null
- {
- std::string error_string;
- pCurrentOpts.set_value(OPTION_SWPATH, paths, OPTION_PRIORITY_CMDLINE, error_string);
- }
+ pCurrentOpts.set_value(OPTION_SWPATH, paths, OPTION_PRIORITY_CMDLINE);
+
+ free (paths);
res++;
- return TRUE;
+ return true;
}
static BOOL DirListPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
{
- int driver_index, pos, new_pos, current_item;
- TCHAR *s;
- LV_COLUMN lvc;
- RECT r;
- HRESULT res;
- BOOL b_res;
+ int new_pos = 0;
// access the directory list, and convert to TCHARs
- driver_index = PropertiesCurrentGame(dialog);
+ int driver_index = PropertiesCurrentGame(dialog);
windows_options o;
- load_options(o, OPTIONS_GAME, driver_index);
+ load_options(o, OPTIONS_GAME, driver_index, 0);
const char* paths = o.value(OPTION_SWPATH);
TCHAR* t_dir_list = ui_wstring_from_utf8(paths);
paths = 0;
if (!t_dir_list)
- return FALSE;
+ return false;
// delete all items in the list control
- b_res = ListView_DeleteAllItems(control);
+ BOOL b_res = ListView_DeleteAllItems(control);
// add the column
+ RECT r;
GetClientRect(control, &r);
+ LV_COLUMN lvc;
memset(&lvc, 0, sizeof(LVCOLUMN));
lvc.mask = LVCF_WIDTH;
lvc.cx = r.right - r.left - GetSystemMetrics(SM_CXHSCROLL);
- res = ListView_InsertColumn(control, 0, &lvc);
+ HRESULT res = ListView_InsertColumn(control, 0, &lvc);
// add each of the directories
- pos = 0;
- current_item = 0;
+ int pos = 0;
+ int current_item = 0;
while(t_dir_list[pos] != '\0')
{
// parse off this item
- s = _tcschr(&t_dir_list[pos], ';');
+ TCHAR *s = _tcschr(&t_dir_list[pos], ';');
if (s)
{
*s = '\0';
@@ -2994,7 +2969,7 @@ static BOOL DirListPopulateControl(datamap *map, HWND dialog, HWND control, wind
free(t_dir_list);
res++;
b_res++;
- return TRUE;
+ return true;
}
@@ -3006,12 +2981,12 @@ static const char *messram_string(char *buffer, UINT32 ram)
if ((ram % (1024*1024)) == 0)
{
ram /= 1024*1024;
- suffix = "m";
+ suffix = "MB";
}
else if ((ram % 1024) == 0)
{
ram /= 1024;
- suffix = "k";
+ suffix = "KB";
}
else
suffix = "";
@@ -3020,20 +2995,54 @@ static const char *messram_string(char *buffer, UINT32 ram)
return buffer;
}
+//-------------------------------------------------
+// parse_string - convert a ram string to an
+// integer value
+//-------------------------------------------------
+
+static uint32_t parse_string(const char *s)
+{
+ static const struct
+ {
+ const char *suffix;
+ unsigned multiple;
+ } s_suffixes[] =
+ {
+ { "", 1 },
+ { "k", 1024 },
+ { "kb", 1024 },
+ { "kib", 1024 },
+ { "m", 1024 * 1024 },
+ { "mb", 1024 * 1024 },
+ { "mib", 1024 * 1024 }
+ };
+
+ // parse the string
+ unsigned ram = 0;
+ char suffix[8] = { 0, };
+ sscanf(s, "%u%7s", &ram, suffix);
+
+ // perform the lookup
+ auto iter = std::find_if(std::begin(s_suffixes), std::end(s_suffixes), [&suffix](const auto &potential_suffix)
+ { return !core_stricmp(suffix, potential_suffix.suffix); } );
+
+ // identify the multiplier (or 0 if not recognized, signalling a parse failure)
+ unsigned multiple = iter != std::end(s_suffixes) ? iter->multiple : 0;
+
+ // return the result
+ return ram * multiple;
+}
+
static BOOL RamPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
{
- int res = 0, i = 0, current_index, driver_index;
- const game_driver *gamedrv;
- UINT32 ram, current_ram;
- const char *this_ram_string;
- TCHAR* t_ramstring;
+ int i = 0, current_index = 0;
// identify the driver
- driver_index = PropertiesCurrentGame(dialog);
- gamedrv = &driver_list::driver(driver_index);
+ int driver_index = PropertiesCurrentGame(dialog);
+ const game_driver *gamedrv = &driver_list::driver(driver_index);
// clear out the combo box
- res = ComboBox_ResetContent(control);
+ int res = ComboBox_ResetContent(control);
// allocate the machine config
machine_config cfg(*gamedrv,*opts);
@@ -3050,109 +3059,81 @@ static BOOL RamPopulateControl(datamap *map, HWND dialog, HWND control, windows_
const ram_device *ramdev = dynamic_cast<const ram_device *>(device);
// identify the current amount of RAM
- this_ram_string = opts->value(OPTION_RAMSIZE);
- current_ram = (this_ram_string != NULL) ? ramdev->parse_string(this_ram_string) : 0;
+ const char *this_ram_string = opts->value(OPTION_RAMSIZE);
+ uint32_t current_ram = (this_ram_string) ? parse_string(this_ram_string) : 0;
+ uint32_t ram = ramdev->default_size();
if (current_ram == 0)
- current_ram = ramdev->default_size();
+ current_ram = ram;
- // by default, assume index 0
- current_index = 0;
+ char ramtext[20];
+ messram_string(ramtext, ram);
+ TCHAR *t_ramstring = ui_wstring_from_utf8(ramtext);
+ if( !t_ramstring )
+ return false;
- {
- char tmpval[20] ;
- ram = ramdev->default_size();
- messram_string(tmpval,ram);
- t_ramstring = ui_wstring_from_utf8(tmpval);
- if( !t_ramstring )
- return FALSE;
+ res = ComboBox_InsertString(control, i, win_tstring_strdup(t_ramstring));
+ res = ComboBox_SetItemData(control, i, ram);
- res = ComboBox_InsertString(control, i, win_tstring_strdup(t_ramstring));
- res = ComboBox_SetItemData(control, i, ram);
-
- free(t_ramstring);
- }
- if (ramdev->extra_options())
+ if (!ramdev->extra_options().empty())
{
- int j;
- int size = strlen(ramdev->extra_options());
- char * const s = core_strdup(ramdev->extra_options());
- char * const e = s + size;
- char *p = s;
- for (j=0;j<size;j++)
- if (p[j]==',')
- p[j]=0;
-
/* try to parse each option */
- while(p <= e)
+ const uint32_t *p = ramdev->extra_options().data();
+ for (int j = 0; j < ramdev->extra_options().size(); j++)
{
i++;
+ char ramtext[20];
// identify this option
- ram = ramdev->parse_string(p);
-
- this_ram_string = p;
+ messram_string(ramtext, p[j]);
- t_ramstring = ui_wstring_from_utf8(this_ram_string);
+ t_ramstring = ui_wstring_from_utf8(ramtext);
if( !t_ramstring )
- return FALSE;
+ return false;
// add this option to the combo box
res = ComboBox_InsertString(control, i, win_tstring_strdup(t_ramstring));
- res = ComboBox_SetItemData(control, i, ram);
-
- free(t_ramstring);
+ res = ComboBox_SetItemData(control, i, p[j]);
// is this the current option? record the index if so
- if (ram == current_ram)
+ if (p[j] == current_ram)
current_index = i;
-
- p+= strlen(p);
- if (p == e)
- break;
-
- p++;
}
-
- free(s);
}
-
+ if (t_ramstring)
+ free (t_ramstring);
// set the combo box
res = ComboBox_SetCurSel(control, current_index);
}
res++;
- return TRUE;
+ return true;
}
static void MarkChanged(HWND hDlg)
{
- HWND hCtrl;
-
/* fake a CBN_SELCHANGE event from IDC_SIZES to force it to be changed */
- hCtrl = GetDlgItem(hDlg, IDC_SIZES);
+ HWND hCtrl = GetDlgItem(hDlg, IDC_SIZES);
PostMessage(hDlg, WM_COMMAND, (CBN_SELCHANGE << 16) | IDC_SIZES, (LPARAM) hCtrl);
}
static BOOL SoftwareDirectories_OnInsertBrowse(HWND hDlg, BOOL bBrowse, LPCTSTR lpItem)
{
- int nItem;
TCHAR inbuf[MAX_PATH];
TCHAR outbuf[MAX_PATH];
- HWND hList;
LPTSTR lpIn;
- BOOL res;
+ BOOL res = false;
- g_bModifiedSoftwarePaths = TRUE;
+ g_bModifiedSoftwarePaths = true;
- hList = GetDlgItem(hDlg, IDC_DIR_LIST);
- nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED);
+ HWND hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+ int nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED);
if (nItem == -1)
- return FALSE;
+ return false;
/* Last item is placeholder for append */
if (nItem == ListView_GetItemCount(hList) - 1)
- bBrowse = FALSE;
+ bBrowse = false;
if (!lpItem)
{
@@ -3165,7 +3146,7 @@ static BOOL SoftwareDirectories_OnInsertBrowse(HWND hDlg, BOOL bBrowse, LPCTSTR
lpIn = NULL;
if (!BrowseForDirectory(hDlg, lpIn, outbuf))
- return FALSE;
+ return false;
lpItem = outbuf;
}
@@ -3175,35 +3156,32 @@ static BOOL SoftwareDirectories_OnInsertBrowse(HWND hDlg, BOOL bBrowse, LPCTSTR
res = ListView_DeleteItem(hList, nItem+1);
MarkChanged(hDlg);
res++;
- return TRUE;
+ return true;
}
static BOOL SoftwareDirectories_OnDelete(HWND hDlg)
{
- int nCount;
- int nSelect;
- int nItem;
+ int nSelect = 0;
HWND hList = GetDlgItem(hDlg, IDC_DIR_LIST);
- BOOL res;
- g_bModifiedSoftwarePaths = TRUE;
+ g_bModifiedSoftwarePaths = true;
- nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED | LVNI_ALL);
+ int nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED | LVNI_ALL);
if (nItem == -1)
- return FALSE;
+ return false;
/* Don't delete "Append" placeholder. */
if (nItem == ListView_GetItemCount(hList) - 1)
- return FALSE;
+ return false;
- res = ListView_DeleteItem(hList, nItem);
+ BOOL res = ListView_DeleteItem(hList, nItem);
- nCount = ListView_GetItemCount(hList);
+ int nCount = ListView_GetItemCount(hList);
if (nCount <= 1)
- return FALSE;
+ return false;
/* If the last item was removed, select the item above. */
if (nItem == nCount - 1)
@@ -3214,14 +3192,14 @@ static BOOL SoftwareDirectories_OnDelete(HWND hDlg)
ListView_SetItemState(hList, nSelect, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
MarkChanged(hDlg);
res++;
- return TRUE;
+ return true;
}
static BOOL SoftwareDirectories_OnBeginLabelEdit(HWND hDlg, NMHDR* pNMHDR)
{
- BOOL bResult = FALSE;
+ BOOL bResult = false;
NMLVDISPINFO* pDispInfo = (NMLVDISPINFO*)pNMHDR;
LVITEM* pItem = &pDispInfo->item;
HWND hList = GetDlgItem(hDlg, IDC_DIR_LIST);
@@ -3240,7 +3218,7 @@ static BOOL SoftwareDirectories_OnBeginLabelEdit(HWND hDlg, NMHDR* pNMHDR)
static BOOL SoftwareDirectories_OnEndLabelEdit(HWND hDlg, NMHDR* pNMHDR)
{
- BOOL bResult = FALSE;
+ BOOL bResult = false;
NMLVDISPINFO* pDispInfo = (NMLVDISPINFO*)pNMHDR;
LVITEM* pItem = &pDispInfo->item;
@@ -3250,18 +3228,18 @@ static BOOL SoftwareDirectories_OnEndLabelEdit(HWND hDlg, NMHDR* pNMHDR)
/* Don't allow empty entries. */
if (!_tcscmp(pItem->pszText, TEXT("")))
- return FALSE;
+ return false;
/* Check validity of edited directory. */
if ((_tstat(pItem->pszText, &file_stat) == 0) && (file_stat.st_mode & S_IFDIR))
- bResult = TRUE;
+ bResult = true;
else
if (win_message_box_utf8(NULL, "Folder does not exist, continue anyway?", MAMEUINAME, MB_OKCANCEL) == IDOK)
- bResult = TRUE;
+ bResult = true;
}
- if (bResult == TRUE)
- SoftwareDirectories_OnInsertBrowse(hDlg, TRUE, pItem->pszText);
+ if (bResult == true)
+ SoftwareDirectories_OnInsertBrowse(hDlg, true, pItem->pszText);
return bResult;
}
@@ -3269,16 +3247,18 @@ static BOOL SoftwareDirectories_OnEndLabelEdit(HWND hDlg, NMHDR* pNMHDR)
static BOOL DriverHasDevice(const game_driver *gamedrv, iodevice_t type)
{
- BOOL b = FALSE;
+ BOOL b = false;
// allocate the machine config
machine_config config(*gamedrv,MameUIGlobal());
for (device_image_interface &dev : image_interface_iterator(config.root_device()))
{
+ if (!dev.user_loadable())
+ continue;
if (dev.image_type() == type)
{
- b = TRUE;
+ b = true;
break;
}
}
@@ -3288,13 +3268,13 @@ static BOOL DriverHasDevice(const game_driver *gamedrv, iodevice_t type)
BOOL PropSheetFilter_Config(const machine_config *drv, const game_driver *gamedrv)
{
ram_device_iterator iter(drv->root_device());
- return (iter.first()!=NULL) || DriverHasDevice(gamedrv, IO_PRINTER);
+ return (iter.first()) || DriverHasDevice(gamedrv, IO_PRINTER);
}
INT_PTR CALLBACK GameMessOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
INT_PTR rc = 0;
- BOOL bHandled = FALSE;
+ BOOL bHandled = false;
switch (Msg)
{
@@ -3303,12 +3283,12 @@ INT_PTR CALLBACK GameMessOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM
{
case LVN_ENDLABELEDIT:
rc = SoftwareDirectories_OnEndLabelEdit(hDlg, (NMHDR *) lParam);
- bHandled = TRUE;
+ bHandled = true;
break;
case LVN_BEGINLABELEDIT:
rc = SoftwareDirectories_OnBeginLabelEdit(hDlg, (NMHDR *) lParam);
- bHandled = TRUE;
+ bHandled = true;
break;
}
}
@@ -3323,18 +3303,18 @@ INT_PTR CALLBACK GameMessOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM
BOOL MessPropertiesCommand(HWND hWnd, WORD wNotifyCode, WORD wID, BOOL *changed)
{
- BOOL handled = TRUE;
+ BOOL handled = true;
switch(wID)
{
case IDC_DIR_BROWSE:
if (wNotifyCode == BN_CLICKED)
- *changed = SoftwareDirectories_OnInsertBrowse(hWnd, TRUE, NULL);
+ *changed = SoftwareDirectories_OnInsertBrowse(hWnd, true, NULL);
break;
case IDC_DIR_INSERT:
if (wNotifyCode == BN_CLICKED)
- *changed = SoftwareDirectories_OnInsertBrowse(hWnd, FALSE, NULL);
+ *changed = SoftwareDirectories_OnInsertBrowse(hWnd, false, NULL);
break;
case IDC_DIR_DELETE:
@@ -3343,7 +3323,7 @@ BOOL MessPropertiesCommand(HWND hWnd, WORD wNotifyCode, WORD wID, BOOL *changed)
break;
default:
- handled = FALSE;
+ handled = false;
break;
}
return handled;
@@ -3351,4 +3331,3 @@ BOOL MessPropertiesCommand(HWND hWnd, WORD wNotifyCode, WORD wID, BOOL *changed)
#endif
-