SMS DAT File Support

This commit is contained in:
Barry Harris 2015-02-24 14:03:35 +00:00
parent 37c7337a41
commit 2511bf9233
6 changed files with 32 additions and 2 deletions

View File

@ -168,6 +168,7 @@ void ComputeGammaLUT();
#define DAT_SGX_ONLY 4
#define DAT_SG1000_ONLY 5
#define DAT_COLECO_ONLY 6
#define DAT_MASTERSYSTEM_ONLY 7
INT32 write_datfile(INT32 bType, FILE* fDat);
INT32 create_datfile(TCHAR* szFilename, INT32 bType);

View File

@ -112,6 +112,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
if (bType == DAT_SGX_ONLY) fprintf(fDat, "\t\t<name>" APP_TITLE " - SuprGrafx Games</name>\n");
if (bType == DAT_SG1000_ONLY) fprintf(fDat, "\t\t<name>" APP_TITLE " - Sega SG-1000 Games</name>\n");
if (bType == DAT_COLECO_ONLY) fprintf(fDat, "\t\t<name>" APP_TITLE " - ColecoVision Games</name>\n");
if (bType == DAT_MASTERSYSTEM_ONLY) fprintf(fDat, "\t\t<name>" APP_TITLE " - Master System Games</name>\n");
if (bType == DAT_ARCADE_ONLY) _ftprintf(fDat, _T("\t\t<description>") _T(APP_TITLE) _T(" v%s") _T(" Arcade Games</description>\n"), szAppBurnVer);
if (bType == DAT_MEGADRIVE_ONLY) _ftprintf(fDat, _T("\t\t<description>") _T(APP_TITLE) _T(" v%s") _T(" Megadrive Games</description>\n"), szAppBurnVer);
@ -120,6 +121,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
if (bType == DAT_SGX_ONLY) _ftprintf(fDat, _T("\t\t<description>") _T(APP_TITLE) _T(" v%s") _T(" SuprGrafx Games</description>\n"), szAppBurnVer);
if (bType == DAT_SG1000_ONLY) _ftprintf(fDat, _T("\t\t<description>") _T(APP_TITLE) _T(" v%s") _T(" Sega SG-1000 Games</description>\n"), szAppBurnVer);
if (bType == DAT_COLECO_ONLY) _ftprintf(fDat, _T("\t\t<description>") _T(APP_TITLE) _T(" v%s") _T(" ColecoVision Games</description>\n"), szAppBurnVer);
if (bType == DAT_MASTERSYSTEM_ONLY) _ftprintf(fDat, _T("\t\t<description>") _T(APP_TITLE) _T(" v%s") _T(" Master System Games</description>\n"), szAppBurnVer);
fprintf(fDat, "\t\t<category>Standard DatFile</category>\n");
_ftprintf(fDat, _T("\t\t<version>%s</version>\n"), szAppBurnVer);
fprintf(fDat, "\t\t<author>" APP_TITLE "</author>\n");
@ -152,6 +154,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_SGX)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_SG1000)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_COLECO)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MASTER_SYSTEM)
) && (bType == DAT_ARCADE_ONLY)) {
continue;
}
@ -179,6 +182,10 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_COLECO) && (bType == DAT_COLECO_ONLY)) {
continue;
}
if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SEGA_MASTER_SYSTEM) && (bType == DAT_MASTERSYSTEM_ONLY)) {
continue;
}
strcpy(sgName, BurnDrvGetTextA(DRV_NAME));
strcpy(spName, ""); // make sure this string is empty before we start
@ -238,6 +245,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
remove_driver_leader(HARDWARE_SEGA_SG1000, 5, 1)
remove_driver_leader(HARDWARE_PCENGINE_PCENGINE, 4, 1)
remove_driver_leader(HARDWARE_PCENGINE_SGX, 4, 1)
remove_driver_leader(HARDWARE_SEGA_MASTER_SYSTEM, 4, 1)
// Report problems
if (nParentSelect==-1U)
@ -483,6 +491,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_PCENGINE_SGX)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_SG1000)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_COLECO)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MASTER_SYSTEM)
) && (bType == DAT_ARCADE_ONLY)) {
continue;
}
@ -511,6 +520,10 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
continue;
}
if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SEGA_MASTER_SYSTEM) && (bType == DAT_MASTERSYSTEM_ONLY)) {
continue;
}
strcpy(sgName, BurnDrvGetTextA(DRV_NAME));
remove_driver_leader(HARDWARE_SEGA_MEGADRIVE, 3, 0)
@ -519,6 +532,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
remove_driver_leader(HARDWARE_SEGA_SG1000, 5, 0)
remove_driver_leader(HARDWARE_PCENGINE_PCENGINE, 4, 0)
remove_driver_leader(HARDWARE_PCENGINE_SGX, 4, 0)
remove_driver_leader(HARDWARE_SEGA_MASTER_SYSTEM, 4, 0)
fprintf(fDat, "\t<game isbios=\"yes\" name=\"%s\">\n", sgName);
fprintf(fDat, "\t\t<description>%s</description>\n", DecorateGameName(nBurnDrvActive));

