- Augment all executable entries with platform

- Augment all search data tables with platform and language, where required

svn-id: r44135
This commit is contained in:
Johannes Schickel 2009-09-17 02:26:46 +00:00
parent 4245f2e842
commit f440a2bcd9
5 changed files with 751 additions and 719 deletions

View File

@ -1055,8 +1055,6 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
bool allDataPresentAlready = true;
for (const int *entry = needList; *entry != -1; ++entry) {
bool found = false;
// Try whether the data is present in the kyra.dat file already
filename[0] = 0;
if (!getFilename(filename, g, *entry))
@ -1070,11 +1068,13 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
allDataPresentAlready = false;
bool found = false;
for (const ExtractEntry *p = extractProviders; p->id != -1; ++p) {
if (p->id == *entry) {
// First check for special search ids
// First check for language and platform specific search data
for (const ExtractEntrySearchData *d = p->providers; d->hint.size != 0; ++d) {
if (d->specialId == g->special) {
if (d->lang == g->lang && d->platform == g->platform) {
found = true;
search.addData(d->hint);
@ -1088,7 +1088,7 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
// Add non special variants
for (const ExtractEntrySearchData *d = p->providers; d->hint.size != 0; ++d) {
if (d->specialId == -1) {
if (d->lang == UNK_LANG || d->platform == kPlatformUnknown) {
found = true;
search.addData(d->hint);

View File

@ -269,7 +269,9 @@ enum kExtractID {
};
struct ExtractEntrySearchData {
int specialId;
int lang;
int platform;
SearchData hint;
};
@ -339,12 +341,13 @@ enum kGame {
struct Game {
int game;
int lang;
int platform;
int special;
const char *md5;
};
#define GAME_DUMMY_ENTRY { -1, -1, -1, 0 }
#define GAME_DUMMY_ENTRY { -1, -1, -1, -1, 0 }
struct GameNeed {
int game;

View File

@ -710,82 +710,82 @@ const Language languageTable[] = {
const Game kyra1Games[] = {
// Demos
{ kKyra1, EN_ANY, kDemoVersion, "7b7504c8560ffc914d34c44c71b3094c" },
{ kKyra1, EN_ANY, kDemoCDVersion, "226fdba99cb11ef1047131d9a50e6292" },
{ kKyra1, EN_ANY, kPlatformPC, kDemoVersion, "7b7504c8560ffc914d34c44c71b3094c" },
{ kKyra1, EN_ANY, kPlatformPC, kDemoCDVersion, "226fdba99cb11ef1047131d9a50e6292" },
// Amiga
{ kKyra1, EN_ANY, kAmigaVersion, "b620564b6b7e0787b053ca9e35bd9f52" },
{ kKyra1, EN_ANY, kPlatformAmiga, kAmigaVersion, "b620564b6b7e0787b053ca9e35bd9f52" },
// Floppy
{ kKyra1, EN_ANY, -1, "76a4fc84e173cadb6369785787e1546e" },
{ kKyra1, DE_DEU, -1, "9442d6f7db6a41f3dd4aa4de5d36e107" },
{ kKyra1, FR_FRA, -1, "aa9d6d78d8b199deaf48efeca6d19af2" },
{ kKyra1, IT_ITA, -1, "5d7550306b369a3492f9f3402702477c" },
{ kKyra1, ES_ESP, -1, "9ff130d2558bcd674d4074849d93c362" },
{ kKyra1, EN_ANY, kPlatformPC, -1, "76a4fc84e173cadb6369785787e1546e" },
{ kKyra1, DE_DEU, kPlatformPC, -1, "9442d6f7db6a41f3dd4aa4de5d36e107" },
{ kKyra1, FR_FRA, kPlatformPC, -1, "aa9d6d78d8b199deaf48efeca6d19af2" },
{ kKyra1, IT_ITA, kPlatformPC, -1, "5d7550306b369a3492f9f3402702477c" },
{ kKyra1, ES_ESP, kPlatformPC, -1, "9ff130d2558bcd674d4074849d93c362" },
// Talkie
{ kKyra1, EN_ANY, kTalkieVersion, "1ebc18f3e7fbb72474a55cb0fa089ed4" },
{ kKyra1, DE_DEU, kTalkieVersion, "c65d381184f98ac26d9efd2d45baef51" },
{ kKyra1, FR_FRA, kTalkieVersion, "307c5d4a554d9068ac3d326e350ae4a6" },
{ kKyra1, IT_ITA, kTalkieVersion, "d0f1752098236083d81b9497bd2b6989" }, // Italian fan translation
{ kKyra1, EN_ANY, kPlatformPC, kTalkieVersion, "1ebc18f3e7fbb72474a55cb0fa089ed4" },
{ kKyra1, DE_DEU, kPlatformPC, kTalkieVersion, "c65d381184f98ac26d9efd2d45baef51" },
{ kKyra1, FR_FRA, kPlatformPC, kTalkieVersion, "307c5d4a554d9068ac3d326e350ae4a6" },
{ kKyra1, IT_ITA, kPlatformPC, kTalkieVersion, "d0f1752098236083d81b9497bd2b6989" }, // Italian fan translation
// FM-TOWNS
{ kKyra1, EN_ANY, kFMTownsVersionE, "5a3ad60ccd0f2e29463e0368cd14a60d" },
{ kKyra1, JA_JPN, kFMTownsVersionJ, "5a3ad60ccd0f2e29463e0368cd14a60d" },
{ kKyra1, EN_ANY, kPlatformFMTowns, kFMTownsVersionE, "5a3ad60ccd0f2e29463e0368cd14a60d" },
{ kKyra1, JA_JPN, kPlatformFMTowns, kFMTownsVersionJ, "5a3ad60ccd0f2e29463e0368cd14a60d" },
GAME_DUMMY_ENTRY
};
const Game kyra2Games[] = {
// demos
{ kKyra2, EN_ANY, k2DemoVersion, "a620a37579dd44ab0403482285e3897f" },
{ kKyra2, EN_ANY, k2CDDemoE, "fa54d8abfe05f9186c05f7de7eaf1480" },
{ kKyra2, FR_FRA, k2CDDemoF, "fa54d8abfe05f9186c05f7de7eaf1480" },
{ kKyra2, DE_DEU, k2CDDemoG, "fa54d8abfe05f9186c05f7de7eaf1480" },
{ kKyra2, EN_ANY, kPlatformPC, k2DemoVersion, "a620a37579dd44ab0403482285e3897f" },
{ kKyra2, EN_ANY, kPlatformPC, k2CDDemoE, "fa54d8abfe05f9186c05f7de7eaf1480" },
{ kKyra2, FR_FRA, kPlatformPC, k2CDDemoF, "fa54d8abfe05f9186c05f7de7eaf1480" },
{ kKyra2, DE_DEU, kPlatformPC, k2CDDemoG, "fa54d8abfe05f9186c05f7de7eaf1480" },
// floppy games
{ kKyra2, EN_ANY, k2FloppyFile1, "9b0f5e57b5a2ed88b5b989cbb402b6c7" },
{ kKyra2, FR_FRA, k2FloppyFile1, "df31cc9e37e1cf68df2fdc75ddf2d87b" },
{ kKyra2, DE_DEU, k2FloppyFile1, "0ca4f9a1438264a4c63c3218e064ed3b" },
{ kKyra2, IT_ITA, k2FloppyFile1, "178d3ab913f61bfba21d2fb196405e8c" },
{ kKyra2, EN_ANY, k2FloppyFile2, "7c3eadbe5122722cf2e5e1611e19dfb9" },
{ kKyra2, FR_FRA, k2FloppyFile2, "fc2c6782778e6c6d5a553d1cb73c98ad" },
{ kKyra2, DE_DEU, k2FloppyFile2, "0d9b0eb7b0ad889ec942d74d80dde1bf" },
{ kKyra2, IT_ITA, k2FloppyFile2, "3a61ed6b7c00ddae383a0361799e2ba6" },
{ kKyra2, EN_ANY, kPlatformPC, k2FloppyFile1, "9b0f5e57b5a2ed88b5b989cbb402b6c7" },
{ kKyra2, FR_FRA, kPlatformPC, k2FloppyFile1, "df31cc9e37e1cf68df2fdc75ddf2d87b" },
{ kKyra2, DE_DEU, kPlatformPC, k2FloppyFile1, "0ca4f9a1438264a4c63c3218e064ed3b" },
{ kKyra2, IT_ITA, kPlatformPC, k2FloppyFile1, "178d3ab913f61bfba21d2fb196405e8c" },
{ kKyra2, EN_ANY, kPlatformPC, k2FloppyFile2, "7c3eadbe5122722cf2e5e1611e19dfb9" },
{ kKyra2, FR_FRA, kPlatformPC, k2FloppyFile2, "fc2c6782778e6c6d5a553d1cb73c98ad" },
{ kKyra2, DE_DEU, kPlatformPC, k2FloppyFile2, "0d9b0eb7b0ad889ec942d74d80dde1bf" },
{ kKyra2, IT_ITA, kPlatformPC, k2FloppyFile2, "3a61ed6b7c00ddae383a0361799e2ba6" },
// talkie games
{ kKyra2, EN_ANY, k2CDFile1E, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
{ kKyra2, FR_FRA, k2CDFile1F, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
{ kKyra2, DE_DEU, k2CDFile1G, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
{ kKyra2, EN_ANY, k2CDFile2E, "e20d0d2e500f01e399ec588247a7e213" },
{ kKyra2, FR_FRA, k2CDFile2F, "e20d0d2e500f01e399ec588247a7e213" },
{ kKyra2, DE_DEU, k2CDFile2G, "e20d0d2e500f01e399ec588247a7e213" },
{ kKyra2, IT_ITA, k2CDFile1I, "130795aa8f2333250c895dae9028b9bb" }, // Italian Fan Translation (using same offsets as English)
{ kKyra2, EN_ANY, kPlatformPC, k2CDFile1E, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
{ kKyra2, FR_FRA, kPlatformPC, k2CDFile1F, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
{ kKyra2, DE_DEU, kPlatformPC, k2CDFile1G, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
{ kKyra2, EN_ANY, kPlatformPC, k2CDFile2E, "e20d0d2e500f01e399ec588247a7e213" },
{ kKyra2, FR_FRA, kPlatformPC, k2CDFile2F, "e20d0d2e500f01e399ec588247a7e213" },
{ kKyra2, DE_DEU, kPlatformPC, k2CDFile2G, "e20d0d2e500f01e399ec588247a7e213" },
{ kKyra2, IT_ITA, kPlatformPC, k2CDFile1I, "130795aa8f2333250c895dae9028b9bb" }, // Italian Fan Translation (using same offsets as English)
// FM-TOWNS games
{ kKyra2, EN_ANY, k2TownsFile1E, "74f50d79c919cc8e7196c24942ce43d7" },
{ kKyra2, JA_JPN, k2TownsFile1J, "74f50d79c919cc8e7196c24942ce43d7" },
{ kKyra2, EN_ANY, k2TownsFile2E, "a9a7fd4f05d00090e9e8bda073e6d431" },
{ kKyra2, JA_JPN, k2TownsFile2J, "a9a7fd4f05d00090e9e8bda073e6d431" },
{ kKyra2, EN_ANY, kPlatformFMTowns, k2TownsFile1E, "74f50d79c919cc8e7196c24942ce43d7" },
{ kKyra2, JA_JPN, kPlatformFMTowns, k2TownsFile1J, "74f50d79c919cc8e7196c24942ce43d7" },
{ kKyra2, EN_ANY, kPlatformFMTowns, k2TownsFile2E, "a9a7fd4f05d00090e9e8bda073e6d431" },
{ kKyra2, JA_JPN, kPlatformFMTowns, k2TownsFile2J, "a9a7fd4f05d00090e9e8bda073e6d431" },
GAME_DUMMY_ENTRY
};
const Game kyra3Games[] = {
{ kKyra3, EN_ANY, -1, "bf68701eb591d0b72219f314c0d32688" },
{ kKyra3, EN_ANY, kPlatformPC, -1, "bf68701eb591d0b72219f314c0d32688" },
GAME_DUMMY_ENTRY
};
const Game lolGames[] = {
// DOS demo
{ kLol, EN_ANY, k2DemoLol, "30bb5af87d38adb47d3e6ce06b1cb042" },
{ kLol, EN_ANY, kPlatformPC, k2DemoLol, "30bb5af87d38adb47d3e6ce06b1cb042" },
// DOS floppy
{ kLol, EN_ANY, -1, "6b843869772c1b779e1386be868c15dd" },
{ kLol, EN_ANY, kPlatformPC, -1, "6b843869772c1b779e1386be868c15dd" },
// DOS CD
{ kLol, EN_ANY, kLolCD1, "9d1778314de80598c0b0d032e2a1a1cf" },
{ kLol, EN_ANY, kLolCD2, "263998ec600afca1cc7b935c473df670" },
{ kLol, EN_ANY, kPlatformPC, kLolCD1, "9d1778314de80598c0b0d032e2a1a1cf" },
{ kLol, EN_ANY, kPlatformPC, kLolCD2, "263998ec600afca1cc7b935c473df670" },
GAME_DUMMY_ENTRY
};

File diff suppressed because it is too large Load Diff

View File

@ -232,6 +232,30 @@ void NORETURN_PRE error(const char *s, ...) NORETURN_POST;
void warning(const char *s, ...);
void debug(int level, const char *s, ...);
enum Platform {
kPlatformPC,
kPlatformAmiga,
kPlatformAtariST,
kPlatformMacintosh,
kPlatformFMTowns,
kPlatformWindows,
kPlatformNES,
kPlatformC64,
kPlatformCoCo3,
kPlatformLinux,
kPlatformAcorn,
kPlatformSegaCD,
kPlatform3DO,
kPlatformPCEngine,
kPlatformApple2GS,
kPlatformPC98,
kPlatformWii,
kPlatformPSX,
kPlatformUnknown = -1
};
enum {
EN_ANY, // Generic English (when only one game version exist)
EN_USA,