aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorD G Turner2017-10-26 17:33:04 +0100
committerD G Turner2017-10-26 18:16:11 +0100
commitd50c13a7c7a97f27a60c061671906a12c0d72e0d (patch)
tree3cf8c3d329d05e4e7d60c0434711476badd719cd
parentbd82345f0b634e5ccf7b2412a0d7cad7232057c5 (diff)
downloadscummvm-rg350-d50c13a7c7a97f27a60c061671906a12c0d72e0d.tar.gz
scummvm-rg350-d50c13a7c7a97f27a60c061671906a12c0d72e0d.tar.bz2
scummvm-rg350-d50c13a7c7a97f27a60c061671906a12c0d72e0d.zip
SAGA: Add Code to Support French Fan Translation.
This code was supplied by Darknior (hugues.fabien@gmail.com).
-rw-r--r--engines/saga/detection_tables.h24
-rw-r--r--engines/saga/introproc_ite.cpp4
-rw-r--r--engines/saga/itedata.cpp155
-rw-r--r--engines/saga/itedata.h10
-rw-r--r--engines/saga/puzzle.cpp2
-rw-r--r--engines/saga/saga.cpp3
6 files changed, 191 insertions, 7 deletions
diff --git a/engines/saga/detection_tables.h b/engines/saga/detection_tables.h
index 71225ceb2f..20fdfb09ee 100644
--- a/engines/saga/detection_tables.h
+++ b/engines/saga/detection_tables.h
@@ -498,6 +498,30 @@ static const SAGAGameDescription gameDescriptions[] = {
ITEPatch_Files,
},
+ // Inherit the earth - French Windows/Linux/DOS CD version (fan translation)
+ {
+ {
+ "ite",
+ "Windows/Linux/DOS CD Version",
+ {
+ {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54", 8929384},
+ {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84", 355877},
+ { NULL, 0, NULL, 0}
+ },
+ Common::FR_FRA,
+ Common::kPlatformDOS,
+ ADGF_CD,
+ GUIO0()
+ },
+ GID_ITE,
+ 0,
+ ITE_DEFAULT_SCENE,
+ &ITE_Resources,
+ ARRAYSIZE(ITE_GameFonts),
+ ITE_GameFonts,
+ ITEPatch_Files,
+ },
+
// Inherit the earth - DOS CD version
{
{
diff --git a/engines/saga/introproc_ite.cpp b/engines/saga/introproc_ite.cpp
index 3c10cbe1dd..ed8d50a8c5 100644
--- a/engines/saga/introproc_ite.cpp
+++ b/engines/saga/introproc_ite.cpp
@@ -128,6 +128,8 @@ EventColumns *Scene::queueIntroDialogue(EventColumns *eventColumns, int n_dialog
textEntry.rect.top = INTRO_DE_CAPTION_Y;
} else if (_vm->getLanguage() == Common::IT_ITA) {
textEntry.rect.top = INTRO_IT_CAPTION_Y;
+ } else if (_vm->getLanguage() == Common::FR_FRA) {
+ textEntry.rect.top = INTRO_IT_CAPTION_Y;
} else {
textEntry.rect.top = INTRO_CAPTION_Y;
}
@@ -379,6 +381,8 @@ int Scene::ITEIntroCaveCommonProc(int param, int caveScene) {
lang = 1;
else if (_vm->getLanguage() == Common::IT_ITA)
lang = 2;
+ else if (_vm->getLanguage() == Common::FR_FRA)
+ lang = 3;
int n_dialogues = 0;
diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index 3577499399..a40dc32e67 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -446,6 +446,27 @@ const char *ITEinterfaceTextStrings[][53] = {
NULL,
NULL,
" \xC7\xE0\xE3\xF0\xF3\xE7\xEA\xE0 "
+ },
+ // French fan translation : ACTIONS
+ {
+ "Aller vers", "Examiner", "Prendre", "Parler \205", "Ouvrir",
+ "Fermer", "Utiliser", "Donner", "Options", "Test",
+ "Demo", "Aide", "Quitter le Jeu", "Vite", "Lent",
+ "On", "Off", "Continuer \205 jouer", "Charger", "Sauver",
+ "Options du Jeu", "Vitesse texte", "Musique", "Son", "Annuler",
+ "Quitter", "OK", "Mid", "Click", "10%",
+ "20%", "30%", "40%", "50%", "60%",
+ "70%", "80%", "90%", "Max", "Quitter le jeu?",
+ "Chargement OK!", "Nommer la sauvegarde", "Donner %s \205 %s", "Utiliser %s avec %s",
+ "[Nouvelle sauvegarde]",
+ "Je ne peux pas prendre ça.",
+ "Je ne vois rien de sp\202cial.",
+ "Il n'y a pas la place pour l'ouvrir.",
+ "Il n'y a pas d'ouverture \205 fermer.",
+ "Je ne sais pas comment l'utiliser.",
+ "Sous-titre",
+ "Que r\202pond Rif?",
+ "Charger une sauvegarde"
}
};
@@ -467,6 +488,7 @@ const RawPoint pieceOrigins[PUZZLE_PIECES] = {
{ 271, 103 }
};
+// Objects
const char *pieceNames[][PUZZLE_PIECES] = {
{
"screwdriver", "pliers", "c-clamp", "wood clamp", "level",
@@ -482,9 +504,15 @@ const char *pieceNames[][PUZZLE_PIECES] = {
"cacciavite", "pinze", "morsa", "morsa da legno", "livella",
"spago", "pialla", "martello", "metro a nastro", "accetta",
"cesoie", "righello", "sega", "mazza", "pennello"
+ },
+ {
+ "tournevis", "pinces", "\202taux \205 vis", "\202taux en bois", "niveau",
+ "ficelle", "rabot \205 bois", "marteau", "m\212tre ruban", "hachette",
+ "ciseaux", "r\212gle", "scie", "maillet", "pinceau"
}
};
+// hints
const char *hintStr[][4] = {
{
"Check which pieces could fit in each corner first.",
@@ -503,6 +531,12 @@ const char *hintStr[][4] = {
"Controlla quale angolo ha il minor numero di pezzi che combaciano, e parti da quello.",
"Controlla ogni nuovo angolo e lato per ogni pezzo che combacia.",
"Non vedo nulla fuori posto."
+ },
+ {
+ "Trouve d'abord les pi\212ces qui correspondent aux coins.",
+ "V\202rifie quel coin a le moins de pi\212ces qui correspondent et part de l\205.",
+ "Evalue chaque coin et bord pour voir les pi\212ces qui collent.",
+ "Je ne vois rien de mal plac\202."
}
};
@@ -527,6 +561,13 @@ const char *solicitStr[][NUM_SOLICIT_REPLIES] = {
"Umm...Umm...",
"Psst! Serve un aiutino?",
"Io, sai, l'avrei fatto diversamente."
+ },
+ {
+ "H\202, Renard! Tu veux un coup de pouce?",
+ "T'as besoin d'aide?",
+ "Umm...Umm...",
+ "Psst! Un indice?",
+ "Tu sais, j'aurais fait ça autrement."
}
};
@@ -545,6 +586,11 @@ const char *sakkaStr[][NUM_SAKKA] = {
"Hey, non si dovrebbero aiutare i candidati!",
"Ragazzi! Questo dovrebbe essere un test!",
"Forza ragazzi, non si pu\225!"
+ },
+ {
+ "H\202, vous n'êtes pas suppos\202s aider les concurrents!",
+ "Les gars! C'est suppos\202 être un test!",
+ "Allez les gars, c'est pas dans les r\212gles!"
}
};
@@ -569,6 +615,13 @@ const char *whineStr[][NUM_WHINES] = {
"Sigh...",
"Credo che questa faccenda ti abbia dato alla testa, Sakka!",
"Beh, non ricordo regole specifiche contro i suggerimenti."
+ },
+ {
+ "Rohh, allez Sakka!",
+ "Un indice ne peut pas faire de mal.",
+ "Pfff...",
+ "Je crois que ton carnet te monte \205 la tête, Sakka!",
+ "Bon, je ne me souviens d'aucune r\212gle concernant les indices."
}
};
@@ -590,6 +643,12 @@ const char *optionsStr[][4] = {
"\"Si, grazie. Ne avrei bisogno.\"",
"\"No, grazie, voglio provare a risolverlo da solo.\"",
"Penso che la tessera %s sia nel posto sbagliato."
+ },
+ {
+ "\"Je r\202soudrais cette \202nigme plus tard.\"",
+ "\"Oui, j'aimerais un indice s'il vous plait.\"",
+ "\"Non merci, je voudrais r\202soudre cela par moi même.\"",
+ "Je crois que t'as mal plac\202 l'%s."
}
};
@@ -657,6 +716,29 @@ const IntroDialogue introDialogueCave1[][4] = {
"Conoscevano il Segreto del Volo, il Segreto della "
"Felicit\205, ed altri segreti oltre ogni nostra "
"immaginazione."
+ } },
+ // -----------------------------------------------------
+ { { // French fan translation
+ 0, // cave voice 0
+ "Nous voyons le ciel, nous voyons les terres, "
+ "nous voyons la mer et nous nous demandons: "
+ "Sommes-nous vraiment seuls?"
+ },
+ {
+ 1, // cave voice 1
+ "Bien avant notre av\212nement, les humains "
+ "r\202gnaient sur Terre."
+ },
+ {
+ 2, // cave voice 2
+ "Ils firent des choses merveilleuses, et "
+ "d\202plac\212rent des montagnes."
+ },
+ {
+ 3, // cave voice 3
+ "Ils savaient comment Voler, poss\202daient le "
+ "secret du Bonheur et d'autres secrets au "
+ "del\205 de notre imagination."
} }
};
@@ -706,6 +788,21 @@ const IntroDialogue introDialogueCave2[][3] = {
{
6, // cave voice 6
"Siamo i loro figli."
+ } },
+ { { // Fench fan translation
+ 4, // cave voice 4
+ "Les humains connaissaient aussi le secret de "
+ "la Vie, et l'utilis\212rent pour nous offrir "
+ "Quatres Dons:"
+ },
+ {
+ 5, // cave voice 5
+ "La Pens\202e, les Sentiments, la Parole et, "
+ "l'Habilet\202 manuelle."
+ },
+ {
+ 6, // cave voice 6
+ "Nous sommes leurs enfants."
} }
};
@@ -756,6 +853,21 @@ const IntroDialogue introDialogueCave3[][3] = {
"Ci amarono, ed una volta pronti, ci avrebbero "
"sicuramente svelato il Segreto della Felicit\205."
+ } },
+ { { // French fan translation
+ 7, // cave voice 7
+ "Ils nous apprirent \205 utiliser nos mains, et \205 "
+ "parler."
+ },
+ {
+ 8, // cave voice 8
+ "Ils nous apprirent les joies de la pens\202e."
+ },
+ {
+ 9, // cave voice 9
+ "Ils nous aim\212rent, et le moment venu, ils "
+ "nous auraient s\223rement livr\202 le Secret du "
+ "Bonheur."
} }
};
@@ -819,6 +931,26 @@ const IntroDialogue introDialogueCave4[][4] = {
13, // cave voice 13
"E un giorno, condivideremo anche noi lo stesso "
"destino?"
+ } },
+ { { // French fan translation
+ 10, // cave voice 10
+ "Aujourd'hui nous voyons le ciel, les terres, et "
+ "l'eau dont nous sommes les h\202ritiers, Et "
+ "nous nous demandons: pourquoi sont-ils partis?" // Partis \205 la ligne ?????
+ },
+ {
+ 11, // cave voice 11
+ "Vivent-ils encore, dans les \202toiles? dans les "
+ "profondeurs des oc\202ans? dans le vent?"
+ },
+ {
+ 12, // cave voice 12
+ "Nous nous demandons: leur destin f\223t-il bon "
+ "ou mauvais?"
+ },
+ {
+ 13, // cave voice 13
+ "Et aurons-nous un jour un sort identique?"
} }
};
@@ -826,15 +958,18 @@ const IntroCredit creditsValley[] = {
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Producer"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Produzent"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Produttore"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Producteur"},
{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Executive Producer"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Ausf\201hrender Produzent"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Produttore Esecutivo"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Producteur Executif"},
{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Robert McNally"},
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsHeader, "2nd Executive Producer"},
{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsHeader, "Publisher"},
{Common::DE_DEU, kITECreditsNotWyrmKeep, kITECreditsHeader, "Herausgeber"},
{Common::IT_ITA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Editore"},
+ {Common::FR_FRA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Editeur"},
{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"}
};
@@ -842,16 +977,20 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Game Design"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Spielentwurf"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Progetto"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Conception"},
{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "and Carolly Hauksdottir"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "und Carolly Hauksdottir"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "e Carolly Hauksdottir"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsText, "et Carolly Hauksdottir"},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Screenplay and Dialog"},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein, and Bill Rotsler"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Geschichte und Dialoge"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein und Bill Rotsler"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Sceneggiatura e Dialoghi"},
- {Common::IT_ITA, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein e Bill Rotsler"}
+ {Common::IT_ITA, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein e Bill Rotsler"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Sc\202nario et Dialogues"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein et Bill Rotsler"}
};
const IntroCredit creditsTreeHouse2[] = {
@@ -860,19 +999,23 @@ const IntroCredit creditsTreeHouse2[] = {
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Art"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Grafiken"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Grafica"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Graphismes"},
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsText, "Ed Lacabanne, Glenn Price, April Lee,"},
{Common::UNK_LANG, kITECreditsNotWyrmKeep, kITECreditsText, "Edward Lacabanne, Glenn Price, April Lee,"},
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsText, "Lisa Sample, Brian Dowrick, Reed Waller,"},
{Common::EN_ANY, kITECreditsWyrmKeep, kITECreditsText, "Allison Hershey and Talin"},
{Common::DE_DEU, kITECreditsWyrmKeep, kITECreditsText, "Allison Hershey und Talin"},
{Common::IT_ITA, kITECreditsWyrmKeep, kITECreditsText, "Allison Hershey e Talin"},
+ {Common::FR_FRA, kITECreditsWyrmKeep, kITECreditsText, "Allison Hershey et Talin"},
{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsText, "Lisa Iennaco, Brian Dowrick, Reed"},
{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsText, "Waller, Allison Hershey and Talin"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Waller, Allison Hershey und Talin"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Waller, Allison Hershey e Talin"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsText, "Waller, Allison Hershey et Talin"},
{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsHeader, "Art Direction"},
{Common::DE_DEU, kITECreditsNotWyrmKeep, kITECreditsHeader, "Grafische Leitung"},
{Common::IT_ITA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Direzione Grafica"},
+ {Common::FR_FRA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Directeur Artistique"},
{Common::UNK_LANG, kITECreditsNotWyrmKeep, kITECreditsText, "Allison Hershey"}
};
@@ -880,17 +1023,22 @@ const IntroCredit creditsFairePath1[] = {
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Programming"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Programmiert von"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Programmazione"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Programmeurs"},
{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Joe Burks and Robert Wiggins"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Joe Burks und Robert Wiggins"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Joe Burks e Robert Wiggins"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsText, "Joe Burks et Robert Wiggins"},
{Common::EN_ANY, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Additional Programming"},
+ {Common::FR_FRA, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Programmeur Additionnel"},
{Common::EN_ANY, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsText, "John Bolton"},
+ {Common::FR_FRA, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsText, "John Bolton"},
{Common::UNK_LANG, kITECreditsMac, kITECreditsHeader, "Macintosh Version"},
{Common::UNK_LANG, kITECreditsMac, kITECreditsText, "Michael McNally and Robert McNally"},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Music and Sound"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Musik und Sound"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Musica e Sonoro"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Musique et Sons"},
{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Matt Nathan"}
};
@@ -898,7 +1046,10 @@ const IntroCredit creditsFairePath2[] = {
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Directed by"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Regie"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Regia"},
- {Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Talin"}
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Dirig\202 par"},
+ {Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Talin"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Traduction Francaise"},
+ {Common::FR_FRA, kITECreditsAny, kITECreditsText, "Ryfatwork, Momo le Yetty et Darknior"}
};
} // End of namespace Saga
diff --git a/engines/saga/itedata.h b/engines/saga/itedata.h
index f9416652bf..1ad73f7137 100644
--- a/engines/saga/itedata.h
+++ b/engines/saga/itedata.h
@@ -137,11 +137,11 @@ extern const IntroDialogue introDialogueCave2[][3];
extern const IntroDialogue introDialogueCave3[][3];
extern const IntroDialogue introDialogueCave4[][4];
-extern const IntroCredit creditsValley[13];
-extern const IntroCredit creditsTreeHouse1[13];
-extern const IntroCredit creditsTreeHouse2[19];
-extern const IntroCredit creditsFairePath1[15];
-extern const IntroCredit creditsFairePath2[4];
+extern const IntroCredit creditsValley[16];
+extern const IntroCredit creditsTreeHouse1[17];
+extern const IntroCredit creditsTreeHouse2[23];
+extern const IntroCredit creditsFairePath1[20];
+extern const IntroCredit creditsFairePath2[7];
} // End of namespace Saga
diff --git a/engines/saga/puzzle.cpp b/engines/saga/puzzle.cpp
index 2c9a02beec..1d014052ed 100644
--- a/engines/saga/puzzle.cpp
+++ b/engines/saga/puzzle.cpp
@@ -73,6 +73,8 @@ Puzzle::Puzzle(SagaEngine *vm) : _vm(vm), _solved(false), _active(false) {
_lang = 1;
else if (_vm->getLanguage() == Common::IT_ITA)
_lang = 2;
+ else if (_vm->getLanguage() == Common::FR_FRA)
+ _lang = 3;
_hintRqState = kRQNoHint;
_hintOffer = 0;
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index 649888e7ea..fb5c4a651e 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -506,6 +506,9 @@ const char *SagaEngine::getTextString(int textStringId) {
case Common::RU_RUS:
lang = 4;
break;
+ case Common::FR_FRA:
+ lang = 5;
+ break;
default:
lang = 0;
break;