View File

@ -979,6 +979,7 @@ BEGIN
MENUITEM "Generate dat (SuprGrafx only)...", MENU_CLRMAME_PRO_XML_SGX_ONLY
MENUITEM "Generate dat (Sega SG-1000 only)...", MENU_CLRMAME_PRO_XML_SG1000_ONLY
MENUITEM "Generate dat (ColecoVision only)...", MENU_CLRMAME_PRO_XML_COLECO_ONLY
MENUITEM "Generate dat (Master System only)...", MENU_CLRMAME_PRO_XML_SMS_ONLY
END
MENUITEM SEPARATOR
MENUITEM "Configure ROM paths...", MENU_ROMDIRS

View File

@ -727,6 +727,11 @@ int ProcessCmdLine()
return 1;
}
if (_tcscmp(szName, _T("-listinfosmsonly")) == 0) {
write_datfile(DAT_MASTERSYSTEM_ONLY, stdout);
return 1;
}
if (_tcscmp(szName, _T("-listextrainfo")) == 0) {
int nWidth;
int nHeight;
@ -811,7 +816,7 @@ int ProcessCmdLine()
static void CreateSupportFolders()
{
TCHAR szSupportDirs[29][MAX_PATH] = {
TCHAR szSupportDirs[30][MAX_PATH] = {
{_T("support/")},
{_T("support/previews/")},
{_T("support/titles/")},
@ -842,9 +847,10 @@ static void CreateSupportFolders()
{_T("tg16/")},
{_T("sg1000/")},
{_T("coleco/")},
{_T("sms/")},
};
for(int x = 0; x < 29; x++) {
for(int x = 0; x < 30; x++) {
CreateDirectory(szSupportDirs[x], NULL);
}
}

View File

@ -614,6 +614,7 @@
#define MENU_CLRMAME_PRO_XML_COLECO_ONLY 10718
#define MENU_CREATEDIRS 10719
#define MENU_USEBLEND 10720
#define MENU_CLRMAME_PRO_XML_SMS_ONLY 10721
#define MENU_BASIC_NORMAL 11001
#define MENU_BASIC_SCAN 11002

View File

@ -298,6 +298,7 @@ int CreateDatfileWindows(int bType)
if (bType == DAT_SGX_ONLY) _sntprintf(szConsoleString, 64, _T(", SuprGrafx only"));
if (bType == DAT_SG1000_ONLY) _sntprintf(szConsoleString, 64, _T(", Sega SG-1000 only"));
if (bType == DAT_COLECO_ONLY) _sntprintf(szConsoleString, 64, _T(", ColecoVision only"));
if (bType == DAT_MASTERSYSTEM_ONLY) _sntprintf(szConsoleString, 64, _T(", Master System only"));
TCHAR szProgramString[25];
_sntprintf(szProgramString, 25, _T("ClrMame Pro XML"));
@ -1990,6 +1991,12 @@ static void OnCommand(HWND /*hDlg*/, int id, HWND /*hwndCtl*/, UINT codeNotify)
CreateDatfileWindows(DAT_COLECO_ONLY);
}
break;
case MENU_CLRMAME_PRO_XML_SMS_ONLY:
if (UseDialogs()) {
CreateDatfileWindows(DAT_MASTERSYSTEM_ONLY);
}
break;
case MENU_ENABLECHEAT:
AudBlankSound();