ScummVM API documentation
detection_tables.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 namespace CryOmni3D {
23 
24 #define GUI_OPTIONS_VERSAILLES GUIO3(GUIO_NOMIDI, GUIO_NOSFX, GUIO_NOASPECT)
25 #define GUI_OPTIONS_HNM_PLAYER GUIO4(GUIO_NOMIDI, GUIO_NOSFX, GUIO_NOSPEECH, GUIO_NOASPECT)
26 
27 // To correctly detect root we need files from various places: CD1, CD2, HDD, on-CD install files
28 // We use files common to all installations except the documentation links and the binary
29 // We only check the file presence to simplify and use program to discriminate the version
30 #define VERSAILLES_ENTRY(f, x, s, lien_doc_ext) { \
31  { "11D_LEB1.HNM", 0, nullptr, AD_NO_SIZE}, \
32  { "COFBOUM.HNM", 0, nullptr, AD_NO_SIZE}, \
33  { "lien_doc." lien_doc_ext, 0, nullptr, AD_NO_SIZE}, \
34  { f, 0, x, s}, \
35  AD_LISTEND}
36 
37 #define VERSAILLES_ENTRY_DEF(f, x, s) VERSAILLES_ENTRY(f, x, s, "txt")
38 
39 
40 // To add new entries, you should check which fonts are loaded by the binary by looking at strings in it
41 // and you should check if audio files have underscores to pad to 8.3 format
42 // The simplest is to request a "tree /f" or "find ." and check which files are present
43 // From experience, numeric should be used when available
44 static const CryOmni3DGameDescription gameDescriptions[] = {
45  // Versailles 1685
46  // French Windows 95 from hybrid Win95/DOS CD
47  // From lePhilousophe
48  {
49  {
50  "versailles",
51  "",
52  VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "3775004b96f056716ce615b458b1f394", 372736),
53  Common::FR_FRA,
54  Common::kPlatformWindows,
56  GUI_OPTIONS_VERSAILLES
57  },
58  GType_VERSAILLES,
59  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
60  },
61 
62  // Versailles 1685
63  // French Windows 95 compressed from hybrid Win95/DOS CD
64  // From lePhilousophe
65  {
66  {
67  "versailles",
68  "",
69  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "a07b5d86af5f3a8883ba97db2bade87d", 293223),
70  Common::FR_FRA,
71  Common::kPlatformWindows,
73  GUI_OPTIONS_VERSAILLES
74  },
75  GType_VERSAILLES,
76  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
77  },
78 
79  // Versailles 1685
80  // French DOS from hybrid Win95/DOS CD
81  // From lePhilousophe
82  {
83  {
84  "versailles",
85  "",
86  VERSAILLES_ENTRY_DEF("VERSAILL.PGM", "1c992f034f43418a5da2e8ebd0b92620", 630431),
87  Common::FR_FRA,
88  Common::kPlatformDOS,
90  GUI_OPTIONS_VERSAILLES
91  },
92  GType_VERSAILLES,
93  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
94  },
95 
96  // Versailles 1685
97  // French DOS from hybrid Win95/DOS CD
98  // From legloutondunet, ticket #11035
99  {
100  {
101  "versailles",
102  "",
103  VERSAILLES_ENTRY_DEF("VERSAILL.PGM", "1c992f034f43418a5da2e8ebd0b92620", 598767),
104  Common::FR_FRA,
105  Common::kPlatformDOS,
107  GUI_OPTIONS_VERSAILLES
108  },
109  GType_VERSAILLES,
110  GF_VERSAILLES_FONTS_SET_B | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
111  },
112 
113  // Versailles 1685
114  // French Windows from DVD
115  // From Uka in forum
116  {
117  {
118  "versailles",
119  "",
120  VERSAILLES_ENTRY_DEF("Versaill.exe", "09b4734ce473e4cb78738677ce39f536", 346624),
121  Common::FR_FRA,
122  Common::kPlatformWindows,
124  GUI_OPTIONS_VERSAILLES
125  },
126  GType_VERSAILLES,
127  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
128  },
129 
130  // Versailles 1685
131  // French Windows compressed from DVD
132  // From Uka in forum
133  {
134  {
135  "versailles",
136  "",
137  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "167ac4d6e60856ee84d7369107d858d4", 230056),
138  Common::FR_FRA,
139  Common::kPlatformWindows,
141  GUI_OPTIONS_VERSAILLES
142  },
143  GType_VERSAILLES,
144  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
145  },
146 
147  // Versailles 1685
148  // French Macintosh
149  // From criezy
150  {
151  {
152  "versailles",
153  "",
154  VERSAILLES_ENTRY_DEF("Versailles", "f81935517b1bbb58acf70f25efa5c7f3", 375868),
155  Common::FR_FRA,
156  Common::kPlatformMacintosh,
158  GUI_OPTIONS_VERSAILLES
159  },
160  GType_VERSAILLES,
161  GF_VERSAILLES_FONTS_SET_A | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
162  },
163 
164  // Versailles 1685
165  // English Windows from Mac/Win hybrid CD
166  // From lePhilousophe
167  {
168  {
169  "versailles",
170  "",
171  VERSAILLES_ENTRY_DEF("Versaill.exe", "5c3c10ec821b8d96016041ab649af8c7", 377856),
172  Common::EN_ANY,
173  Common::kPlatformWindows,
175  GUI_OPTIONS_VERSAILLES
176  },
177  GType_VERSAILLES,
178  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_NO | GF_VERSAILLES_LINK_STANDARD,
179  },
180 
181  // Versailles 1685
182  // English Macintosh from Mac/Win hybrid CD
183  // From lePhilousophe
184  {
185  {
186  "versailles",
187  "",
188  VERSAILLES_ENTRY_DEF("Versailles", "7fa3cb6a3c18f6b4ba6be85dcd433cff", 366199),
189  Common::EN_ANY,
190  Common::kPlatformMacintosh,
192  GUI_OPTIONS_VERSAILLES
193  },
194  GType_VERSAILLES,
195  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_NO | GF_VERSAILLES_LINK_STANDARD,
196  },
197 
198  // Versailles 1685
199  // English DOS
200  // From lePhilousophe
201  {
202  {
203  "versailles",
204  "",
205  VERSAILLES_ENTRY_DEF("VERSAILL.PGM", "1c992f034f43418a5da2e8ebd0b92620", 598639),
206  Common::EN_ANY,
207  Common::kPlatformDOS,
209  GUI_OPTIONS_VERSAILLES
210  },
211  GType_VERSAILLES,
212  GF_VERSAILLES_FONTS_SET_B | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
213  },
214 
215  // Versailles 1685
216  // English Windows 95 compressed from hybrid Win95/DOS CD
217  // From scoria in forum
218  {
219  {
220  "versailles",
221  "",
222  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "f5327cb860a67a24a52b6125ddc5e00b", 256146),
223  Common::EN_ANY,
224  Common::kPlatformWindows,
226  GUI_OPTIONS_VERSAILLES
227  },
228  GType_VERSAILLES,
229  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_NO | GF_VERSAILLES_LINK_STANDARD,
230  },
231 
232  // Versailles 1685
233  // English DOS from hybrid Win95/DOS CD
234  // From scoria in forum
235  {
236  {
237  "versailles",
238  "",
239  VERSAILLES_ENTRY_DEF("VERSAILL.PGM", "1c992f034f43418a5da2e8ebd0b92620", 710467),
240  Common::EN_ANY,
241  Common::kPlatformDOS,
243  GUI_OPTIONS_VERSAILLES
244  },
245  GType_VERSAILLES,
246  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_NO | GF_VERSAILLES_LINK_STANDARD,
247  },
248 
249  // Versailles 1685
250  // English Windows compressed from DVD
251  // From Uka in forum
252  {
253  {
254  "versailles",
255  "",
256  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "daeeb8bce80fe74fe28ecc22b6a97f83", 237679),
257  Common::EN_ANY,
258  Common::kPlatformWindows,
260  GUI_OPTIONS_VERSAILLES
261  },
262  GType_VERSAILLES,
263  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
264  },
265 
266  // Versailles 1685
267  // Italian DOS
268  // From lePhilousophe
269  {
270  {
271  "versailles",
272  "",
273  VERSAILLES_ENTRY_DEF("VERSAILL.PGM", "1c992f034f43418a5da2e8ebd0b92620", 603023),
274  Common::IT_ITA,
275  Common::kPlatformDOS,
277  GUI_OPTIONS_VERSAILLES
278  },
279  GType_VERSAILLES,
280  GF_VERSAILLES_FONTS_SET_C | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
281  },
282 
283  // Versailles 1685
284  // Italian Windows compressed from DVD
285  // From Uka in forum
286  {
287  {
288  "versailles",
289  "",
290  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "8b0dcf71a7eb21b8378add8b16857bae", 237878),
291  Common::IT_ITA,
292  Common::kPlatformWindows,
294  GUI_OPTIONS_VERSAILLES
295  },
296  GType_VERSAILLES,
297  GF_VERSAILLES_FONTS_SET_C | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
298  },
299 
300  // Versailles 1685
301  // German Macintosh
302  // From lePhilousophe
303  {
304  {
305  "versailles",
306  "",
307  VERSAILLES_ENTRY("Versailles", "f1aa0603e7f71404f936e4189b4c5b2b", 348614, "ALM"),
308  Common::DE_DEU,
309  Common::kPlatformMacintosh,
311  GUI_OPTIONS_VERSAILLES
312  },
313  GType_VERSAILLES,
314  GF_VERSAILLES_FONTS_SET_B | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_LOCALIZED,
315  },
316 
317  // Versailles 1685
318  // German Windows compressed from DVD
319  // From laenion, ticket #11963
320  {
321  {
322  "versailles",
323  "",
324  VERSAILLES_ENTRY("PROGRAM.Z", "cdd35a623d1ed05d1dc3248735cea868", 236363, "ALM"),
325  Common::DE_DEU,
326  Common::kPlatformWindows,
328  GUI_OPTIONS_VERSAILLES
329  },
330  GType_VERSAILLES,
331  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_LOCALIZED,
332  },
333 
334  // Versailles 1685
335  // German Windows compressed from DVD
336  // From Uka in forum
337  {
338  {
339  "versailles",
340  "",
341  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "2e1a40237f8b28cb6ef29cff137fa561", 238041),
342  Common::DE_DEU,
343  Common::kPlatformWindows,
345  GUI_OPTIONS_VERSAILLES
346  },
347  GType_VERSAILLES,
348  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
349  },
350 
351  // Versailles 1685
352  // Spanish Windows 95 from hybrid Win95/DOS CD
353  // From lePhilousophe
354  {
355  {
356  "versailles",
357  "",
358  VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "78d90d656ec3b76f158721d38bc68083", 346112),
359  Common::ES_ESP,
360  Common::kPlatformWindows,
362  GUI_OPTIONS_VERSAILLES
363  },
364  GType_VERSAILLES,
365  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
366  },
367 
368  // Versailles 1685
369  // Spanish Windows 95 compressed from hybrid Win95/DOS CD
370  // From lePhilousophe
371  {
372  {
373  "versailles",
374  "",
375  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "9e7c0c3125124010d45dde9dc62744ef", 237800),
376  Common::ES_ESP,
377  Common::kPlatformWindows,
379  GUI_OPTIONS_VERSAILLES
380  },
381  GType_VERSAILLES,
382  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
383  },
384 
385  // Versailles 1685
386  // Spanish DOS from hybrid Win95/DOS CD
387  // From lePhilousophe
388  {
389  {
390  "versailles",
391  "",
392  VERSAILLES_ENTRY_DEF("VERSAILL.PGM", "1c992f034f43418a5da2e8ebd0b92620", 715887),
393  Common::ES_ESP,
394  Common::kPlatformDOS,
396  GUI_OPTIONS_VERSAILLES
397  },
398  GType_VERSAILLES,
399  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
400  },
401 
402  // Versailles 1685
403  // Brazilian Windows from DVD
404  // From Uka in forum
405  {
406  {
407  "versailles",
408  "",
409  VERSAILLES_ENTRY_DEF("Versaill.exe", "49aa4581b8c652aa88c633b6c5fe84ea", 346112),
410  Common::PT_BRA,
411  Common::kPlatformWindows,
413  GUI_OPTIONS_VERSAILLES
414  },
415  GType_VERSAILLES,
416  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
417  },
418 
419  // Versailles 1685
420  // Brazilian Windows compressed from DVD
421  // From Uka in forum
422  {
423  {
424  "versailles",
425  "",
426  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "013eabf30fdec7bb7302a5312d094c64", 237952),
427  Common::PT_BRA,
428  Common::kPlatformWindows,
430  GUI_OPTIONS_VERSAILLES
431  },
432  GType_VERSAILLES,
433  GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
434  },
435 
436  // Versailles 1685
437  // Chinese Windows compressed from DVD
438  // From lePhilousophe
439  {
440  {
441  "versailles",
442  "",
443  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "37f3d691e90e17b78050d6a91f7e0377", 242583),
444  Common::ZH_TWN,
445  Common::kPlatformWindows,
447  GUI_OPTIONS_VERSAILLES
448  },
449  GType_VERSAILLES,
450  /* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
451  },
452 
453  // Versailles 1685
454  // Chinese Windows from DVD
455  // From lePhilousophe
456  {
457  {
458  "versailles",
459  "",
460  VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "5209e7c9b20612467af7e9745758ee72", 352256),
461  Common::ZH_TWN,
462  Common::kPlatformWindows,
464  GUI_OPTIONS_VERSAILLES
465  },
466  GType_VERSAILLES,
467  /* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
468  },
469 
470  // Versailles 1685
471  // Korean Windows compressed from DVD
472  // From lePhilousophe
473  {
474  {
475  "versailles",
476  "",
477  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "ffb7599d042fb71f22ab4d76a2e0147f", 244155),
478  Common::KO_KOR,
479  Common::kPlatformWindows,
481  GUI_OPTIONS_VERSAILLES
482  },
483  GType_VERSAILLES,
484  /* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
485  },
486 
487  // Versailles 1685
488  // Korean Windows from DVD
489  // From lePhilousophe
490  {
491  {
492  "versailles",
493  "",
494  VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "549c588e05df8d42b531ffc9b2796303", 355840),
495  Common::KO_KOR,
496  Common::kPlatformWindows,
498  GUI_OPTIONS_VERSAILLES
499  },
500  GType_VERSAILLES,
501  /* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
502  },
503 
504  // Versailles 1685
505  // Japanese Windows compressed from DVD
506  // From lePhilousophe
507  {
508  {
509  "versailles",
510  "",
511  VERSAILLES_ENTRY_DEF("PROGRAM.Z", "1944d7c30dbb25ab10f684422e196c16", 248700),
512  Common::JA_JPN,
513  Common::kPlatformWindows,
515  GUI_OPTIONS_VERSAILLES
516  },
517  GType_VERSAILLES,
518  /* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
519  },
520 
521  // Versailles 1685
522  // Japanese Windows from DVD
523  // From lePhilousophe
524  {
525  {
526  "versailles",
527  "",
528  VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "b7dadaf14cc5783e235125f9d6f6adea", 358912),
529  Common::JA_JPN,
530  Common::kPlatformWindows,
532  GUI_OPTIONS_VERSAILLES
533  },
534  GType_VERSAILLES,
535  /* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
536  },
537 
538  // Versailles 1685
539  // English DOS Non-interactive Demo (US)
540  {
541  {
542  "versailles",
543  "Demo",
544  AD_ENTRY1s("DEMO_US.HNS", "3a65a984353fec354dd26a62ca2cd3fb", 68462303),
545  Common::EN_ANY,
546  Common::kPlatformDOS,
547  ADGF_DEMO,
548  GUI_OPTIONS_HNM_PLAYER
549  },
550  GType_HNM_PLAYER,
551  0,
552  },
553 
554  // Atlantis: The Lost Tales
555  // English DOS Non-interactive Demo
556  {
557  {
558  "atlantis",
559  "Demo",
560  AD_ENTRY1s("ATLANTIS.UBB", "f5b41b857678a61d7f9bd6eb41916ce5", 106611456),
561  Common::EN_ANY,
562  Common::kPlatformDOS,
563  ADGF_DEMO,
564  GUI_OPTIONS_HNM_PLAYER
565  },
566  GType_HNM_PLAYER,
567  0,
568  },
569 
570  { AD_TABLE_END_MARKER, 0, 0 }
571 };
572 
573 static const char *const directoryGlobs[] = {
575  /* DATAS_V/ANIMACTI/LEVEL1/11D_LEB1.HNM
576  * DATAS_V/ANIMACTI/LEVEL7/COFBOUM.HNM */
577  "DATAS_V",
578  /* When user doesn't want to overwrite */
579  "DATAS_V1",
580  "DATAS_V2",
581  "ANIMACTI",
582  "LEVEL1",
583  "LEVEL7",
584  /* PC Setup */
585  /* INSTALL/DATA/TEXTES/LIEN_DOC.TXT
586  * INSTALL/WIN/PROGRAM.Z
587  * INSTALL/DOS/VERSAILL.PGM */
588  "INSTALL",
589  "DATA",
590  "WIN",
591  "DOS",
592  /* Mac Setup */
593  /* Versailles Folder/DATAV_HD/TEXTES/LIEN_DOC.TXT
594  * Versailles Folder/Versailles */
595  "Versailles Ordner",
596  "Versailles Folder",
597  "Dossier Versailles",
598  "DATAV_HD",
599  /* lien_doc.* */
600  "TEXTES",
601 
603  nullptr
604 };
605 
607 //Fallback detection
609 
610 static const CryOmni3DGameDescription fallbackDescs[] = {
611  {
612  {
613  "versailles",
614  "",
615  AD_ENTRY1(0, 0),
616  Common::UNK_LANG,
617  Common::kPlatformUnknown,
619  GUIO0()
620  },
621  0,
622  0,
623  },
624 };
625 
626 static const ADFileBasedFallback fileBased[] = {
627  { &fallbackDescs[0].desc, { "11D_LEB1.HNM", "COFBOUM.HNM", "VERSAILL.PGM", 0 } },
628  { &fallbackDescs[0].desc, { "11D_LEB1.HNM", "COFBOUM.HNM", "PROGRAM.Z", 0 } },
629  { &fallbackDescs[0].desc, { "11D_LEB1.HNM", "COFBOUM.HNM", "VERSAILL.EXE", 0 } },
630  { &fallbackDescs[0].desc, { "11D_LEB1.HNM", "COFBOUM.HNM", "Versailles", 0 } },
631  { 0, { 0 } }
632 };
633 
634 } // End of namespace CryOmni3D
Definition: cryomni3d.h:62
Flag to designate not yet officially supported games that are not fit for public testing.
Definition: advancedDetector.h:142
const ADGameDescription * desc
Definition: advancedDetector.h:334
No flags.
Definition: advancedDetector.h:139
#define AD_TABLE_END_MARKER
Definition: advancedDetector.h:326
#define AD_ENTRY1(f, x)
Definition: advancedDetector.h:110
Definition: advancedDetector.h:329
Add "-demo" to gameid.
Definition: advancedDetector.h:156
#define AD_ENTRY1s(f, x, s)
Definition: advancedDetector.h:116