diff options
Diffstat (limited to 'docs/release/src/osd/winui/properties.cpp')
-rw-r--r-- | docs/release/src/osd/winui/properties.cpp | 969 |
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 - |