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
22namespace Ultima {
23
24#define GUI_OPTIONS_ULTIMA0 GUIO0()
25#define GUI_OPTIONS_ULTIMA1 GUIO0()
26#define GUI_OPTIONS_ULTIMA4 GUIO1(GUIO_NOSPEECH)
27#define GUI_OPTIONS_ULTIMA6 GUIO0()
28#define GUI_OPTIONS_ULTIMA8 GUIO9(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FRAME_SKIPPING, GAMEOPTION_FRAME_LIMITING, GAMEOPTION_CHEATS, GAMEOPTION_HIGH_RESOLUTION, GAMEOPTION_FOOTSTEP_SOUNDS, GAMEOPTION_JUMP_TO_MOUSE, GAMEOPTION_FONT_REPLACEMENT, GAMEOPTION_FONT_ANTIALIASING)
29#define GUI_OPTIONS_REMORSE GUIO6(GUIO_NOMIDI, GAMEOPTION_FRAME_SKIPPING, GAMEOPTION_FRAME_LIMITING, GAMEOPTION_CHEATS, GAMEOPTION_HIGH_RESOLUTION, GAMEOPTION_CAMERA_WITH_SILENCER)
30#define GUI_OPTIONS_REGRET GUIO7(GUIO_NOMIDI, GAMEOPTION_FRAME_SKIPPING, GAMEOPTION_FRAME_LIMITING, GAMEOPTION_CHEATS, GAMEOPTION_HIGH_RESOLUTION, GAMEOPTION_CAMERA_WITH_SILENCER, GAMEOPTION_ALWAYS_CHRISTMAS)
31#define GUI_OPTIONS_REGRET_DEMO GUIO6(GUIO_NOMIDI, GAMEOPTION_FRAME_SKIPPING, GAMEOPTION_FRAME_LIMITING, GAMEOPTION_CHEATS, GAMEOPTION_HIGH_RESOLUTION, GAMEOPTION_CAMERA_WITH_SILENCER)
32#define GUI_OPTIONS_MARTIAN_DREAMS GUIO0()
33#define GUI_OPTIONS_SAVAGE_EMPIRE GUIO0()
34
35// Ultima 6 normal mode only
36#define ENTRY_ULTIMA6_NORMAL(FILENAME, MD5, FILESIZE, LANG, PLATFORM) {{"ultima6", 0, AD_ENTRY1s(FILENAME, MD5, FILESIZE), LANG, PLATFORM, ADGF_NO_FLAGS, GUI_OPTIONS_ULTIMA6}, GAME_ULTIMA6, 0}
37
38// Ultima 6 enhanced mode only
39#define ENTRY_ULTIMA6_ENHANCED(FILENAME, MD5, FILESIZE, LANG, PLATFORM) {{"ultima6_enh", 0, AD_ENTRY1s(FILENAME, MD5, FILESIZE), LANG, PLATFORM, ADGF_NO_FLAGS, GUI_OPTIONS_ULTIMA6}, GAME_ULTIMA6, GF_VGA_ENHANCED}
40
41// Ultima 6 both normal and enhanced mode (this should normally be used)
42#define ENTRY_ULTIMA6(FILENAME, MD5, FILESIZE, LANG, PLATFORM) \
43 ENTRY_ULTIMA6_NORMAL(FILENAME, MD5, FILESIZE, LANG, PLATFORM), \
44 ENTRY_ULTIMA6_ENHANCED(FILENAME, MD5, FILESIZE, LANG, PLATFORM)
45
46// Ultima 6 normal mode only - unstable (currently only used for the PC98 version)
47#define ENTRY_ULTIMA6_NORMAL_UNSTABLE(FILENAME, MD5, FILESIZE, LANG, PLATFORM) {{"ultima6", 0, AD_ENTRY1s(FILENAME, MD5, FILESIZE), LANG, PLATFORM, ADGF_UNSTABLE, GUI_OPTIONS_ULTIMA6}, GAME_ULTIMA6, 0}
48
49static const PlainGameDescriptor ULTIMA_GAMES[] = {
50 { "akalabeth", "Akalabeth: World of Doom" },
51#ifndef RELEASE_BUILD
52 { "ultima1", "Ultima I: The First Age of Darkness" },
53#endif
54 { "ultima4", "Ultima IV: Quest of the Avatar" },
55 { "ultima4_enh", "Ultima IV: Quest of the Avatar - Enhanced" },
56 { "ultima6", "Ultima VI: The False Prophet" },
57 { "ultima6_enh", "Ultima VI: The False Prophet - Enhanced" },
58 { "ultima8", "Ultima VIII: Pagan" },
59 { "remorse", "Crusader: No Remorse" },
60 { "regret", "Crusader: No Regret" },
61
62 { "martiandreams", "Worlds of Ultima: Martian Dreams" },
63 { "martiandreams_enh", "Worlds of Ultima: Martian Dreams - Enhanced" },
64 { "thesavageempire", "Worlds of Ultima: The Savage Empire" },
65 { "thesavageempire_enh", "Worlds of Ultima: The Savage Empire - Enhanced" },
66 { 0, 0 }
67};
68
69static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
70 {
71 // Akalabeth: World of Doom
72 {
73 "akalabeth",
74 nullptr,
75 AD_ENTRY1s("ak.dat", "f083346a49f450319a624d170a55d9e3", 17241),
76 Common::EN_ANY,
77 Common::kPlatformDOS,
79 GUI_OPTIONS_ULTIMA0
80 },
81 GAME_AKALABETH,
82 0
83 },
84
85 {
86 // Ultima I - The First Age of Darkness
87 {
88 "ultima1",
89 "VGA Enhanced",
90 {
91 { "maptiles.vga", 0, "d4b67e17affe64c0ddb48511bfe4cf37", 47199 },
92 { "objtiles.vga", 0, "1a1446970d095aeb03bcf6dcec40d6e2", 289344 },
93 { "map.bin", 0, "f99633a0110ccf90837ab161be56cf1c", 13104 },
95 },
96 Common::EN_ANY,
97 Common::kPlatformDOS,
99 GUI_OPTIONS_ULTIMA1
100 },
101 GAME_ULTIMA1,
102 GF_VGA_ENHANCED
103 },
104
105 {
106 // Ultima I - The First Age of Darkness, PC98 version
107 {
108 "ultima1",
109 0,
110 AD_ENTRY2s("egctown.bin", "4f7de68f6689cf9617aa1ea03240137e", 4896,
111 "map.bin", "f99633a0110ccf90837ab161be56cf1c", 13104),
112 Common::JA_JPN,
113 Common::kPlatformPC98,
115 GUI_OPTIONS_ULTIMA1
116 },
117 GAME_ULTIMA1,
118 0
119 },
120
121 {
122 // Ultima I - The First Age of Darkness
123 {
124 "ultima1",
125 0,
126 AD_ENTRY1s("map.bin", "f99633a0110ccf90837ab161be56cf1c", 13104),
127 Common::EN_ANY,
128 Common::kPlatformDOS,
130 GUI_OPTIONS_ULTIMA1
131 },
132 GAME_ULTIMA1,
133 0
134 },
135
136 {
137 // Ultima IV - Quest of the Avatar
138 {
139 "ultima4",
140 0,
141 AD_ENTRY1s("britain.ult", "304fe52ce5f34b9181052363d74d7505", 1280),
142 Common::EN_ANY,
143 Common::kPlatformDOS,
145 GUI_OPTIONS_ULTIMA4
146 },
147 GAME_ULTIMA4,
148 0
149 },
150
151 {
152 // Ultima IV - Quest of the Avatar
153 {
154 "ultima4_enh",
155 0,
156 AD_ENTRY1s("britain.ult", "304fe52ce5f34b9181052363d74d7505", 1280),
157 Common::EN_ANY,
158 Common::kPlatformDOS,
160 GUI_OPTIONS_ULTIMA4
161 },
162 GAME_ULTIMA4,
163 GF_VGA_ENHANCED
164 },
165
166 {
167 // Ultima IV - Quest of the Avatar + French patch
168 {
169 "ultima4",
170 "Fanmade",
171 AD_ENTRY1s("britain.ult", "61b8f1f415e1bfb459ab3831eabd4899", 1280),
172 Common::FR_FRA,
173 Common::kPlatformDOS,
175 GUI_OPTIONS_ULTIMA4
176 },
177 GAME_ULTIMA4,
178 0
179 },
180
181 {
182 // Ultima IV - Quest of the Avatar + French patch
183 {
184 "ultima4_enh",
185 "Fanmade",
186 AD_ENTRY1s("britain.ult", "61b8f1f415e1bfb459ab3831eabd4899", 1280),
187 Common::FR_FRA,
188 Common::kPlatformDOS,
190 GUI_OPTIONS_ULTIMA4
191 },
192 GAME_ULTIMA4,
193 GF_VGA_ENHANCED
194 },
195
196 // GOG Ultima VI
197 ENTRY_ULTIMA6("converse.a", "5065716423ef1389e3f7b4946d815c26", 162615,
198 Common::EN_ANY,
199 Common::kPlatformDOS),
200
201 // Ultima VI - French patch by Docwise Dragon
202 // https://sirjohn.de/en/ultima6/ultima-vi-french-translation-patch/
203 // Note: Not all user interface elements are translated in ScummVM
204 ENTRY_ULTIMA6("converse.a", "35c95d56737d957db7e72193e810053b", 182937,
205 Common::FR_FRA,
206 Common::kPlatformDOS),
207
208 // Ultima VI - German Patch https://sirjohn.de/ultima-6/
209 // Note: Not all user interface elements are translated in ScummVM
210 ENTRY_ULTIMA6("converse.a", "ae979230b97f8813bdf8f82698847435", 198627,
211 Common::DE_DEU,
212 Common::kPlatformDOS),
213
214 // Ultima VI - German Patch 1.6 https://sirjohn.de/ultima-6/
215 // Note: Not all user interface elements are translated in ScummVM
216 ENTRY_ULTIMA6("converse.a", "5242f0228bbc9c3a60c7aa6071499688", 198797,
217 Common::DE_DEU,
218 Common::kPlatformDOS),
219
220 // Ultima VI - German Patch 1.7 https://sirjohn.de/ultima-6/
221 // Note: Not all user interface elements are translated in ScummVM
222 ENTRY_ULTIMA6("converse.a", "f4e9280402baff12e5132e62f7bbb54f", 198810,
223 Common::DE_DEU,
224 Common::kPlatformDOS),
225
226 // PC98 Ultima 6
227 ENTRY_ULTIMA6_NORMAL_UNSTABLE("converse.a", "99975e79e7cae3ee24a8e33982f60fe4", 190920,
228 Common::JA_JPN,
229 Common::kPlatformPC98),
230
231 // Ultima VI - Nitpickers Delight older version
232 ENTRY_ULTIMA6("converse.a", "5c15ba2a75fb921b715a1a0bf0152bac", 165874,
233 Common::EN_ANY,
234 Common::kPlatformDOS),
235
236 // Ultima VI - Nitpickers Delight newer version
237 ENTRY_ULTIMA6("converse.a", "9f77c84a03efc77df2d53544d1275da8", 167604,
238 Common::EN_ANY,
239 Common::kPlatformDOS),
240
241 // Ultima VI - alternative release
242 // TRAC #14659
243 ENTRY_ULTIMA6("converse.a", "ee22a6ac3964f9ff11a48fcb3f4a9389", 162458,
244 Common::EN_ANY,
245 Common::kPlatformDOS),
246
247 // Ultima VIII - CD (provided by ddeluca1com, bug #11944)
248 {
249 {
250 "ultima8",
251 "",
252 AD_ENTRY1s("usecode/eusecode.flx", "5494165cbf4b07be04a465e28350e086", 1209018),
253 Common::EN_ANY,
254 Common::kPlatformDOS,
256 GUI_OPTIONS_ULTIMA8
257 },
258 GAME_ULTIMA8,
259 0
260 },
261
262 // Ultima VIII - Ultima Collection 1998
263 {
264 {
265 "ultima8",
266 "",
267 AD_ENTRY1s("usecode/eusecode.flx", "87c8b584e2947e5e4d99bd8bff6cea2e", 1251108),
268 Common::EN_ANY,
269 Common::kPlatformDOS,
271 GUI_OPTIONS_ULTIMA8
272 },
273 GAME_ULTIMA8,
274 0
275 },
276
277 // GOG Ultima VIII
278 {
279 {
280 "ultima8",
281 "Gold Edition",
282 AD_ENTRY2s("usecode/eusecode.flx", "c61f1dacde591cb39d452264e281f234", 1251108,
283 "static/eintro.skf", "b34169ece4286735262ac3430c441909", 1297731),
284 Common::EN_ANY,
285 Common::kPlatformDOS,
287 GUI_OPTIONS_ULTIMA8
288 },
289 GAME_ULTIMA8,
290 0
291 },
292
293 {
294 {
295 "ultima8",
296 "Gold Edition",
297 AD_ENTRY2s("usecode/fusecode.flx", "4017eb8678ee24af0ce8c7647a05509b", 1300957,
298 "static/fintro.skf", "58990327f3e155551a69f41e7dcc0d08", 1275321),
299 Common::FR_FRA,
300 Common::kPlatformDOS,
302 GUI_OPTIONS_ULTIMA8
303 },
304 GAME_ULTIMA8,
305 0
306 },
307
308 {
309 {
310 "ultima8",
311 "Gold Edition",
312 AD_ENTRY2s("usecode/gusecode.flx", "d69599a46870b66c1b7c02710ed185bd", 1378604,
313 "static/gintro.skf", "4a2f3a996d13dba0528ef73264303bf5", 1264343),
314 Common::DE_DEU,
315 Common::kPlatformDOS,
317 GUI_OPTIONS_ULTIMA8
318 },
319 GAME_ULTIMA8,
320 0
321 },
322
323 // Fan translation patch for GOG version (provided by Condezer0, bug #14484)
324 {
325 {
326 "ultima8",
327 "Gold Edition",
328 AD_ENTRY2s("usecode/eusecode.flx", "cd4b330e09efd232360fd476bcc6a1d1", 1285847,
329 "static/eintro.skf", "9f8a9d95248ae3ae4b74a24ab88bf95f", 1233678),
330 Common::ES_ESP,
331 Common::kPlatformDOS,
333 GUI_OPTIONS_ULTIMA8
334 },
335 GAME_ULTIMA8,
336 0
337 },
338
339 // German CD version
340 {
341 {
342 "ultima8",
343 "",
344 AD_ENTRY1s("usecode/gusecode.flx", "dc981f82c6303548ad1c967cdef1a0ea", 1335445),
345 Common::DE_DEU,
346 Common::kPlatformDOS,
348 GUI_OPTIONS_ULTIMA8
349 },
350 GAME_ULTIMA8,
351 0
352 },
353
354 // French version (provided by habib256 bug #13003)
355 {
356 {
357 "ultima8",
358 "",
359 AD_ENTRY1s("usecode/fusecode.flx", "6f7643af10bffa11debea4533ba47061", 1300957),
360 Common::FR_FRA,
361 Common::kPlatformDOS,
363 GUI_OPTIONS_ULTIMA8
364 },
365 GAME_ULTIMA8,
366 0
367 },
368
369 {
370 {
371 "ultima8",
372 "",
373 AD_ENTRY1s("usecode/eusecode.flx", "1abad7a58e052ff3d9664df1ab2ddb86", 1136206),
374 Common::ES_ESP,
375 Common::kPlatformDOS,
377 GUI_OPTIONS_ULTIMA8
378 },
379 GAME_ULTIMA8,
380 0
381 },
382
383 {
384 {
385 "ultima8",
386 "",
387 AD_ENTRY1s("usecode/jusecode.flx", "1793bb252b805bf8d59300690987c605", 1208003),
388 Common::JA_JPN,
389 Common::kPlatformDOS,
391 GUI_OPTIONS_ULTIMA8
392 },
393 GAME_ULTIMA8,
394 0
395 },
396
397 // Crusader games use a very similar engine to ultima8.
398 // complete. Because each version requires a separate Usecode callback
399 // table, only fully patched versions are marked supported.
400
401 // GOG Crusader - No Remorse (V1.21)
402 {
403 {
404 "remorse",
405 "",
406 AD_ENTRY1s("usecode/eusecode.flx", "0a0f64507adc4f280129c735ee9cad42", 556613),
407 Common::EN_ANY,
408 Common::kPlatformDOS,
409 ADGF_USECODE_DEFAULT,
410 GUI_OPTIONS_REMORSE
411 },
412 GAME_CRUSADER_REM,
413 0
414 },
415
416 // Crusader - No Remorse CD version (V1.10) provided by heff978 (#15065)
417 {
418 {
419 "remorse",
420 "",
421 AD_ENTRY1s("usecode/eusecode.flx", "73b413b1ef291c4512f16c719ad746f3", 419591),
422 Common::EN_ANY,
423 Common::kPlatformDOS,
425 GUI_OPTIONS_REMORSE
426 },
427 GAME_CRUSADER_REM,
428 0
429 },
430
431 // Crusader - No Remorse provided by andy155
432 {
433 {
434 "remorse",
435 "",
436 AD_ENTRY1s("usecode/eusecode.flx", "3fb211f4adfd80595078afc85bdfe7b4", 433143),
437 Common::EN_ANY,
438 Common::kPlatformDOS,
440 GUI_OPTIONS_REMORSE
441 },
442 GAME_CRUSADER_REM,
443 0
444 },
445
446 // Crusader - No Remorse (V1.01), unpatched data on the GOG CD image
447 {
448 {
449 "remorse",
450 "",
451 AD_ENTRY1s("usecode/eusecode.flx", "8c74327e30088ce93f08a15a7f85b3ce", 418556),
452 Common::EN_ANY,
453 Common::kPlatformDOS,
454 ADGF_UNSTABLE | ADGF_USECODE_ORIG,
455 GUI_OPTIONS_REMORSE
456 },
457 GAME_CRUSADER_REM,
458 0
459 },
460
461 // Crusader - No Remorse (French) provided by BeWorld2018
462 {
463 {
464 "remorse",
465 "",
466 AD_ENTRY1s("usecode/eusecode.flx", "efbd33d6a5e8f14e9c57f963c3fbe939", 423051),
467 Common::FR_FRA,
468 Common::kPlatformDOS,
469 ADGF_UNSTABLE | ADGF_USECODE_FR,
470 GUI_OPTIONS_REMORSE
471 },
472 GAME_CRUSADER_REM,
473 0
474 },
475
476 // Crusader - No Remorse (Spanish) provided by Wesker
477 {
478 {
479 "remorse",
480 "",
481 AD_ENTRY1s("usecode/eusecode.flx", "36a16d70c97d0379f1133cc743c31313", 558493),
482 Common::ES_ESP,
483 Common::kPlatformDOS,
484 ADGF_USECODE_ES,
485 GUI_OPTIONS_REMORSE
486 },
487 GAME_CRUSADER_REM,
488 0
489 },
490
491 // Crusader - No Remorse (Spanish fan patch) provided by Wesker
492 {
493 {
494 "remorse",
495 "Fan Translation",
496 AD_ENTRY1s("usecode/eusecode.flx", "a8b5c421c5d74be8c69fcd4fecadd1dd", 559015),
497 Common::ES_ESP,
498 Common::kPlatformDOS,
499 ADGF_USECODE_DEFAULT,
500 GUI_OPTIONS_REMORSE
501 },
502 GAME_CRUSADER_REM,
503 0
504 },
505
506 // Crusader - No Remorse (Japanese) provided by Dominus
507 {
508 {
509 "remorse",
510 "",
511 AD_ENTRY1s("usecode/jusecode.flx", "088105959be4f2de1cb9e796e71c5f2d", 554522),
512 Common::JA_JPN,
513 Common::kPlatformWindows,
514 ADGF_UNSTABLE | ADGF_USECODE_JA,
515 GUI_OPTIONS_REMORSE
516 },
517 GAME_CRUSADER_REM,
518 0
519 },
520
521 // Crusader - No Remorse - Demo V1.12D
522 {
523 {
524 "remorse",
525 "Demo",
526 AD_ENTRY1s("usecode/eusecode.flx", "41cdca35b62f4b2a7bb4c3b1ec782423", 556613),
527 Common::EN_ANY,
528 Common::kPlatformDOS,
529 ADGF_DEMO,
530 GUI_OPTIONS_REMORSE
531 },
532 GAME_CRUSADER_REM,
533 0
534 },
535
536 // GOG Crusader - No Regret (V1.06)
537 {
538 {
539 "regret",
540 "",
541 AD_ENTRY1s("usecode/eusecode.flx", "1bb360156b7240a1f05eb9bda01c54db", 481652),
542 Common::EN_ANY,
543 Common::kPlatformDOS,
544 ADGF_UNSTABLE | ADGF_USECODE_DEFAULT,
545 GUI_OPTIONS_REGRET
546 },
547 GAME_CRUSADER_REG,
548 0
549 },
550
551 // Crusader - No Regret - German V1.07NV
552 {
553 {
554 "regret",
555 "",
556 AD_ENTRY1s("usecode/eusecode.flx", "1824d9725de45a8b49f058c12c6cf5c3", 484445),
557 Common::DE_DEU,
558 Common::kPlatformDOS,
559 ADGF_UNSTABLE | ADGF_USECODE_DE,
560 GUI_OPTIONS_REGRET
561 },
562 GAME_CRUSADER_REG,
563 0
564 },
565
566 // Crusader - No Regret - Demo V1.08
567 {
568 {
569 "regret",
570 "Demo",
571 AD_ENTRY1s("usecode/eusecode.flx", "c6416e4716f3c008dba113a2a460367e", 483174),
572 Common::EN_ANY,
573 Common::kPlatformDOS,
575 GUI_OPTIONS_REGRET_DEMO
576 },
577 GAME_CRUSADER_REG,
578 0
579 },
580
581 // Crusader - No Regret (Spanish) provided by Wesker
582 {
583 {
584 "regret",
585 "",
586 AD_ENTRY1s("usecode/eusecode.flx", "f5906654047ed1dab75760da6426ecfa", 478125),
587 Common::ES_ESP,
588 Common::kPlatformDOS,
589 ADGF_UNSTABLE | ADGF_USECODE_ES,
590 GUI_OPTIONS_REGRET
591 },
592 GAME_CRUSADER_REG,
593 0
594 },
595
596 // REMARK: MD can have many versions, but the detection is less tricky than with SE.
597 //
598 // There seems only one master version available, V1.4,
599 // with two graphic modes (EGA/VGA) and (Time/Space) saving.
600 // So there are 4 different versions of datafile-sets for this game.
601 //
602 // * talk.lzc differs only by (Time/Space) installation
603 // * tileindx.* differs only by (EGA/VGA) installation
604
605 // REMARK: The next 2 versions are unsupported!
606
607 // Martian Dreams V1.4 EGA - Space saving installation
608 {
609 {
610 "martiandreams",
611 "V1.4S/EGA",
612 {
613 {"talk.lzc", 0, "78fa6198a30b848a45f3c2471e3c6a4e", 240299},
614 {"tileindx.ega", 0, "ce79cdcb68f214fde732106f32f16ffc", 4096},
616 },
617 Common::EN_ANY,
618 Common::kPlatformDOS,
620 GUI_OPTIONS_MARTIAN_DREAMS
621 },
622 GAME_MARTIAN_DREAMS,
623 0
624 },
625 // Martian Dreams V1.4 EGA - Time saving installation
626 {
627 {
628 "martiandreams",
629 "V1.4T/EGA",
630 {
631 {"talk.lzc", 0, "6efafc030cb552028c564897e40d87b5", 409705},
632 {"tileindx.ega", 0, "ce79cdcb68f214fde732106f32f16ffc", 4096},
634 },
635 Common::EN_ANY,
636 Common::kPlatformDOS,
638 GUI_OPTIONS_MARTIAN_DREAMS
639 },
640 GAME_MARTIAN_DREAMS,
641 0
642 },
643
644 // Martian Dreams - Enhanced V1.4 VGA - Space saving installation
645 {
646 {
647 "martiandreams_enh",
648 "V1.4S/VGA",
649 {
650 {"talk.lzc", 0, "78fa6198a30b848a45f3c2471e3c6a4e", 240299},
651 {"tileindx.vga", 0, "6af67a836ee36ec0ee7c0d96a4be81b3", 4096},
653 },
654 Common::EN_ANY,
655 Common::kPlatformDOS,
657 GUI_OPTIONS_MARTIAN_DREAMS
658 },
659 GAME_MARTIAN_DREAMS,
660 GF_VGA_ENHANCED
661 },
662 // Martian Dreams - Enhanced V1.4 VGA - Time saving installation (available on GOG)
663 {
664 {
665 "martiandreams_enh",
666 "V1.4T/VGA",
667 {
668 {"talk.lzc", 0, "6efafc030cb552028c564897e40d87b5", 409705},
669 {"tileindx.vga", 0, "6af67a836ee36ec0ee7c0d96a4be81b3", 4096},
671 },
672 Common::EN_ANY,
673 Common::kPlatformDOS,
675 GUI_OPTIONS_MARTIAN_DREAMS
676 },
677 GAME_MARTIAN_DREAMS,
678 GF_VGA_ENHANCED
679 },
680
681 // REMARK: SE can have many versions, so the detection is a bit tricky:
682 //
683 // There are two known versions, V1.6 and V2.1.
684 // During installation theres an option to select between (Time/Space)-saving,
685 // which results in different data files.
686 // Also theres another option to select other graphic devices (Tandy/EGA/VGA),
687 // which also results in different data files.
688 // Installation comes with Time-saving and VGA, the conversion is done by the installer.
689 // So there are 12 different versions of datafile-sets for that game.
690 //
691 // * talk.lzc differs only from V1.6 to V2.1
692 // * endgame.lzc differs in each generated version, but is not affected by V1.6 => V2.1
693 // * tileindx.* is the same for each graphics type and is not affected by V1.6 => V2.1
694
695 // REMARK: The next 4 versions are unsupported!
696
697 // The Savage Empire v1.6 Tandy - Space saving installation
698 {
699 {
700 "thesavageempire",
701 "V1.6S/TGA",
702 {
703 {"endgame.lzc", 0, "aed2d979ea10c4adf907f7babe82776e", 56905},
704 {"talk.lzc", 0, "bef60fbc3cc478b2a2e8f0883652b2f3", 160784},
705 {"tileindx.tga", 0, "bf8215818402b30e667cd57070248be1", 4096},
707 },
708 Common::EN_ANY,
709 Common::kPlatformDOS,
711 GUI_OPTIONS_SAVAGE_EMPIRE
712 },
713 GAME_SAVAGE_EMPIRE,
714 0
715 },
716 // The Savage Empire v1.6 Tandy - Time saving installation
717 {
718 {
719 "thesavageempire",
720 "V1.6T/TGA",
721 {
722 {"endgame.lzc", 0, "e1c362564e5754fb9d79c01d33286e14", 168092},
723 {"talk.lzc", 0, "bef60fbc3cc478b2a2e8f0883652b2f3", 160784},
724 {"tileindx.tga", 0, "bf8215818402b30e667cd57070248be1", 4096},
726 },
727 Common::EN_ANY,
728 Common::kPlatformDOS,
730 GUI_OPTIONS_SAVAGE_EMPIRE
731 },
732 GAME_SAVAGE_EMPIRE,
733 0
734 },
735
736 // The Savage Empire v1.6 EGA - Space saving installation
737 {
738 {
739 "thesavageempire",
740 "V1.6S/EGA",
741 {
742 {"endgame.lzc", 0, "e917bd55bb3b895b06e250abe269680a", 60695},
743 {"talk.lzc", 0, "bef60fbc3cc478b2a2e8f0883652b2f3", 160784},
744 {"tileindx.ega", 0, "b573bb150ec1a8890507c97576854168", 4096},
746 },
747 Common::EN_ANY,
748 Common::kPlatformDOS,
750 GUI_OPTIONS_SAVAGE_EMPIRE
751 },
752 GAME_SAVAGE_EMPIRE,
753 0
754 },
755 // The Savage Empire v1.6 EGA - Time saving installation
756 {
757 {
758 "thesavageempire",
759 "V1.6T/EGA",
760 {
761 {"endgame.lzc", 0, "893cd767e54711939f1694a87cace3b4", 99270},
762 {"talk.lzc", 0, "bef60fbc3cc478b2a2e8f0883652b2f3", 160784},
763 {"tileindx.ega", 0, "b573bb150ec1a8890507c97576854168", 4096},
765 },
766 Common::EN_ANY,
767 Common::kPlatformDOS,
769 GUI_OPTIONS_SAVAGE_EMPIRE
770 },
771 GAME_SAVAGE_EMPIRE,
772 0
773 },
774
775 // The Savage Empire v1.6 VGA - Space saving installation
776 {
777 {
778 "thesavageempire_enh",
779 "V1.6S/VGA",
780 {
781 {"endgame.lzc", 0, "32bd4f1daf9b97816f906623753d657b", 100947},
782 {"talk.lzc", 0, "bef60fbc3cc478b2a2e8f0883652b2f3", 160784},
783 {"tileindx.vga", 0, "5a136e5ec3b8c28a2c685c25387c334e", 4096},
785 },
786 Common::EN_ANY,
787 Common::kPlatformDOS,
789 GUI_OPTIONS_SAVAGE_EMPIRE
790 },
791 GAME_SAVAGE_EMPIRE,
792 GF_VGA_ENHANCED
793 },
794 // The Savage Empire v1.6 VGA - Time saving installation
795 {
796 {
797 "thesavageempire_enh",
798 "V1.6T/VGA",
799 {
800 {"endgame.lzc", 0, "04e34a7c9f2934507673ef8477a7763a", 172957},
801 {"talk.lzc", 0, "bef60fbc3cc478b2a2e8f0883652b2f3", 160784},
802 {"tileindx.vga", 0, "5a136e5ec3b8c28a2c685c25387c334e", 4096},
804 },
805 Common::EN_ANY,
806 Common::kPlatformDOS,
808 GUI_OPTIONS_SAVAGE_EMPIRE
809 },
810 GAME_SAVAGE_EMPIRE,
811 GF_VGA_ENHANCED
812 },
813
814 // REMARK: The next 4 versions are unsupported!
815 // Reason: different graphic files depending on the installation type.
816 // Detailed: User can choose between (Time/Space) x (Tandy/EGA/VGA) during installation.
817 // These files will be converted according to the selection.
818
819 // The Savage Empire v2.1 Tandy - Space saving installation
820 {
821 {
822 "thesavageempire",
823 "V2.1S/TGA",
824 {
825 {"endgame.lzc", 0, "aed2d979ea10c4adf907f7babe82776e", 56905},
826 {"talk.lzc", 0, "1bbb5a425e1d7e2e3aa9b887e511ffc6", 160931},
827 {"tileindx.tga", 0, "bf8215818402b30e667cd57070248be1", 4096},
829 },
830 Common::EN_ANY,
831 Common::kPlatformDOS,
833 GUI_OPTIONS_SAVAGE_EMPIRE
834 },
835 GAME_SAVAGE_EMPIRE,
836 0
837 },
838 // The Savage Empire v2.1 Tandy - Time saving installation
839 {
840 {
841 "thesavageempire",
842 "V2.1T/TGA",
843 {
844 {"endgame.lzc", 0, "e1c362564e5754fb9d79c01d33286e14", 168092},
845 {"talk.lzc", 0, "1bbb5a425e1d7e2e3aa9b887e511ffc6", 160931},
846 {"tileindx.tga", 0, "bf8215818402b30e667cd57070248be1", 4096},
848 },
849 Common::EN_ANY,
850 Common::kPlatformDOS,
852 GUI_OPTIONS_SAVAGE_EMPIRE
853 },
854 GAME_SAVAGE_EMPIRE,
855 0
856 },
857
858 // The Savage Empire v2.1 EGA - Space saving installation
859 {
860 {
861 "thesavageempire",
862 "V2.1S/EGA",
863 {
864 {"endgame.lzc", 0, "e917bd55bb3b895b06e250abe269680a", 60695},
865 {"talk.lzc", 0, "1bbb5a425e1d7e2e3aa9b887e511ffc6", 160931},
866 {"tileindx.ega", 0, "b573bb150ec1a8890507c97576854168", 4096},
868 },
869 Common::EN_ANY,
870 Common::kPlatformDOS,
872 GUI_OPTIONS_SAVAGE_EMPIRE
873 },
874 GAME_SAVAGE_EMPIRE,
875 0
876 },
877 // The Savage Empire v2.1 EGA - Time saving installation
878 {
879 {
880 "thesavageempire",
881 "V2.1T/EGA",
882 {
883 {"endgame.lzc", 0, "893cd767e54711939f1694a87cace3b4", 99270},
884 {"talk.lzc", 0, "1bbb5a425e1d7e2e3aa9b887e511ffc6", 160931},
885 {"tileindx.ega", 0, "b573bb150ec1a8890507c97576854168", 4096},
887 },
888 Common::EN_ANY,
889 Common::kPlatformDOS,
891 GUI_OPTIONS_SAVAGE_EMPIRE
892 },
893 GAME_SAVAGE_EMPIRE,
894 0
895 },
896
897 // The Savage Empire v2.1 VGA - Space saving installation
898 {
899 {
900 "thesavageempire_enh",
901 "V2.1S/VGA",
902 {
903 {"endgame.lzc", 0, "32bd4f1daf9b97816f906623753d657b", 100947},
904 {"talk.lzc", 0, "1bbb5a425e1d7e2e3aa9b887e511ffc6", 160931},
905 {"tileindx.vga", 0, "5a136e5ec3b8c28a2c685c25387c334e", 4096},
907 },
908 Common::EN_ANY,
909 Common::kPlatformDOS,
911 GUI_OPTIONS_SAVAGE_EMPIRE
912 },
913 GAME_SAVAGE_EMPIRE,
914 GF_VGA_ENHANCED
915 },
916 // The Savage Empire v2.1 VGA - Time saving installation
917 {
918 {
919 "thesavageempire_enh",
920 "V2.1T/VGA",
921 {
922 {"endgame.lzc", 0, "04e34a7c9f2934507673ef8477a7763a", 172957},
923 {"talk.lzc", 0, "1bbb5a425e1d7e2e3aa9b887e511ffc6", 160931},
924 {"tileindx.vga", 0, "5a136e5ec3b8c28a2c685c25387c334e", 4096},
926 },
927 Common::EN_ANY,
928 Common::kPlatformDOS,
930 GUI_OPTIONS_SAVAGE_EMPIRE
931 },
932 GAME_SAVAGE_EMPIRE,
933 GF_VGA_ENHANCED
934 },
935
936 { AD_TABLE_END_MARKER, (GameId)0, 0 }
937};
938
939} // End of namespace Ultima
#define AD_ENTRY2s(f1, x1, s1, f2, x2, s2)
Definition: advancedDetector.h:122
#define AD_LISTEND
Definition: advancedDetector.h:104
#define AD_TABLE_END_MARKER
Definition: advancedDetector.h:328
#define AD_ENTRY1s(f, x, s)
Definition: advancedDetector.h:116
@ ADGF_DEMO
Add "-demo" to gameid.
Definition: advancedDetector.h:157
@ ADGF_NO_FLAGS
No flags.
Definition: advancedDetector.h:139
@ ADGF_UNSUPPORTED
Definition: advancedDetector.h:146
@ ADGF_UNSTABLE
Flag to designate not yet officially supported games that are not fit for public testing.
Definition: advancedDetector.h:143
Definition: game.h:49