diff --git a/src/burner/burner.h b/src/burner/burner.h index 02b38569e..38d1fcfe6 100644 --- a/src/burner/burner.h +++ b/src/burner/burner.h @@ -133,8 +133,13 @@ TCHAR* DecorateGenreInfo(); void ComputeGammaLUT(); // dat.cpp -INT32 write_datfile(INT32 bIncMegadrive, FILE* fDat); -INT32 create_datfile(TCHAR* szFilename, INT32 bIncMegadrive); +#define DAT_ARCADE_ONLY 0 +#define DAT_MEGADRIVE_ONLY 1 +#define DAT_PCENGINE_ONLY 2 +#define DAT_TG16_ONLY 3 +#define DAT_SGX_ONLY 4 +INT32 write_datfile(INT32 bType, FILE* fDat); +INT32 create_datfile(TCHAR* szFilename, INT32 bType); // sshot.cpp INT32 MakeScreenShot(); diff --git a/src/burner/dat.cpp b/src/burner/dat.cpp index dc72e7d7c..db0ac48eb 100644 --- a/src/burner/dat.cpp +++ b/src/burner/dat.cpp @@ -59,7 +59,7 @@ static void ReplaceGreaterThan(char *szBuffer, char *szGameName) } } -INT32 write_datfile(INT32 bIncMegadrive, FILE* fDat) +INT32 write_datfile(INT32 bType, FILE* fDat) { INT32 nRet=0; UINT32 nOldSelect=0; @@ -84,11 +84,27 @@ INT32 write_datfile(INT32 bIncMegadrive, FILE* fDat) continue; } - if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MEGADRIVE) && (bIncMegadrive == 0)) { + if ((((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MEGADRIVE) + || ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_PCENGINE) + || ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_TG16) + || ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_SGX) + ) && (bType == DAT_ARCADE_ONLY)) { continue; } - if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SEGA_MEGADRIVE) && (bIncMegadrive == 2)) { + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SEGA_MEGADRIVE) && (bType == DAT_MEGADRIVE_ONLY)) { + continue; + } + + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_PCENGINE_PCENGINE) && (bType == DAT_PCENGINE_ONLY)) { + continue; + } + + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_PCENGINE_TG16) && (bType == DAT_TG16_ONLY)) { + continue; + } + + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_PCENGINE_SGX) && (bType == DAT_SGX_ONLY)) { continue; } @@ -144,8 +160,10 @@ INT32 write_datfile(INT32 bIncMegadrive, FILE* fDat) strcpy(ssName, BurnDrvGetTextA(DRV_SAMPLENAME)); } - if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MEGADRIVE) { - // remove the md_ + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MEGADRIVE) + || ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_TG16) + ) { + // remove the md_ or tg_ char Temp[35]; INT32 Length; if (sgName[0]) { @@ -167,6 +185,32 @@ INT32 write_datfile(INT32 bIncMegadrive, FILE* fDat) } } } + + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_PCENGINE) + || ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_SGX) + ) { + // remove the pce__ or sgx__ + char Temp[36]; + INT32 Length; + if (sgName[0]) { + Length = strlen(sgName); + memset(Temp, 0, 36); + strcpy(Temp, sgName); + memset(sgName, 0, 32); + for (INT32 pos = 0; pos < Length; pos++) { + sgName[pos] = Temp[pos + 4]; + } + } + if (spName[0]) { + Length = strlen(spName); + memset(Temp, 0, 36); + strcpy(Temp, spName); + memset(spName, 0, 32); + for (INT32 pos = 0; pos < Length; pos++) { + spName[pos] = Temp[pos + 4]; + } + } + } // Report problems if (nParentSelect==-1U) @@ -403,7 +447,19 @@ INT32 write_datfile(INT32 bIncMegadrive, FILE* fDat) continue; } - if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SEGA_MEGADRIVE) && (bIncMegadrive == 2)) { + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SEGA_MEGADRIVE) && (bType == DAT_MEGADRIVE_ONLY)) { + continue; + } + + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_PCENGINE_PCENGINE) && (bType == DAT_PCENGINE_ONLY)) { + continue; + } + + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_PCENGINE_TG16) && (bType == DAT_TG16_ONLY)) { + continue; + } + + if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_PCENGINE_SGX) && (bType == DAT_SGX_ONLY)) { continue; } @@ -462,7 +518,7 @@ INT32 write_datfile(INT32 bIncMegadrive, FILE* fDat) return 0; } -INT32 create_datfile(TCHAR* szFilename, INT32 bIncMegadrive) +INT32 create_datfile(TCHAR* szFilename, INT32 bType) { FILE *fDat=0; INT32 nRet=0; @@ -475,11 +531,11 @@ INT32 create_datfile(TCHAR* szFilename, INT32 bIncMegadrive) fprintf(fDat, "\n"); fprintf(fDat, "\t
\n"); fprintf(fDat, "\t\t" APP_TITLE "\n"); - if (bIncMegadrive) { - _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" Megadrive Games\n"), szAppBurnVer); - } else { - _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" Arcade Games\n"), szAppBurnVer); - } + if (bType == DAT_ARCADE_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" Arcade Games\n"), szAppBurnVer); + if (bType == DAT_MEGADRIVE_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" Megadrive Games\n"), szAppBurnVer); + if (bType == DAT_PCENGINE_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" PC-Engine Games\n"), szAppBurnVer); + if (bType == DAT_TG16_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" TurboGrafx 16 Games\n"), szAppBurnVer); + if (bType == DAT_SGX_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" SuprGrafx Games\n"), szAppBurnVer); fprintf(fDat, "\t\tStandard DatFile\n"); _ftprintf(fDat, _T("\t\t%s\n"), szAppBurnVer); fprintf(fDat, "\t\t" APP_TITLE "\n"); @@ -488,7 +544,7 @@ INT32 create_datfile(TCHAR* szFilename, INT32 bIncMegadrive) fprintf(fDat, "\t\t\n"); fprintf(fDat, "\t
\n"); - nRet = write_datfile(bIncMegadrive, fDat); + nRet = write_datfile(bType, fDat); fclose(fDat); diff --git a/src/burner/win32/app.rc b/src/burner/win32/app.rc index 54a0b17e9..36090546a 100644 --- a/src/burner/win32/app.rc +++ b/src/burner/win32/app.rc @@ -915,8 +915,11 @@ BEGIN MENUITEM SEPARATOR POPUP "Generate dat file" BEGIN - MENUITEM "Generate dat (Arcade only)...", MENU_CLRMAME_PRO_XML + MENUITEM "Generate dat (Arcade only)...", MENU_CLRMAME_PRO_XML MENUITEM "Generate dat (Megadrive only)...", MENU_CLRMAME_PRO_XML_MD_ONLY + MENUITEM "Generate dat (PC-Engine only)...", MENU_CLRMAME_PRO_XML_PCE_ONLY + MENUITEM "Generate dat (TurboGrafx16 only)...", MENU_CLRMAME_PRO_XML_TG16_ONLY + MENUITEM "Generate dat (SuprGrafx only)...", MENU_CLRMAME_PRO_XML_SGX_ONLY END MENUITEM SEPARATOR MENUITEM "Configure ROM paths...", MENU_ROMDIRS diff --git a/src/burner/win32/resource.h b/src/burner/win32/resource.h index 1f663cb07..05c573e39 100644 --- a/src/burner/win32/resource.h +++ b/src/burner/win32/resource.h @@ -568,6 +568,9 @@ #define MENU_START_NEOGEO_MVS 10711 #define MENU_START_NEOGEO_CD 10712 #define MENU_LOAD_NEOCD 10713 +#define MENU_CLRMAME_PRO_XML_PCE_ONLY 10714 +#define MENU_CLRMAME_PRO_XML_TG16_ONLY 10715 +#define MENU_CLRMAME_PRO_XML_SGX_ONLY 10716 #define MENU_BASIC_NORMAL 11001 #define MENU_BASIC_SCAN 11002 diff --git a/src/burner/win32/scrn.cpp b/src/burner/win32/scrn.cpp index cdf1bf154..a12fc0852 100644 --- a/src/burner/win32/scrn.cpp +++ b/src/burner/win32/scrn.cpp @@ -282,20 +282,22 @@ static void DoNetGame() POST_INITIALISE_MESSAGE; } -int CreateDatfileWindows(int bIncMegadrive) +int CreateDatfileWindows(int bType) { TCHAR szTitle[1024]; TCHAR szFilter[1024]; - TCHAR szMegadriveString[25]; - _sntprintf(szMegadriveString, 25, _T("")); - if (bIncMegadrive == 1) _sntprintf(szMegadriveString, 25, _T(", including Megadrive")); - if (bIncMegadrive == 2) _sntprintf(szMegadriveString, 25, _T(", Megadrive only")); + TCHAR szConsoleString[64]; + _sntprintf(szConsoleString, 64, _T("")); + if (bType == DAT_MEGADRIVE_ONLY) _sntprintf(szConsoleString, 64, _T(", Megadrive only")); + if (bType == DAT_PCENGINE_ONLY) _sntprintf(szConsoleString, 64, _T(", PC-Engine only")); + if (bType == DAT_TG16_ONLY) _sntprintf(szConsoleString, 64, _T(", TurboGrafx16 only")); + if (bType == DAT_SGX_ONLY) _sntprintf(szConsoleString, 64, _T(", SuprGfrax only")); TCHAR szProgramString[25]; _sntprintf(szProgramString, 25, _T("ClrMame Pro XML")); - _sntprintf(szChoice, MAX_PATH, _T(APP_TITLE) _T(" v%.20s (%s%s).dat"), szAppBurnVer, szProgramString, szMegadriveString); + _sntprintf(szChoice, MAX_PATH, _T(APP_TITLE) _T(" v%.20s (%s%s).dat"), szAppBurnVer, szProgramString, szConsoleString); _sntprintf(szTitle, 256, FBALoadStringEx(hAppInst, IDS_DAT_GENERATE, true), szProgramString); _stprintf(szFilter, FBALoadStringEx(hAppInst, IDS_DISK_ALL_DAT, true), _T(APP_TITLE)); @@ -316,7 +318,7 @@ int CreateDatfileWindows(int bIncMegadrive) if (GetSaveFileName(&ofn) == 0) return -1; - return create_datfile(szChoice, bIncMegadrive); + return create_datfile(szChoice, bType); } // Returns true if a VidInit is needed when the window is resized @@ -1878,13 +1880,31 @@ static void OnCommand(HWND /*hDlg*/, int id, HWND /*hwndCtl*/, UINT codeNotify) case MENU_CLRMAME_PRO_XML: if (UseDialogs()) { - CreateDatfileWindows(0); + CreateDatfileWindows(DAT_ARCADE_ONLY); } break; case MENU_CLRMAME_PRO_XML_MD_ONLY: if (UseDialogs()) { - CreateDatfileWindows(2); + CreateDatfileWindows(DAT_MEGADRIVE_ONLY); + } + break; + + case MENU_CLRMAME_PRO_XML_PCE_ONLY: + if (UseDialogs()) { + CreateDatfileWindows(DAT_PCENGINE_ONLY); + } + break; + + case MENU_CLRMAME_PRO_XML_TG16_ONLY: + if (UseDialogs()) { + CreateDatfileWindows(DAT_TG16_ONLY); + } + break; + + case MENU_CLRMAME_PRO_XML_SGX_ONLY: + if (UseDialogs()) { + CreateDatfileWindows(DAT_SGX_ONLY); } break;