From 050536b137627abce8ef12e2ff7a74a408f66212 Mon Sep 17 00:00:00 2001 From: Le Philousophe Date: Sun, 23 Jun 2019 09:33:32 +0200 Subject: [PATCH] CRYOMNI3D: Add English version of Versailles --- .../create_cryomni3d/create_cryomni3d_dat.cpp | 2 + .../create_cryomni3d/create_cryomni3d_dat.h | 1 + devtools/create_cryomni3d/versailles.cpp | 1 + devtools/create_cryomni3d/versailles.h | 221 ++++++++++++++++++ dists/engine-data/cryomni3d.dat | Bin 5840 -> 11360 bytes engines/cryomni3d/datstream.cpp | 2 + engines/cryomni3d/detection_tables.h | 51 ++++ 7 files changed, 278 insertions(+) diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp index 01262b22d21..7fbd08f5e91 100644 --- a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp +++ b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp @@ -50,9 +50,11 @@ struct Parts { write ## game ## _ ## platform ## _ ## lang ## Data, 0, 0 } DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, FR) +DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, EN) static Parts gamesParts[] = { GAME_PLATFORM_LANG_PART(Versailles, ALL, FR), + GAME_PLATFORM_LANG_PART(Versailles, ALL, EN), }; #define CRYOMNI3D_DAT_VER 1 // 32-bit integer diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.h b/devtools/create_cryomni3d/create_cryomni3d_dat.h index a040ca47dbf..13cc5bb3ec5 100644 --- a/devtools/create_cryomni3d/create_cryomni3d_dat.h +++ b/devtools/create_cryomni3d/create_cryomni3d_dat.h @@ -38,6 +38,7 @@ size_t writeGameHeader(FILE *f, uint32 gameId, uint16 version, uint16 lang, uint #define PLATFORM_SATURN 0x10 #define PLATFORM_ALL 0xffffffff +#define LANG_EN MKTAG16('e', 'n') #define LANG_FR MKTAG16('f', 'r') #endif diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp index edddd7a4ce2..e59b0d4e630 100644 --- a/devtools/create_cryomni3d/versailles.cpp +++ b/devtools/create_cryomni3d/versailles.cpp @@ -58,3 +58,4 @@ } DEFINE_FUNCS(FR) +DEFINE_FUNCS(EN) diff --git a/devtools/create_cryomni3d/versailles.h b/devtools/create_cryomni3d/versailles.h index e0bd191c88e..4d41c7c0ecb 100644 --- a/devtools/create_cryomni3d/versailles.h +++ b/devtools/create_cryomni3d/versailles.h @@ -36,11 +36,21 @@ static char const *const versaillesFRlocalizedFilenames[] = { "credits.txt", "LEB001__.WAV", }; +static char const *const versaillesENlocalizedFilenames[] = { + "DIALOG1.GB", + "tous_doc.gb", + "lien_doc.txt", + "credits.GB", + "LEB1_GB.WAV", +}; static char const versaillesFREpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT"; static char const versaillesFREpilPwd[] = "LELOUPETLATETE"; +static char const versaillesENEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT"; +static char const versaillesENEpilPwd[] = "FOXANDCRANE"; static char const versaillesFRBombPwd[] = "JEMENVAISMAISLETATDEMEURERATOUJOURS"; +static char const versaillesENBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION"; #define VERSAILLES_MESSAGES_COUNT 146 #define VERSAILLES_PAINTINGS_COUNT 48 @@ -264,4 +274,215 @@ static char const *const versaillesFRpaintings[] = { "\"La descente de Croix \"\rCharles Lebrun", /* 47: 45260 */ }; +static char const *const versaillesENmessages[] = { + "For the moment it is forbidden to open this door.", /* 0 */ + "This door is locked.", /* 1 */ + "This door is locked.", /* 2 */ + "This drawer is empty.", /* 3 */ + "You cannot reach the covering.", /* 4 */ + "There is nothing in this orange tree.", /* 5 */ + "This is not an orange tree!", /* 6 */ + "It is too dark. ", /* 7 */ + "The casket is locked. ", /* 8 */ + "You can open the door.", /* 9 */ + "You will need something to be able to reach the bomb.", /* 10 */ + "This vase is empty.", /* 11 */ + "Now you can go through.", /* 12 */ + "You have no time to learn about the Court!", /* 13 */ + "It is too late for looking at pictures!", /* 14 */ + "Wait! Give your clues to the usher.", /* 15 */ + "You cannot reach the paper.", /* 16 */ + "To the apothecary's.", /* 17 */ + "Warning: You will be able to come to the end of this level, but " + "you have not performed all the actions necessary in order to be " + "able to continue. You are advised to SAVE this game now.", /* 18 */ + "Warning: You will be able to come to the end of this level, but " + "you may not have performed all the actions necessary in order to " + "be able to continue. You are advised to SAVE this game now.", /* 19 */ + "You cannot move about while carrying a ladder!", /* 20 */ + "There is nothing else here.", /* 21 */ + "Goodbye ...", /* 22 */ + "VERSAILLES,", /* 23 */ + "A Game of Intrigue at the Court of Louis XIV", /* 24 */ + "Consult the documentation zone", /* 25 */ + " Continue this game", /* 26 */ + " Start a new game", /* 27 */ + " Load a game", /* 28 */ + " Save this game", /* 29 */ + " Display subtitles: YES", /* 30 */ + " Display subtitles: NO", /* 31 */ + " Music: YES", /* 32 */ + " Music: NO", /* 33 */ + " One piece of music to hard disk (20 Mo)", /* 34 */ + " All music to hard disk (92 Mo)", /* 35 */ + " No music to hard disk (CD read)", /* 36 */ + nullptr, /* 37 */ + nullptr, /* 38 */ + "Volume", /* 39 */ + "Quit game", /* 40 */ + "", /* 41 */ + "Visit the chateau", /* 42 */ + "Credits", /* 43 */ + " Continue this visit", /* 44 */ + " Save this visit", /* 45 */ + " Load a visit", /* 46 */ + nullptr, /* 47 */ + " Omni3D: standard", /* 48 */ + " Omni3D: slow", /* 49 */ + " Omni3D: very slow", /* 50 */ + " Omni3D: fast", /* 51 */ + " Omni3D: very fast", /* 52 */ + "Confirm", /* 53 */ + "Cancel", /* 54 */ + "free", /* 55 */ + "nameless ", /* 56 */ + "Warning: this game is about to be aborted.", /* 57 */ + "Return", /* 58 */ + "The Chateau", /* 59 */ + "Return to Main Menu", /* 60 */ + "Summary of Documentation Zone", /* 61 */ + "Map of Chateau and gardens", /* 62 */ + "Interior plan of chateau", /* 63 */ + "Impossible to write to hard disk: disk full", /* 64 */ + nullptr, /* 65 */ + "Insert the CD ", /* 66 */ + "Insert the %d CD and press any key", /* 67 */ + "The Arts", /* 68 */ + "The Reign", /* 69 */ + "The Court", /* 70 */ + "Life in the Chateau", /* 71 */ + "The Chateau and gardens", /* 72 */ + "Chronology", /* 73 */ + "The Apollo Fountain", /* 74 */ + "The Chateau", /* 75 */ + "Colonnade", /* 76 */ + "Maze", /* 77 */ + "Latona", /* 78 */ + "Orangery", /* 79 */ + "Water Parterre", /* 80 */ + "Tapis vert", /* 81 */ + "Grand Stables", /* 82 */ + "Small Stables", /* 83 */ + "The gardens", /* 84 */ + "Forecourt", /* 85 */ + "Grand Canal", /* 86 */ + "South Parterre", /* 87 */ + "North Parterre", /* 88 */ + "The King's vegetable garden", /* 89 */ + "Ballroom", /* 90 */ + "The Neptune Fountain", /* 91 */ + "The Lake of the Swiss Guards", /* 92 */ + "Aiguilles (Useless!)", /* 93 */ + "Scissors", /* 94 */ + "Paper", /* 95 */ + "Pamphlet on the arts", /* 96 */ + "Small key 1", /* 97 */ + "Transformed paper", /* 98 */ + "Stained paper", /* 99 */ + "Paper from casket", /* 100 */ + "Pamphlet on royal lineage", /* 101 */ + "Lighted candle ", /* 102 */ + "Candle", /* 103 */ + "Key ", /* 104 */ + "Sketch folder", /* 105 */ + "Sketch folder", /* 106 */ + "Fake sketch", /* 107 */ + "Ladder", /* 108 */ + "Destroyed sketch", /* 109 */ + "brush", /* 110 */ + "golden brush", /* 111 */ + "red brush", /* 112 */ + "Charcoal pencil", /* 113 */ + "Paper", /* 114 */ + "Pamphlet on architecture", /* 115 */ + "Small key 2", /* 116 */ + "Archer(useless!)", /* 117 */ + "Musical score", /* 118 */ + "Billiard cue", /* 119 */ + "Authorisation", /* 120 */ + "Reproduction of medals", /* 121 */ + "Drawer with medals", /* 122 */ + "Key to small Apollo door", /* 123 */ + "Food", /* 124 */ + "Pamphlet on religion", /* 125 */ + "Epigraph", /* 126 */ + "Pamphlet on government", /* 127 */ + "Quill", /* 128 */ + "Memo", /* 129 */ + "Telescope", /* 130 */ + "Vauban Plan", /* 131 */ + "Vauban Plan", /* 132 */ + "Cord", /* 133 */ + "Engraving", /* 134 */ + "Small key 3", /* 135 */ + "Small key 4", /* 136 */ + "Memorandum", /* 137 */ + "Plans of Chateau", /* 138 */ + "Plans of Chateau", /* 139 */ + "Key to attic", /* 140 */ + "Fables", /* 141 */ + "Plan of Maze", /* 142 */ + "Tool", /* 143 */ + "Medicine", /* 144 */ + "Candle snuffer", /* 145 */ +}; + +static char const *const versaillesENpaintings[] = { + "\"The Animals entering the Ark\"\rGerolamo Bassano", /* 0: 41201 */ + "\"The Supper at Emmaus\"\rJacopo Bassano", /* 1: 41202 */ + "\"Mary Magdalen at the feet of the Christ", /* 2: 41203 */ + "\"Leaving the Ark\"\rGerolamo Bassano", /* 3: 41204 */ + "\"Striking the Rock\"\rJacopo Bassano", /* 4: 41205 */ + "\"The Battle of Arbelles\"\rJoseph Parrocel", /* 5: 41301 */ + "\"Alexander the Great, Vanquisher of Darisu at the battle of " + "Arbelles\"\rLe Bourguignon", /* 6: 41302 */ + "\"The Combat of Leuze\"\rJoseph Parrocel", /* 7: 42401 */ + "\"Saint Cecilia with an angel holding musical notation\"\rIl " + "Domenichino", /* 8: 42901 */ + "\"Don Francisco of Moncada\"\rVan Dyck", /* 9: 42902 */ + "\"The young John the Baptist\"\rCarracci", /* 10: 42903 */ + "\"Saint Matthew\"\rValentin", /* 11: 42904 */ + "\"Render unto Caesar\"\rValentin", /* 12: 42905 */ + "\"Saint Luke\"\rValentin", /* 13: 42906 */ + "\"The Mystical Marriage of Saint Catherine\"\r Alessandro Turchi", /* 14: 42907 */ + "\"The Meeting of the Drinkers\"\rNicolas Tournier", /* 15: 42908 */ + "\"The Fortune-teller\"\rValentin", /* 16: 42909 */ + "\"King David playing the Harp\"\rIl Domenichino", /* 17: 42910 */ + "\"Mary Magdalen\"\rIl Domenichino", /* 18: 42911 */ + "\"Self-portrait\"\rVan Dyck", /* 19: 42912 */ + "\"Saint John the Evangelist\"\r Valentin", /* 20: 42913 */ + "\"Hagar being helped by an angel\"\rGiovanni Lanfranco", /* 21: 42914 */ + "\"Saint Mark\"\rValentin", /* 22: 42915 */ + "\"Meleager with the head of the boar of Calydon at his " + "feet\"\rJacques Rousseau", /* 23: 43090 */ /* BUG: Switched */ + "\"The King in Roman dress\"\rJean Warin", /* 24: 43091 */ + "\"Atalanta\"\rJacques Rousseau", /* 25: 43092 */ + "\"Aeneas carrying Anchises\"\rSpada", /* 26: 43100 */ + "\"David and Bethsheba\"\rVeronese", /* 27: 43101 */ + "\"The Flight into Egypt\"\rGuido Reni", /* 28: 43102 */ + "\"Louis XIV on horseback\"\rPierre Mignard", /* 29: 43103 */ + "\"Royal Magnificence and the Progress of the Beaux " + "Arts\"\rHouasse", /* 30: 43104 */ + "\"The Sacrifice of Iphigeneia\"\rCharles de La Fosse", /* 31: 43130 */ + "\"Bust of Louis XIV\"\rsculpted by Bernini", /* 32: 43131 */ + "\"Diana discovers Endymion in the arms of Morpheus\"\rGabriel " + "Blanchard", /* 33: 43132 */ + "\"Saint Peter and the Virgin Mary\"\rIl Guercino", /* 34: 43140 */ + "\"The Disciples at Emmaus\"\rVeronese", /* 35: 43141 */ + "\"The Holy Family\"\rVeronese", /* 36: 43142 */ + "\"Darius' family at the feet of Alexander\"\rCharles LeBrun", /* 37: 43143 */ + "\"Saint John the Baptist\"\rRaphael", /* 38: 43144 */ + "\"Marie de Medici\"\rVan Dyck", /* 39: 43150 */ + "\"Hercules struggling with Achelous\"\rGuido Reni", /* 40: 43151 */ + "\"The Centaur Nessus carrying away Deianeira\"\rGuido Reni", /* 41: 43152 */ + "\"Saint Francis of Assissi comforted after receiving the " + "stigmata\"\rSeghers", /* 42: 43153 */ + "\"Thomiris plunging Cyrus' head in blood\"\rRubens", /* 43: 43154 */ + "\"Hercules Slaying the Hydra\"\rGuido Reni", /* 44: 43155 */ + "\"Hercules in flames \"\rGuido Reni", /* 45: 43156 */ + "\"Portrait of the Prince Palatine & his brother Prince " + "Robert\"\rVan Dyck", /* 46: 43157 */ + "\"Christ being taken down from the cross\"\rCharles Lebrun", /* 47: 45260 */ +}; + #endif diff --git a/dists/engine-data/cryomni3d.dat b/dists/engine-data/cryomni3d.dat index a4a0bebe23da65d0b95ec1037299b843cea01539..bf1e60e87303c2ea739740f116f8a894beadbbc5 100644 GIT binary patch literal 11360 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 delta 47 vcmaD5aY0wjInvn0#WBQ@k%5r`1j2%XeHa