From 686442947545dac25a9bf8c74e5abf57740386b1 Mon Sep 17 00:00:00 2001
From: Barry Harris <44396066+barry65536@users.noreply.github.com>
Date: Fri, 8 Jun 2018 10:02:49 +0000
Subject: [PATCH] ZX Spectrum DAT file support
---
src/burn/drv/pre90s/d_spectrum.cpp | 88 ++++++++++++++----------------
src/burner/burner.h | 1 +
src/burner/dat.cpp | 14 +++++
src/burner/win32/app.rc | 1 +
src/burner/win32/resource.h | 1 +
src/burner/win32/scrn.cpp | 10 ++++
6 files changed, 68 insertions(+), 47 deletions(-)
diff --git a/src/burn/drv/pre90s/d_spectrum.cpp b/src/burn/drv/pre90s/d_spectrum.cpp
index 0c144b99b..5f83ca616 100644
--- a/src/burn/drv/pre90s/d_spectrum.cpp
+++ b/src/burn/drv/pre90s/d_spectrum.cpp
@@ -239,15 +239,9 @@ INT32 SpectrumGetZipName(char** pszName, UINT32 i)
}
// remove leader
- INT32 offset = 0;
- if (pszGameName[0] == 's' && pszGameName[1] == '4' && pszGameName[2] == '8' && pszGameName[3] == '_') offset = 4;
- if (pszGameName[0] == 's' && pszGameName[1] == '1' && pszGameName[2] == '2' && pszGameName[3] == '8' && pszGameName[4] == '_') offset = 5;
- if (!strcmp(pszGameName, "spectrum")) offset = 0;
- if (!strcmp(pszGameName, "spec128")) offset = 0;
-
memset(szFilename, 0, MAX_PATH);
for (UINT32 j = 0; j < strlen(pszGameName); j++) {
- szFilename[j] = pszGameName[j + offset];
+ szFilename[j] = pszGameName[j + 5];
}
*pszName = szFilename;
@@ -1438,7 +1432,7 @@ static INT32 DrvScan(INT32 /*nAction*/, INT32* /*pnMin*/)
}
struct BurnDriver BurnDrvSpectrumBIOS = {
- "spectrum", NULL, NULL, NULL, "1984",
+ "spec_spectrum", NULL, NULL, NULL, "1984",
"ZX Spectrum\0", "BIOS Only", "Sinclair Research Limited", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_BOARDROM, 0, HARDWARE_SPECTRUM, GBF_BIOS, 0,
@@ -1448,7 +1442,7 @@ struct BurnDriver BurnDrvSpectrumBIOS = {
};
struct BurnDriver BurnDrvSpectrum = {
- "spectrum", NULL, NULL, NULL, "1984",
+ "spec_spectrum", NULL, NULL, NULL, "1984",
"ZX Spectrum\0", NULL, "Sinclair Research Limited", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1458,7 +1452,7 @@ struct BurnDriver BurnDrvSpectrum = {
};
struct BurnDriver BurnDrvSpec128BIOS = {
- "spec128", NULL, NULL, NULL, "1984",
+ "spec_spec128", NULL, NULL, NULL, "1984",
"ZX Spectrum 128\0", "BIOS Only", "Sinclair Research Limited", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_BOARDROM, 0, HARDWARE_SPECTRUM, GBF_BIOS, 0,
@@ -1468,7 +1462,7 @@ struct BurnDriver BurnDrvSpec128BIOS = {
};
struct BurnDriver BurnDrvSpec128 = {
- "spec128", NULL, NULL, NULL, "1984",
+ "spec_spec128", NULL, NULL, NULL, "1984",
"ZX Spectrum 128\0", NULL, "Sinclair Research Limited", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1486,7 +1480,7 @@ STDROMPICKEXT(S48180, S48180, Spectrum)
STD_ROM_FN(S48180)
struct BurnDriver BurnDrvS48180 = {
- "s48_180", NULL, "spectrum", NULL, "1986",
+ "spec_180", NULL, "spec_spectrum", NULL, "1986",
"180 (1986)(Mastertronic)\0", NULL, "Mastertronic", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1503,7 +1497,7 @@ STDROMPICKEXT(S48ATVSim, S48ATVSim, Spectrum)
STD_ROM_FN(S48ATVSim)
struct BurnDriver BurnDrvS48ATVSimRomDesc = {
- "s48_atvsim", NULL, "spectrum", NULL, "1987",
+ "spec_atvsim", NULL, "spec_spectrum", NULL, "1987",
"ATV Simulator - All Terrain Vehicle\0", NULL, "Code Masters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1520,7 +1514,7 @@ STDROMPICKEXT(S48Blinkys, S48Blinkys, Spectrum)
STD_ROM_FN(S48Blinkys)
struct BurnDriver BurnDrvS48Blinkys = {
- "s48_blinkys", NULL, "spectrum", NULL, "1990",
+ "spec_blinkys", NULL, "spec_spectrum", NULL, "1990",
"Blinky's Scary School\0", NULL, "Zeppelin Games", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1537,7 +1531,7 @@ STDROMPICKEXT(S48BruceLee, S48BruceLee, Spectrum)
STD_ROM_FN(S48BruceLee)
struct BurnDriver BurnDrvS48BruceLee = {
- "s48_brucelee", NULL, "spectrum", NULL, "1984",
+ "spec_brucelee", NULL, "spec_spectrum", NULL, "1984",
"Bruce Lee\0", NULL, "US Gold", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1554,7 +1548,7 @@ STDROMPICKEXT(S48Chasehq, S48Chasehq, Spectrum)
STD_ROM_FN(S48Chasehq)
struct BurnDriver BurnDrvS48Chasehq = {
- "s48_chasehq", NULL, "spectrum", NULL, "1989",
+ "spec_chasehq48", NULL, "spec_spectrum", NULL, "1989",
"Chase HQ (48K)\0", NULL, "Ocean Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1571,7 +1565,7 @@ STDROMPICKEXT(S128Chasehq, S128Chasehq, Spec128)
STD_ROM_FN(S128Chasehq)
struct BurnDriver BurnDrvS128Chasehq = {
- "s128_chasehq", "s48_chasehq", "spec128", NULL, "1989",
+ "spec_chasehq", "spec_chasehq48", "spec_spec128", NULL, "1989",
"Chase HQ (128K)\0", NULL, "Ocean Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1588,7 +1582,7 @@ STDROMPICKEXT(S48Chuckie, S48Chuckie, Spectrum)
STD_ROM_FN(S48Chuckie)
struct BurnDriver BurnDrvS48Chuckie = {
- "s48_chuckie", NULL, "spectrum", NULL, "1983",
+ "spec_chuckie", NULL, "spec_spectrum", NULL, "1983",
"Chuckie Egg\0", NULL, "A & F Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1605,7 +1599,7 @@ STDROMPICKEXT(S48Chuckie2, S48Chuckie2, Spectrum)
STD_ROM_FN(S48Chuckie2)
struct BurnDriver BurnDrvS48Chuckie2 = {
- "s48_chuckie2", NULL, "spectrum", NULL, "1985",
+ "spec_chuckie2", NULL, "spec_spectrum", NULL, "1985",
"Chuckie Egg 2 - Choccy Egg\0", NULL, "A & F Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1622,7 +1616,7 @@ STDROMPICKEXT(S48Commando, S48Commando, Spectrum)
STD_ROM_FN(S48Commando)
struct BurnDriver BurnDrvS48Commando = {
- "s48_commando", NULL, "spectrum", NULL, "1985",
+ "spec_commando", NULL, "spec_spectrum", NULL, "1985",
"Commando\0", NULL, "Elite Systems", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1639,7 +1633,7 @@ STDROMPICKEXT(S48Dizzy, S48Dizzy, Spectrum)
STD_ROM_FN(S48Dizzy)
struct BurnDriver BurnDrvS48Dizzy = {
- "s48_dizzy", NULL, "spectrum", NULL, "1987",
+ "spec_dizzy", NULL, "spec_spectrum", NULL, "1987",
"Dizzy - The Ultimate Cartoon Adventure\0", NULL, "Codemasters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1656,7 +1650,7 @@ STDROMPICKEXT(S48Dizzy2, S48Dizzy2, Spectrum)
STD_ROM_FN(S48Dizzy2)
struct BurnDriver BurnDrvS48Dizzy2 = {
- "s48_dizzy2", NULL, "spectrum", NULL, "1988",
+ "spec_dizzy2", NULL, "spec_spectrum", NULL, "1988",
"Dizzy II - Treasure Island Dizzy\0", NULL, "Codemasters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1673,7 +1667,7 @@ STDROMPICKEXT(S48Dizzy3, S48Dizzy3, Spectrum)
STD_ROM_FN(S48Dizzy3)
struct BurnDriver BurnDrvS48Dizzy3 = {
- "s48_dizzy3", NULL, "spectrum", NULL, "1989",
+ "spec_dizzy3", NULL, "spec_spectrum", NULL, "1989",
"Dizzy III - Fantasy World Dizzy\0", NULL, "Codemasters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1690,7 +1684,7 @@ STDROMPICKEXT(S48Dizzy4, S48Dizzy4, Spectrum)
STD_ROM_FN(S48Dizzy4)
struct BurnDriver BurnDrvS48Dizzy4 = {
- "s48_dizzy4", NULL, "spectrum", NULL, "1989",
+ "spec_dizzy4", NULL, "spec_spectrum", NULL, "1989",
"Dizzy IV - Magicland Dizzy\0", NULL, "Codemasters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1707,7 +1701,7 @@ STDROMPICKEXT(S48Dizzy5, S48Dizzy5, Spectrum)
STD_ROM_FN(S48Dizzy5)
struct BurnDriver BurnDrvS48Dizzy5 = {
- "s48_dizzy5", NULL, "spectrum", NULL, "1991",
+ "spec_dizzy5", NULL, "spec_spectrum", NULL, "1991",
"Dizzy V - Spellbound Dizzy\0", NULL, "Codemasters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1724,7 +1718,7 @@ STDROMPICKEXT(S48Dizzy6, S48Dizzy6, Spectrum)
STD_ROM_FN(S48Dizzy6)
struct BurnDriver BurnDrvS48Dizzy6 = {
- "s48_dizzy6", NULL, "spectrum", NULL, "1991",
+ "spec_dizzy6", NULL, "spec_spectrum", NULL, "1991",
"Dizzy VI - Prince Of The Yolkfolk\0", NULL, "Codemasters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1741,7 +1735,7 @@ STDROMPICKEXT(S48Dizzy7, S48Dizzy7, Spectrum)
STD_ROM_FN(S48Dizzy7)
struct BurnDriver BurnDrvS48Dizzy7 = {
- "s48_dizzy7", NULL, "spectrum", NULL, "1992",
+ "spec_dizzy7", NULL, "spec_spectrum", NULL, "1992",
"Dizzy VII - Crystal Kingdom Dizzy\0", NULL, "Codemasters", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1758,7 +1752,7 @@ STDROMPICKEXT(S48Feud, S48Feud, Spectrum)
STD_ROM_FN(S48Feud)
struct BurnDriver BurnDrvS48Feud = {
- "s48_feud", NULL, "spectrum", NULL, "1987",
+ "spec_feud", NULL, "spec_spectrum", NULL, "1987",
"Feud\0", NULL, "Mastertronic", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1775,7 +1769,7 @@ STDROMPICKEXT(S48FootDir, S48FootDir, Spectrum)
STD_ROM_FN(S48FootDir)
struct BurnDriver BurnDrvS48FootDir = {
- "s48_footdir", NULL, "spectrum", NULL, "1989",
+ "spec_footdir", NULL, "spec_spectrum", NULL, "1989",
"Football Director\0", NULL, "Addictive Games", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1792,7 +1786,7 @@ STDROMPICKEXT(S48Footman, S48Footman, Spectrum)
STD_ROM_FN(S48Footman)
struct BurnDriver BurnDrvS48Footman = {
- "s48_footman", NULL, "spectrum", NULL, "1982",
+ "spec_footman", NULL, "spec_spectrum", NULL, "1982",
"Football Manager\0", NULL, "Addictive Games", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1809,7 +1803,7 @@ STDROMPICKEXT(S48Footman2, S48Footman2, Spectrum)
STD_ROM_FN(S48Footman2)
struct BurnDriver BurnDrvS48Footman2 = {
- "s48_footman2", NULL, "spectrum", NULL, "1988",
+ "spec_footman2", NULL, "spec_spectrum", NULL, "1988",
"Football Manager 2\0", NULL, "Addictive Games", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1826,7 +1820,7 @@ STDROMPICKEXT(S48Footman3, S48Footman3, Spectrum)
STD_ROM_FN(S48Footman3)
struct BurnDriver BurnDrvS48Footman3 = {
- "s48_footman3", NULL, "spectrum", NULL, "1991",
+ "spec_footman3", NULL, "spec_spectrum", NULL, "1991",
"Football Manager 3\0", NULL, "Addictive Games", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1843,7 +1837,7 @@ STDROMPICKEXT(S48Foty, S48Foty, Spectrum)
STD_ROM_FN(S48Foty)
struct BurnDriver BurnDrvS48Foty = {
- "s48_foty", NULL, "spectrum", NULL, "1986",
+ "spec_foty", NULL, "spec_spectrum", NULL, "1986",
"Footballer Of The Year\0", NULL, "Gremlin Graphics", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1860,7 +1854,7 @@ STDROMPICKEXT(S48Foty2, S48Foty2, Spectrum)
STD_ROM_FN(S48Foty2)
struct BurnDriver BurnDrvS48Foty2 = {
- "s48_foty2", NULL, "spectrum", NULL, "1986",
+ "spec_foty2", NULL, "spec_spectrum", NULL, "1986",
"Footballer Of The Year 2\0", NULL, "Gremlin Graphics", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1877,7 +1871,7 @@ STDROMPICKEXT(S48Glhotsht, S48Glhotsht, Spectrum)
STD_ROM_FN(S48Glhotsht)
struct BurnDriver BurnDrvS48Glhotsht = {
- "s48_glhotsht", NULL, "spectrum", NULL, "1988",
+ "spec_glhotsht", NULL, "spec_spectrum", NULL, "1988",
"Gary Lineker's Hot Shot\0", NULL, "Gremlin Graphics", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1894,7 +1888,7 @@ STDROMPICKEXT(S48Glssocc, S48Glssocc, Spectrum)
STD_ROM_FN(S48Glssocc)
struct BurnDriver BurnDrvS48Glssocc = {
- "s48_glssocc", NULL, "spectrum", NULL, "1987",
+ "spec_glssocc", NULL, "spec_spectrum", NULL, "1987",
"Gary Lineker's Superstar Soccer\0", NULL, "Gremlin Graphics", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1911,7 +1905,7 @@ STDROMPICKEXT(S48Howbstd, S48Howbstd, Spectrum)
STD_ROM_FN(S48Howbstd)
struct BurnDriver BurnDrvS48Howbstd = {
- "s48_howbstd", NULL, "spectrum", NULL, "1987",
+ "spec_howbstd", NULL, "spec_spectrum", NULL, "1987",
"How To Be A Complete Bastard\0", NULL, "Virgin Games", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1928,7 +1922,7 @@ STDROMPICKEXT(S48Hunchbk, S48Hunchbk, Spectrum)
STD_ROM_FN(S48Hunchbk)
struct BurnDriver BurnDrvS48Hunchbk = {
- "s48_hunchbk", NULL, "spectrum", NULL, "1983",
+ "spec_hunchbk", NULL, "spec_spectrum", NULL, "1983",
"Hunchback\0", NULL, "Ocean Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1945,7 +1939,7 @@ STDROMPICKEXT(S48Jetpac, S48Jetpac, Spectrum)
STD_ROM_FN(S48Jetpac)
struct BurnDriver BurnDrvS48Jetpac = {
- "s48_jetpac", NULL, "spectrum", NULL, "1983",
+ "spec_jetpac", NULL, "spec_spectrum", NULL, "1983",
"Jetpac\0", NULL, "Ultimate Play the Game", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1962,7 +1956,7 @@ STDROMPICKEXT(S48Matchday, S48Matchday, Spectrum)
STD_ROM_FN(S48Matchday)
struct BurnDriver BurnDrvS48Matchday = {
- "s48_matchday", NULL, "spectrum", NULL, "1987",
+ "spec_matchday", NULL, "spec_spectrum", NULL, "1987",
"Match Day\0", NULL, "Ocean Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1979,7 +1973,7 @@ STDROMPICKEXT(S48Matchdy2, S48Matchdy2, Spectrum)
STD_ROM_FN(S48Matchdy2)
struct BurnDriver BurnDrvS48Matchday2 = {
- "s48_matchdy2", NULL, "spectrum", NULL, "1987",
+ "spec_matchdy2", NULL, "spec_spectrum", NULL, "1987",
"Match Day 2\0", NULL, "Sinclair Research Limited", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -1996,7 +1990,7 @@ STDROMPICKEXT(S48Micrsocc, S48Micrsocc, Spectrum)
STD_ROM_FN(S48Micrsocc)
struct BurnDriver BurnDrvS48Micrsocc = {
- "s48_micrsocc.z80", NULL, "spectrum", NULL, "1989",
+ "spec_micrsocc", NULL, "spec_spectrum", NULL, "1989",
"Microprose Soccer\0", NULL, "Microprose", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -2013,7 +2007,7 @@ STDROMPICKEXT(S48Handbmar, S48Handbmar, Spectrum)
STD_ROM_FN(S48Handbmar)
struct BurnDriver BurnDrvS48Handbmar = {
- "s48_handbmar", NULL, "spectrum", NULL, "1986",
+ "spec_handbmar", NULL, "spec_spectrum", NULL, "1986",
"Peter Shilton's Handball Maradona\0", NULL, "Grandslam Entertainment", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -2030,7 +2024,7 @@ STDROMPICKEXT(S48Pippo, S48Pippo, Spectrum)
STD_ROM_FN(S48Pippo)
struct BurnDriver BurnDrvS48Pippo = {
- "s48_pippo", NULL, "spectrum", NULL, "1986",
+ "spec_pippo", NULL, "spec_spectrum", NULL, "1986",
"Pippo\0", NULL, "Sinclair Research Limited", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -2047,7 +2041,7 @@ STDROMPICKEXT(S48Renegade, S48Renegade, Spectrum)
STD_ROM_FN(S48Renegade)
struct BurnDriver BurnDrvS48Renegade = {
- "s48_renegade", NULL, "spectrum", NULL, "1987",
+ "spec_renegade", NULL, "spec_spectrum", NULL, "1987",
"Renegade\0", NULL, "Ocean Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -2064,7 +2058,7 @@ STDROMPICKEXT(S128Robocop, S128Robocop, Spec128)
STD_ROM_FN(S128Robocop)
struct BurnDriver BurnDrvS128Robocop = {
- "s128_robocop", NULL, "spec128", NULL, "1988",
+ "spec_robocop", NULL, "spec_spec128", NULL, "1988",
"Robocop (128K)\0", NULL, "Ocean Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
@@ -2081,7 +2075,7 @@ STDROMPICKEXT(S48Theboss, S48Theboss, Spectrum)
STD_ROM_FN(S48Theboss)
struct BurnDriver BurnDrvS48Theboss = {
- "s48_theboss", NULL, "spectrum", NULL, "1984",
+ "spec_theboss", NULL, "spec_spectrum", NULL, "1984",
"The Boss\0", NULL, "Peaksoft", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
diff --git a/src/burner/burner.h b/src/burner/burner.h
index 22206e858..8cd98c164 100644
--- a/src/burner/burner.h
+++ b/src/burner/burner.h
@@ -171,6 +171,7 @@ void ComputeGammaLUT();
#define DAT_MASTERSYSTEM_ONLY 7
#define DAT_GAMEGEAR_ONLY 8
#define DAT_MSX_ONLY 9
+#define DAT_SPECTRUM_ONLY 10
INT32 write_datfile(INT32 bType, FILE* fDat);
INT32 create_datfile(TCHAR* szFilename, INT32 bType);
diff --git a/src/burner/dat.cpp b/src/burner/dat.cpp
index 2fae426b2..a3534ec8e 100644
--- a/src/burner/dat.cpp
+++ b/src/burner/dat.cpp
@@ -118,6 +118,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
if (bType == DAT_MASTERSYSTEM_ONLY) fprintf(fDat, "\t\t" APP_TITLE " - Master System Games\n");
if (bType == DAT_GAMEGEAR_ONLY) fprintf(fDat, "\t\t" APP_TITLE " - Game Gear Games\n");
if (bType == DAT_MSX_ONLY) fprintf(fDat, "\t\t" APP_TITLE " - MSX 1 Games\n");
+ if (bType == DAT_SPECTRUM_ONLY) fprintf(fDat, "\t\t" APP_TITLE " - ZX Spectrum Games\n");
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);
@@ -129,6 +130,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
if (bType == DAT_MASTERSYSTEM_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" Master System Games\n"), szAppBurnVer);
if (bType == DAT_GAMEGEAR_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" Game Gear Games\n"), szAppBurnVer);
if (bType == DAT_MSX_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" MSX 1 Games\n"), szAppBurnVer);
+ if (bType == DAT_SPECTRUM_ONLY) _ftprintf(fDat, _T("\t\t") _T(APP_TITLE) _T(" v%s") _T(" ZX Spectrum Games\n"), szAppBurnVer);
fprintf(fDat, "\t\tStandard DatFile\n");
_ftprintf(fDat, _T("\t\t%s\n"), szAppBurnVer);
fprintf(fDat, "\t\t" APP_TITLE "\n");
@@ -164,6 +166,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MASTER_SYSTEM)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_GAME_GEAR)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_MSX)
+ || ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SPECTRUM)
) && (bType == DAT_ARCADE_ONLY)) {
continue;
}
@@ -203,6 +206,10 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_MSX) && (bType == DAT_MSX_ONLY)) {
continue;
}
+
+ if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SPECTRUM) && (bType == DAT_SPECTRUM_ONLY)) {
+ continue;
+ }
strcpy(sgName, BurnDrvGetTextA(DRV_NAME));
strcpy(spName, ""); // make sure this string is empty before we start
@@ -269,6 +276,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
remove_driver_leader(HARDWARE_SEGA_MASTER_SYSTEM, 4, 1)
remove_driver_leader(HARDWARE_SEGA_GAME_GEAR, 3, 1)
remove_driver_leader(HARDWARE_MSX, 4, 1)
+ remove_driver_leader(HARDWARE_SPECTRUM, 5, 1)
// Report problems
if (nParentSelect==-1U)
@@ -517,6 +525,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_MASTER_SYSTEM)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SEGA_GAME_GEAR)
|| ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_MSX)
+ || ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SPECTRUM)
) && (bType == DAT_ARCADE_ONLY)) {
continue;
}
@@ -557,6 +566,10 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
continue;
}
+ if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SPECTRUM) && (bType == DAT_SPECTRUM_ONLY)) {
+ continue;
+ }
+
strcpy(sgName, BurnDrvGetTextA(DRV_NAME));
#ifdef DAT_DEBUG
@@ -572,6 +585,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
remove_driver_leader(HARDWARE_SEGA_MASTER_SYSTEM, 4, 0)
remove_driver_leader(HARDWARE_SEGA_GAME_GEAR, 3, 0)
remove_driver_leader(HARDWARE_MSX, 4, 0)
+ remove_driver_leader(HARDWARE_SPECTRUM, 5, 0)
fprintf(fDat, "\t\n", sgName);
fprintf(fDat, "\t\t%s\n", DecorateGameName(nBurnDrvActive));
diff --git a/src/burner/win32/app.rc b/src/burner/win32/app.rc
index 9dab06e5a..332280a01 100644
--- a/src/burner/win32/app.rc
+++ b/src/burner/win32/app.rc
@@ -1213,6 +1213,7 @@ BEGIN
MENUITEM "Generate dat (Master System only)...", MENU_CLRMAME_PRO_XML_SMS_ONLY
MENUITEM "Generate dat (Game Gear only)...", MENU_CLRMAME_PRO_XML_GG_ONLY
MENUITEM "Generate dat (MSX 1 Games only)...", MENU_CLRMAME_PRO_XML_MSX_ONLY
+ MENUITEM "Generate dat (ZX Spectrum Games only)...",MENU_CLRMAME_PRO_XML_SPECTRUM_ONLY
MENUITEM SEPARATOR
MENUITEM "Generate all dats...", MENU_CLRMAME_PRO_ALL_DATS
END
diff --git a/src/burner/win32/resource.h b/src/burner/win32/resource.h
index a2634b4c4..46798bda7 100644
--- a/src/burner/win32/resource.h
+++ b/src/burner/win32/resource.h
@@ -654,6 +654,7 @@
#define MENU_CLRMAME_PRO_ALL_DATS 10729
#define MENU_SELECTPLACEHOLDER 10730
#define MENU_DISABLEPLACEHOLDER 10731
+#define MENU_CLRMAME_PRO_XML_SPECTRUM_ONLY 10732
#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 b22d1f6f9..74473932d 100644
--- a/src/burner/win32/scrn.cpp
+++ b/src/burner/win32/scrn.cpp
@@ -325,6 +325,7 @@ int CreateDatfileWindows(int bType)
if (bType == DAT_MASTERSYSTEM_ONLY) _sntprintf(szConsoleString, 64, _T(", Master System only"));
if (bType == DAT_GAMEGEAR_ONLY) _sntprintf(szConsoleString, 64, _T(", Game Gear only"));
if (bType == DAT_MSX_ONLY) _sntprintf(szConsoleString, 64, _T(", MSX 1 Games only"));
+ if (bType == DAT_SPECTRUM_ONLY) _sntprintf(szConsoleString, 64, _T(", ZX Spectrum Games only"));
TCHAR szProgramString[25];
_sntprintf(szProgramString, 25, _T("ClrMame Pro XML"));
@@ -420,6 +421,9 @@ int CreateAllDatfilesWindows()
_sntprintf(szFilename, MAX_PATH, _T("%s") _T(APP_TITLE) _T(" v%.20s (%s%s).dat"), buffer, szAppBurnVer, szProgramString, _T(", MSX 1 Games only"));
create_datfile(szFilename, DAT_MSX_ONLY);
+ _sntprintf(szFilename, MAX_PATH, _T("%s") _T(APP_TITLE) _T(" v%.20s (%s%s).dat"), buffer, szAppBurnVer, szProgramString, _T(", ZX Spectrum Games only"));
+ create_datfile(szFilename, DAT_SPECTRUM_ONLY);
+
return nRet;
}
@@ -2238,6 +2242,12 @@ static void OnCommand(HWND /*hDlg*/, int id, HWND /*hwndCtl*/, UINT codeNotify)
}
break;
+ case MENU_CLRMAME_PRO_XML_SPECTRUM_ONLY:
+ if (UseDialogs()) {
+ CreateDatfileWindows(DAT_SPECTRUM_ONLY);
+ }
+ break;
+
case MENU_CLRMAME_PRO_ALL_DATS:
if (UseDialogs()) {
CreateAllDatfilesWindows();