aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS12
-rw-r--r--audio/mixer.cpp2
-rw-r--r--audio/mixer_intern.h2
-rw-r--r--backends/platform/iphone/iphone_video.m17
-rw-r--r--common/array.h59
-rwxr-xr-xdevtools/credits.pl12
-rwxr-xr-xdoc/translations/README-de.txt178
-rwxr-xr-xdoc/translations/README-fr.txt172
-rwxr-xr-xdoc/translations/README-translation_template.txt158
-rw-r--r--engines/agi/detection.cpp2
-rw-r--r--engines/cine/detection.cpp2
-rw-r--r--engines/cruise/detection.cpp2
-rw-r--r--engines/draci/detection.cpp2
-rw-r--r--engines/drascula/detection.cpp2
-rw-r--r--engines/gob/detection.cpp2
-rw-r--r--engines/groovie/detection.cpp2
-rw-r--r--engines/hugo/detection.cpp2
-rw-r--r--engines/kyra/detection.cpp2
-rw-r--r--engines/lastexpress/detection.cpp2
-rw-r--r--engines/lure/detection.cpp2
-rw-r--r--engines/m4/detection.cpp2
-rw-r--r--engines/made/detection.cpp2
-rw-r--r--engines/mohawk/detection.cpp2
-rw-r--r--engines/parallaction/detection.cpp2
-rw-r--r--engines/saga/detection.cpp2
-rw-r--r--engines/sci/detection.cpp2
-rw-r--r--engines/scumm/detection.cpp2
-rw-r--r--engines/sword25/detection.cpp2
-rw-r--r--engines/teenagent/detection.cpp2
-rw-r--r--engines/tinsel/detection.cpp2
-rw-r--r--engines/toon/detection.cpp2
-rw-r--r--engines/touche/detection.cpp2
-rw-r--r--engines/tsage/core.cpp47
-rw-r--r--engines/tsage/detection.cpp2
-rw-r--r--engines/tsage/events.cpp7
-rw-r--r--engines/tsage/graphics.cpp27
-rw-r--r--engines/tsage/ringworld_demo.cpp62
-rw-r--r--engines/tsage/ringworld_demo.h4
-rw-r--r--engines/tsage/ringworld_logic.cpp48
-rw-r--r--engines/tsage/ringworld_logic.h1
-rw-r--r--engines/tsage/ringworld_scenes2.cpp3
-rw-r--r--engines/tsage/scenes.h1
-rw-r--r--engines/tsage/staticres.cpp6
-rw-r--r--engines/tsage/staticres.h6
-rw-r--r--engines/tucker/detection.cpp2
-rw-r--r--gui/credits.h12
-rw-r--r--gui/options.cpp50
-rw-r--r--test/common/array.h28
-rw-r--r--test/module.mk2
49 files changed, 831 insertions, 135 deletions
diff --git a/AUTHORS b/AUTHORS
index ca6342d836..d8d26cef81 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -49,7 +49,7 @@ ScummVM Team
Oliver Kiehl - (retired)
Ludvig Strigeus - (retired)
- BASS:
+ Beneath a Steel Sky:
Robert Goeffringmann - (retired)
Oliver Kiehl - (retired)
Joost Peters
@@ -82,7 +82,7 @@ ScummVM Team
Paul Gilbert
Vincent Hamm - (retired)
- Draci:
+ Draci Historie:
Denis Kasak
Robert Spalek
@@ -90,7 +90,7 @@ ScummVM Team
Filippos Karapetis
Pawel Kolodziejski
- FOTAQ:
+ Flight of the Amazon Queen:
David Eriksson - (retired)
Gregory Montoir
Joost Peters
@@ -111,7 +111,7 @@ ScummVM Team
Oystein Eftevaag
Eugene Sandulenko
- Kyra:
+ Legend of Kyrandia:
Torbjorn Andersson - VQA Player
Oystein Eftevaag
Florian Kagerer
@@ -123,7 +123,7 @@ ScummVM Team
Jordi Vilalta Prat
Julien Templier
- Lure:
+ Lure of the Temptress:
Paul Gilbert
M4:
@@ -164,7 +164,7 @@ ScummVM Team
Jordi Vilalta Prat
Lars Skovlund
- TeenAgent:
+ Teen Agent:
Robert Megone - Help with callback rewriting
Vladimir Menshakov
diff --git a/audio/mixer.cpp b/audio/mixer.cpp
index 3482bd30c9..fb4fffb8d8 100644
--- a/audio/mixer.cpp
+++ b/audio/mixer.cpp
@@ -257,6 +257,8 @@ int MixerImpl::mixCallback(byte *samples, uint len) {
Common::StackLock lock(_mutex);
int16 *buf = (int16 *)samples;
+ // we store stereo, 16-bit samples
+ assert(len % 4 == 0);
len >>= 2;
// Since the mixer callback has been called, the mixer must be ready...
diff --git a/audio/mixer_intern.h b/audio/mixer_intern.h
index 05e519c64c..a04eb55c5b 100644
--- a/audio/mixer_intern.h
+++ b/audio/mixer_intern.h
@@ -126,6 +126,8 @@ public:
* the backend (e.g. from an audio mixing thread). All the actual mixing
* work is done from here.
*
+ * @param samples Sample buffer, in which stereo 16-bit samples will be stored.
+ * @param len Length of the provided buffer to fill (in bytes, should be divisible by 4).
* @return number of sample pairs processed (which can still be silence!)
*/
int mixCallback(byte *samples, uint len);
diff --git a/backends/platform/iphone/iphone_video.m b/backends/platform/iphone/iphone_video.m
index 09832c783e..006603df64 100644
--- a/backends/platform/iphone/iphone_video.m
+++ b/backends/platform/iphone/iphone_video.m
@@ -175,13 +175,18 @@ const char* iPhone_getDocumentsDir() {
}
bool getLocalMouseCoords(CGPoint *point) {
- if (point->x < _screenRect.origin.x || point->x >= _screenRect.origin.x + _screenRect.size.width ||
- point->y < _screenRect.origin.y || point->y >= _screenRect.origin.y + _screenRect.size.height) {
- return false;
- }
+ if (_overlayIsEnabled) {
+ point->x = point->x / _overlayHeight;
+ point->y = point->y / _overlayWidth;
+ } else {
+ if (point->x < _screenRect.origin.x || point->x >= _screenRect.origin.x + _screenRect.size.width ||
+ point->y < _screenRect.origin.y || point->y >= _screenRect.origin.y + _screenRect.size.height) {
+ return false;
+ }
- point->x = (point->x - _screenRect.origin.x) / _screenRect.size.width;
- point->y = (point->y - _screenRect.origin.y) / _screenRect.size.height;
+ point->x = (point->x - _screenRect.origin.x) / _screenRect.size.width;
+ point->y = (point->y - _screenRect.origin.y) / _screenRect.size.height;
+ }
return true;
}
diff --git a/common/array.h b/common/array.h
index 9b94709f1d..7ab4a1b042 100644
--- a/common/array.h
+++ b/common/array.h
@@ -24,6 +24,7 @@
#include "common/scummsys.h"
#include "common/algorithm.h"
+#include "common/textconsole.h" // For error()
namespace Common {
@@ -72,8 +73,7 @@ public:
Array(const Array<T> &array) : _capacity(array._size), _size(array._size), _storage(0) {
if (array._storage) {
- _storage = new T[_capacity];
- assert(_storage);
+ allocCapacity(_size);
copy(array._storage, array._storage + _size, _storage);
}
}
@@ -83,9 +83,8 @@ public:
*/
template<class T2>
Array(const T2 *data, int n) {
- _capacity = _size = n;
- _storage = new T[_capacity];
- assert(_storage);
+ _size = n;
+ allocCapacity(n);
copy(data, data + _size, _storage);
}
@@ -179,9 +178,7 @@ public:
delete[] _storage;
_size = array._size;
- _capacity = _size + 32;
- _storage = new T[_capacity];
- assert(_storage);
+ allocCapacity(_size);
copy(array._storage, array._storage + _size, _storage);
return *this;
@@ -238,15 +235,13 @@ public:
if (newCapacity <= _capacity)
return;
- T *old_storage = _storage;
- _capacity = newCapacity;
- _storage = new T[newCapacity];
- assert(_storage);
+ T *oldStorage = _storage;
+ allocCapacity(newCapacity);
- if (old_storage) {
+ if (oldStorage) {
// Copy old data
- copy(old_storage, old_storage + _size, _storage);
- delete[] old_storage;
+ copy(oldStorage, oldStorage + _size, _storage);
+ delete[] oldStorage;
}
}
@@ -267,6 +262,17 @@ protected:
return capa;
}
+ void allocCapacity(uint capacity) {
+ _capacity = capacity;
+ if (capacity) {
+ _storage = new T[capacity];
+ if (!_storage)
+ ::error("Common::Array: failure to allocate %d bytes", capacity);
+ } else {
+ _storage = 0;
+ }
+ }
+
/**
* Insert a range of elements coming from this or another array.
* Unlike std::vector::insert, this method does not accept
@@ -286,29 +292,28 @@ protected:
const uint n = last - first;
if (n) {
const uint idx = pos - _storage;
- T *newStorage = _storage;
- if (_size + n > _capacity) {
+ T *oldStorage = _storage;
+ if (_size + n > _capacity || (_storage <= first && first <= _storage + _size) ) {
// If there is not enough space, allocate more and
// copy old elements over.
- uint newCapacity = roundUpCapacity(_size + n);
- newStorage = new T[newCapacity];
- assert(newStorage);
- copy(_storage, _storage + idx, newStorage);
- pos = newStorage + idx;
+ // Likewise, if this is a self-insert, we allocate new
+ // storage to avoid conflicts. This is not the most efficient
+ // way to ensure that, but probably the simplest on.
+ allocCapacity(roundUpCapacity(_size + n));
+ copy(oldStorage, oldStorage + idx, _storage);
+ pos = _storage + idx;
}
// Make room for the new elements by shifting back
// existing ones.
- copy_backward(_storage + idx, _storage + _size, newStorage + _size + n);
+ copy_backward(oldStorage + idx, oldStorage + _size, _storage + _size + n);
// Insert the new elements.
copy(first, last, pos);
// Finally, update the internal state
- if (newStorage != _storage) {
- delete[] _storage;
- _capacity = roundUpCapacity(_size + n);
- _storage = newStorage;
+ if (_storage != oldStorage) {
+ delete[] oldStorage;
}
_size += n;
}
diff --git a/devtools/credits.pl b/devtools/credits.pl
index 46c75402c1..8d02891576 100755
--- a/devtools/credits.pl
+++ b/devtools/credits.pl
@@ -500,7 +500,7 @@ begin_credits("Credits");
add_person("Ludvig Strigeus", "ludde", "(retired)");
end_section();
- begin_section("BASS"); # Beneath a Steel Sky
+ begin_section("Beneath a Steel Sky");
add_person("Robert G&ouml;ffringmann", "lavosspawn", "(retired)");
add_person("Oliver Kiehl", "olki", "(retired)");
add_person("Joost Peters", "joostp", "");
@@ -539,7 +539,7 @@ begin_credits("Credits");
add_person("Vincent Hamm", "yaz0r", "(retired)");
end_section();
- begin_section("Draci");
+ begin_section("Draci Historie");
add_person("Denis Kasak", "dkasak13", "");
add_person("Robert &Scaron;palek", "spalek", "");
end_section();
@@ -549,7 +549,7 @@ begin_credits("Credits");
add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
end_section();
- begin_section("FOTAQ"); # Flight of the Amazon Queen
+ begin_section("Flight of the Amazon Queen");
add_person("David Eriksson", "twogood", "(retired)");
add_person("Gregory Montoir", "cyx", "");
add_person("Joost Peters", "joostp", "");
@@ -574,7 +574,7 @@ begin_credits("Credits");
add_person("Eugene Sandulenko", "sev", "");
end_section();
- begin_section("Kyra");
+ begin_section("Legend of Kyrandia");
add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "VQA Player");
add_person("Oystein Eftevaag", "vinterstum", "");
add_person("Florian Kagerer", "athrxx", "");
@@ -588,7 +588,7 @@ begin_credits("Credits");
add_person("Julien Templier", "littleboy", "");
end_section();
- begin_section("Lure");
+ begin_section("Lure of the Temptress");
add_person("Paul Gilbert", "dreammaster", "");
end_section();
@@ -636,7 +636,7 @@ begin_credits("Credits");
add_person("Lars Skovlund", "lskovlun", "");
end_section();
- begin_section("TeenAgent");
+ begin_section("Teen Agent");
add_person("Robert Megone", "sanguine", "Help with callback rewriting");
add_person("Vladimir Menshakov", "whoozle", "");
end_section();
diff --git a/doc/translations/README-de.txt b/doc/translations/README-de.txt
new file mode 100755
index 0000000000..a1d7d6eb5f
--- /dev/null
+++ b/doc/translations/README-de.txt
@@ -0,0 +1,178 @@
+Dieses Dokument ist eine auszugsweise Übersetzung der englischen
+REAMDE-Datei. Das Original-Dokument enthält viel mehr Informationen.
+Sollten Sie hier also nicht das finden, was Sie benötigen und ein wenig
+Englisch können, sollten Sie sich die englische README-Datei ansehen.
+
+Für weitere Informationen, Kompatiblitätslisten, Einzelheiten zu Spenden,
+die neusten veröffentlichten Versionen, Fortschrittberichte und mehr
+besuchen Sie bitte die ScummVM-Website unter der Adresse:
+http://www.scummvm.org/
+
+Inhaltsverzeichnis:
+------------------
+1.0) Einführung
+ * 1.1 Über ScummVM
+ * 1.2 Schnellstart
+2.0) Kontakt
+ * 2.1 Fehler berichten
+
+1.0) Einführung:
+---- -------------
+
+1.1) Über ScummVM:
+---- --------------
+ScummVM ist ein Programm, welches es Ihnen ermöglicht, bestimmte klassische
+Grafik-Adventure (unter anderem aus dem Point-and-Click-Bereich) zu spielen,
+vorausgesetzt, Sie sind im Besitz der Dateien des Spiels. Das Schlaue daran
+ist: ScummVM ersetzt lediglich die Funktion der ausführbaren Dateien,
+die mit den Spielen kamen, was ermöglicht, diese Spiele auf Systemen zu spielen,
+für welche sie nie erstellt wurden!
+
+Ursprünglich wurde dieses Programm dafür entwickelt, um SCUMM-Spiele von
+LucasArts auszuführen, wie beispielsweise Maniac Mansion, Monkey Island,
+Day of the Tentacle oder Sam and Max. SCUMM steht als Abkürzung für
+„Script Creation Utility for Maniac Mansion“ (deutsch etwa:
+Skripterstellungsdienstprogramm für Maniac Mansion), was das erste
+Spiel von LucasArts war, für welches LucasArts dieses System entworfen hatte.
+Und viel später verlieh es seinen Namen an ScummVM (wobei „VM“ für
+„Virtuelle Maschine“ steht).
+
+Mit der Zeit wurde Unterstützung für viele Nicht-SCUMM-Spiele hinzugefügt.
+Einige Adventures, die ScummVM unterstützt, sind unter anderem Simon the
+Sorcerer 1 und 2 von Adventure Soft, Beneath A Steel Sky und
+Baphomets Fluch 1 und 2 von Revolution, Flight of the Amazon Queen,
+Erben der Erde (Wyrmkeep), Gobliiins von Coktel Vision sowie
+The Legend of Kyrandia von Westwood Studios.
+Sie können eine genaue Liste mit Einzelheiten einsehen, welche Auskunft
+darüber gibt, welche Spiele unterstützt werden und wie gut. Gehen Sie
+hierfür auf die Kompatiblitätsseite. ScummVM wird kontinuierlich
+verbessert, also schauen Sie oft vorbei.
+
+Unter den Systemen, mit denen Sie diese Spiele spielen können, befinden
+sich Windows, Linux, Mac OS X, Dreamcast, PocketPC, PalmOS, iPhone,
+AmigaOS, BeOS, OS/2, PSP, PS2, SymbianOS/EPOC und viele mehr.
+
+Zurzeit befindet sich ScummVM immer noch stark in der Entwicklung.
+Seien Sie sich bewusst, dass wir zwar versuchen, dass viele Spiele
+mit wenigen erheblichen Fehlern durchgespielt werden können, aber es
+dennoch zu Abstürzen kommen kann und wir keine Gewähr übernehmen.
+Davon abgesehen: Einige Spiele werden seit längerer Zeit unterstützt
+und sollten in jeder stabilen veröffentlichten Version gut laufen.
+Sie können sich einen Eindruck davon verschaffen, wie gut jedes Spiel
+unter ScummVM läuft, indem Sie auf die Kompatiblitätsseite schauen.
+
+Wenn Sie sich ein wenig umsehen, können Sie herausfinden, dass
+ScummVM sogar kommerziell genutzt wird, um einige der unterstützen Spiele
+auf modernen Plattformen wiederzuveröffentlichen. Dies zeigt, dass
+verschiedene Firmen mit der Qualität der Software zufrieden sind und wie gut
+einige der Spiele mit ihrer Hilfe laufen.
+
+Wenn Ihnen ScummVM gefällt, können Sie uns gerne etwas Geld spenden,
+um uns finanziell zu unterstützen. Dies hilft uns dabei, notwendige
+Dienstprogramme zu kaufen, um ScummVM einfacher und schneller zu entwickeln.
+Wenn Sie nicht spenden können, dürfen Sie auch gerne einen Patch beisteuern.
+
+1.2) Schnellstart:
+---- ------------
+WICHTIG: In der unteren kurzen Anleitung wird davon ausgegangen, dass Sie
+ScummVM auf Deutsch benutzen. Standardmäßig wird ScummVM die Sprache
+Ihres Betriebssystems verwenden. Falls ScummVM auf Englisch statt auf
+Deutsch erscheint, sollten Sie folgende Schritte ausführen, wenn Sie bei
+Schritt 3 angelangt sind und ScummVM gestartet haben:
+-Klicken Sie auf "Options".
+-Klicken Sie auf den rechten Pfeil in der Reiterleiste und wählen den
+ Reiter "Misc" aus.
+-Wählen Sie im Feld "GUI Language" "Deutsch" aus und klicken auf "OK".
+-Bestätigen Sie die erscheinende Nachricht, klicken auf "Quit", um
+ ScummVM zu beenden und starten dann das Programm erneut.
+
+Wenn Sie ScummVM lieber in Englisch verwenden möchten, benutzen Sie bitte
+die Anleitung in der englischen README-Datei.
+
+
+Für die ungelduldigen unter den Benutzern ist hier in fünf einfachen
+Schritten kurz beschrieben, wie man ScummVM lauffähig macht und das
+Programm verwendet.
+
+1. Laden Sie ScummVM unter der Adresse
+<http://www.scummvm.org/downloads.php> herunter und installieren Sie es.
+
+2. Erstellen Sie ein Verzeichnis auf Ihrer Festplatte und kopieren Sie
+die Dateien des Spiels vom Original-Datenträger in dieses Verzeichnis.
+Wiederholen Sie diesen Vorgang für jedes Spiel, das Sie spielen möchten.
+
+3. Starten Sie ScummVM, wählen Sie "Spiel hinzufügen" aus, wählen Sie das
+Verzeichnis mit den Dateien des Spiels aus (versuchen Sie nicht, die
+Dateien des Spiels selbst auszuwählen!) und klicken Sie auf "Auswählen".
+
+4. Ein Dialog sollte erscheinen, der Ihnen ermöglicht, verschiedene
+Einstellungen vorzunehmn, sollten Sie dies wünschen (es sollte jedoch in
+Ordnung sein, alles voreingestellt zu belassen). Bestätigen Sie diesen
+Dialog.
+
+5. Wählen Sie das Spiel aus der Liste aus, welches Sie spielen möchten
+und klicken Sie auf "Starten".
+
+In Zukunft sollte es nun möglich sein, direkt zu Schritt 5 überzugehen,
+außer Sie wollen noch mehr Spiele hinzufügen.
+
+Tipp: Wenn Sie mehrere Spiele auf einmal hinzufügen möchten, drücken Sie
+die Umschalt-Taste (Shift), bevor Sie auf "Spiel hinzufügen" klicken.
+Diese Schaltfläche wird somit ihren Text zu "Durchsuchen" umändern und
+wenn Sie dann auf diese klicken, werden Sie auch dazu aufgefordert, ein
+Verzeichnis auszuwählen, nur dieses Mal wird ScummVM alle
+Unterverzeichnisse automatisch nach unterstützen Spielen durchsuchen.
+
+
+2.0) Kontakt:
+---- --------
+Der einfachste Weg, um mit dem ScummVM-Team in Verbindung zu treten, ist,
+Fehlerberichte einzusenden (siehe Abschnitt 2.1) oder durch Verwendung
+des Forums unter der Adresse http://forums.scummvm.org .
+Sie können ebenso der Mailing-Liste scummvm-devel betreiten und an diese
+E-Mails versenden oder mit uns im IRC chatten (#scummvm unter
+irc.freenode.net). Bitte fordern Sie uns nicht dazu auf, ein nicht
+unterstütztes Spiel zu unterstützen. Lesen Sie zuerst die Seite FAQ
+(Häufig gestellte Fragen) auf unserer Website.
+Bitte beachten Sie Kenntnis, dass die offizielle Sprache des Forums,
+der Mailing-Liste und des Chats Englisch ist und keine andere Sprache
+dort verwendet werden sollte.
+
+
+2.1) Fehler berichten:
+---- ---------------
+Um einen Fehler zu berichten, erstellen Sie bitte ein SourceForge-Konto
+und folgen Sie dem Link "Bug Tracker" auf der ScummVM-Website. Bitte
+stellen Sie sicher, dass sich der Bug wiedererzeugen lässt und immer noch
+in der neusten Version von SVN oder des Daily builds auftritt. Bitte
+sehen Sie auch auf der Problemliste unten und der Kompatiblitätsliste auf
+der ScummVM-Website für dieses Spiel nach, um sicherzustellen, dass das
+Problem nicht bereits bekannt ist:
+
+ http://www.scummvm.org/compatibility_stable.php
+
+Bitte berichten Sie keine Fehler zu Spielen, die nicht als durchspielbar
+im Bereich "Supported Games" oder der Kompatiblitätsliste aufgelistet
+sind. Wir -wissen-, dass diese Spiele Fehler aufweisen.
+
+Bitte liefern Sie folgende Informationen:
+ - ScummVM-Version (BITTE mit neuster Version von SVN oder
+ des Daily builds testen)
+ - Einzelheiten zum Fehler, einschließlich Anweisungen, um den Fehler
+ hervorzurufen
+ - Sprache des Spiels (Englisch, Deutsch, ...)
+ - Version des Spiels (Version mit Sprachausgabe [Talkie],
+ Disketten-Version, ...)
+ - Plattform und gegebenenfalls Compiler (Win32, Linux, FreeBSD, ...)
+ - Fügen Sie einen Speicherstand hinzu, wenn es möglich ist.
+ - Wenn dieser Fehler erst seit kurzem Auftritt, teilen Sie bitte die
+ letzte Version ohne den Fehler mit und die erste Version mit diesem
+ Fehler. Auf diese Weise können wir diesen schneller beseitigen,
+ indem wir die vorgenommen Veränderungen einsehen.
+
+Zum Schluss möchten wir Sie noch bitten, jeden Punkt einzeln zu
+berichten; bitte senden Sie nicht mehrere Punkte mit dem selben Ticket
+ein, ansonsten wird es schwierig, den Status jedes einzelnen Fehlers
+zu verfolgen. Denken Sie bitte auch daran, dass alle Fehlerberichte in
+Englisch verfasst sein müssen.
+
diff --git a/doc/translations/README-fr.txt b/doc/translations/README-fr.txt
new file mode 100755
index 0000000000..186f0cd24d
--- /dev/null
+++ b/doc/translations/README-fr.txt
@@ -0,0 +1,172 @@
+Ce document est une traduction partielle du fichier README anglais. Le
+document original contient bien plus d'informations, donc si vous ne
+trouvez pas ce que vous cherchez dans ce document et que vous comprenez
+un peu l'anglais, jetez un coup d'oeil au fichier README anglais.
+
+Pour plus d'informations, liste des jeux compatibles, détails pour
+donner de l'argent, la dernière version disponibles et bien plus encore,
+visitez le site web de ScummVM à l'adresse http://www.scummvm.org/
+
+Table des matières:
+-------------------
+1.0) Introduction
+ * 1.1 À propos de ScummVM
+ * 1.2 Démarrage rapide
+2.0) Contact
+ * 2.1 Signaler des bogues
+
+1.0) Introduction:
+---- -------------
+
+1.1) À propos de ScummVM:
+---- --------------------
+ScummVM est un logiciel qui vous permet de jouer certain jeux
+d'aventures graphiques de type 'point-and-click' (pointer et cliquer), à
+condition que vous possédiez les fichiers de données du jeu. Le plus
+astucieux: ScummVM remplace juste les exécutables fournis avec les jeux,
+vous permettant de jouer sur les systèmes pour lesquels ils n'ont jamais
+été conçus!
+
+A l'origine il a été conçu pour exécuter les jeux basé sur le système
+SCUMM de LucasArts, tels que Maniac Mansion, Monkey Island, Day of the
+Tentacle ou Sam et Max. SCUMM est l'acronyme de 'Script Creation Utility
+for Maniac Mansion', qui a été le premier jeu pour lequel LucasArts a
+conçu ce système. Et beaucoup plus tard, il donna son nom à ScummVM
+('VM' signifiant Virtual Machine).
+
+Au cours du temps de nombreux jeux non-SCUMM ont été ajouté, et ScummVM
+prend désormais en charge de nombreux jeux Sierra AGI et SCI (tels que
+King's Quest 1-6, Space Quest 1-5, ...), Discworld 1 et 2, Simon the
+Sorcerer 1 et 2, Beneath A Steel Sky, Lure of the Temptress, Les
+Chevaliers de Baphomet (Broken Sword I), Les Boucliers de Quetzalcoatl
+(Broken Sword II), L'amazone queen (Flight of the Amazon Queen),
+Gobliiins 1-3, la série des Legend of Kyrandia, un grand nombre de jeux
+pour enfants de Humongous Entertainment (incluant les jeux Marine Malice
+et Pouce-Pouce) et beaucoup plus. Vous pouvez trouver une liste complète
+et détaillée sur les aventures qui sont pris en charge et les problèmes
+connus sur la page de compatibilité. ScummVM évolue en permanence, donc
+vérifier cette liste de compatibilités souvent.
+
+Vous pouvez jouer à ces jeux sur des ordinateurs de bureau classiques
+(sous Windows, Linux, Mac OS X, ...), sur des consoles (Dreamcast,
+Nintendo DS et Wii, PS2, PSP, ...), smartphones (Android, iPhone, Pocket
+PC, Symbian ...) et plus encore.
+
+À ce stade ScummVM est encore en cours de développement. Soyez conscient
+que malgré tous nos efforts pour en faire un logiciel le plus stable
+possible, des plantages peuvent survenir. et nous n'offrons aucune
+garantie. Cela étant dit, certains jeux sont supportés depuis longtemps
+et devrait fonctionner correctement avec une version stable et récente
+de ScummVM. Vous pouvez vous faire une idée du niveau de support d'un
+jeu en regardant la page de compatibilité. En fait, si vous cherchez un
+peu vous pourrez découvrir que ScummVM est même utilisé dans le commerce
+pour la ré-édition sur les plates-formes modernes de quelques-uns des
+jeux supportés. Cela montre que plusieurs entreprises sont satisfaits de
+la qualité du logiciel.
+
+Si vous aimez ScummVM n'hésitez pas à faire un don en utilisant le
+bouton PayPal sur la page d'accueil ScummVM. Cela nous aidera à acheter
+les services nécessaires pour rendre le développement de ScummVM plus
+facile et plus rapide. Si vous ne pouvez pas faire de don, vous pouvez
+aussi proposer des patches!
+
+1.2) Démarrage rapide:
+---- ----------------
+IMPORTANT: Les instructions ci-dessous supposent que vous utilisez
+ScummVM en Français. Par défaut, ScummVM utilise la langue de votre
+système d'exploitation. Si vous préférez utiliser ScummVM en Anglais,
+vous pouvez plutôt utiliser le guide du fichier README Anglais.
+
+
+Pour les plus impatients, voici comment obtenir ScummVM en cinq étapes
+simples.
+
+1. Télécharger ScummVM sur <http://www.scummvm.org/downloads.php> et
+installer l'application.
+
+2. Créez un répertoire sur votre disque dur et copier les fichiers de
+données de jeu à partir du support original dans ce répertoire. Répétez
+cette opération pour chaque jeu que vous voulez jouer. Utilisez un
+répertoire séparé pour chaque jeu.
+
+3. Lancez ScummVM.
+
+Si ScummVM apparaît en anglais au lieu du français, procédez comme suit
+pour changer la langue:
+- Cliquez sur 'Options'.
+- Cliquez sur la flèche droite dans la barre d'onglets et sélectionnez
+ l'onglet 'Misc'.
+- Choisissez 'Francais' dans le champs 'GUI Language' et cliquez sur
+ 'OK'. Confirmez-le message qui apparaît, cliquez sur 'Quit' pour
+ quitter ScummVM, puis redémarrer le programme.
+
+Maintenant cliquez sur 'Ajouter...', puis sélectionnez le répertoire
+contenant les fichiers de données du jeu (ne pas essayer de sélectionner
+les fichiers de données eux-mêmes!) et cliquez sur 'Choisir'.
+
+4. Une boîte de dialogue devrait apparaître vous permettant de
+configurer divers paramètres si vous le souhaitez (la valeur par défaut
+devrait convenir dans la plupart des cas). Confirmez la boîte de
+dialogue.
+
+5. Sélectionnez le jeu que vous voulez jouer dans la liste, et appuyez
+sur 'Démarrer'.
+
+ScummVM se souvient des jeux ajoutés. Donc si vous quittez ScummVM puis
+le relancez la liste des jeux contiendra tous les jeux que vous avez
+déjà ajoutés. Vous pouvez donc passer directement à l'étape 5, à moins
+que vous vouliez ajouter des jeux supplémentaires.
+
+Astuce: Si vous souhaitez ajouter plusieurs jeux d'un coup, essayez
+d'appuyer et de maintenir la touche Maj (Shift) tout en cliquant sur
+'Ajouter...' - son texte changera en 'Ajout Massif…'. Vous serez alors
+invitez à sélectioner un répertoire dans lequel ScummVM parcourra tous
+les sous-répertoire à la recherche de jeux supportés.
+
+
+2.0) Contact:
+---- --------
+La meilleure façon de contacter l'équipe de ScummVM est en soumettant
+des rapports de bogues (voir section 2.1) ou en utilisant nos forums
+http://forums.scummvm.org. Vous pouvez également envoyer un e-mail sur
+la liste de diffusion scummvm-devel, ou discuter avec nous sur IRC
+(#scummvm sur irc.freenode.net). S'il vous plaît ne nous demandez pas de
+supporter un jeu non pris en charge - lire la FAQ sur notre site web
+avant. Notez que la langue officielle de la liste de diffusion, forum et
+chat est l'Anglais, et aucune autre langues ne doivent être utilisée.
+
+
+2.1) Reporting Bugs:
+---- ---------------
+Pour signaler un bogue, veuillez créer un compte SourceForge et suivez
+le lien "Bug Tracker" depuis notre page d'accueil. S'il vous plaît
+vérifiez que le bogue est reproductible, et se produit encore dans la
+'Daily Build' la plus récente. Vérifiez également la liste des problèmes
+connus (ci-dessous) et la liste de compatibilité sur notre site Web pour
+ce jeu, pour s'assurer que le problème n'est pas déjà connue:
+
+ http://www.scummvm.org/compatibility_stable.php
+
+Veuillez ne pas rapporter de bogues sur les jeux qui ne sont pas
+répertoriés comme étant finissable sur la liste de compatibilité. Nous
+savons que ces jeux ont des bogues.
+
+Veuillez inclure les informations suivantes lorsque vous signalez un
+problème:
+ - Version de ScummVM (veuillez tester avec la 'Daily Build' la plus
+ récente)
+ - Détails du problème, incluant les instructions pour le reproduire
+ - Langue du jeu (anglais, allemand, ...)
+ - Version du jeu (talkie, disquette, ...)
+ - Plate-forme et compilateur (Win32, Linux, Mac, FreeBSD, ...)
+ - Joindre une sauvegarde si possible
+ - Si ce problème est récent, s'il vous plaît notez la dernière
+ version sans bogue, et la première version qui à le problème. De
+ cette façon, nous pouvons y remédier plus rapidement, en regardant
+ les modifications apportées entre ces deux versions.
+
+Enfin, veuillez signaler chaque problème séparément, sinon, il devient
+difficile de suivre l'état de chaque problème individuel. S'il vous
+plaît gardez à l'esprit également que tous les rapports de bogue doivent
+être rédigés en anglais.
+
diff --git a/doc/translations/README-translation_template.txt b/doc/translations/README-translation_template.txt
new file mode 100755
index 0000000000..ec43ebef60
--- /dev/null
+++ b/doc/translations/README-translation_template.txt
@@ -0,0 +1,158 @@
+This document is a partial translation of the English README file. The
+original document has much more information, so if you cannot find what
+you need here and can understand a bit of English, try to look at the
+English README file.
+
+For more information, compatibility lists, details on donating, the
+latest release, progress reports and more, please visit the ScummVM home
+page at: http://www.scummvm.org/
+
+Table of Contents:
+------------------
+1.0) Introduction
+ * 1.1 About ScummVM
+ * 1.2 Quick start
+2.0) Contact
+ * 2.1 Reporting Bugs
+
+1.0) Introduction:
+---- -------------
+
+1.1) About ScummVM:
+---- --------------
+ScummVM is a program which allows you to run certain classic graphical
+point-and-click adventure games, provided you already have their data
+files. The clever part about this: ScummVM just replaces the executables
+shipped with the game, allowing you to play them on systems for which
+they were never designed!
+
+Originally it was designed to run LucasArts' SCUMM games, such as Maniac
+Mansion, Monkey Island, Day of the Tentacle or Sam and Max. SCUMM stands
+for 'Script Creation Utility for Maniac Mansion', which was the first
+game for which LucasArts designed this system. And much later it gave
+its name to ScummVM ('VM' meaning Virtual Machine).
+
+Over time support for a lot of non-SCUMM games has been added, and
+ScummVM now also supports many of Sierra's AGI and SCI games (such as
+King's Quest 1-6, Space Quest 1-5, ...), Discworld 1 and 2, Simon the
+Sorcerer 1 and 2, Beneath A Steel Sky, Lure of the Temptress, Broken
+Sword I and II, Flight of the Amazon Queen, Gobliiins 1-3, The Legend of
+Kyrandia series, many of Humongous Entertainment's children's SCUMM
+games (including Freddi Fish and Putt Putt games) and many more. You can
+find a full list with details on which adventures are supported and how
+well on the compatibility page. ScummVM is continually improving, so
+check back often.
+
+Among the systems on which you can play those games are regular desktop
+computers (running Windows, Linux, Mac OS X, ...), game consoles
+(Dreamcast, Nintendo DS & Wii, PS2, PSP, ...), smartphones (Android,
+iPhone, PocketPC, Symbian ...) and more.
+
+At this time ScummVM is still under heavy development. Be aware that
+whilst we attempt to make sure that many games can be completed with few
+major bugs, crashes can happen and we offer no warranty. That being
+said, some of the games have been supported for a long time and should
+work fine with any recent stable release. You can get a feeling of how
+well each game is working in ScummVM by looking at the compatibility
+page. Actually if you browse a bit around you might discover that
+ScummVM is even being used commercially to re-release some of the
+supported games on modern platforms. This shows that several companies
+are happy with the quality of the software and how well it can run some
+of the games.
+
+If you enjoy ScummVM feel free to donate using the PayPal button on the
+ScummVM homepage. This will help us buy utilities needed to develop
+ScummVM easier and quicker. If you cannot donate, help and contribute a
+patch!
+
+1.2) Quick start:
+---- ------------
+IMPORTANT: This short guide assumes you are using ScummVM in <translated
+language>. By default, ScummVM will use your operating system's
+language. If you prefer to use ScummVM in English, You may also prefer
+to follow the guide from the English REAMDE file.
+
+For the impatient among you, here is how to get ScummVM running in five
+simple steps.
+
+1. Download ScummVM from <http://www.scummvm.org/downloads.php> and
+install it.
+
+2. Create a directory on your hard drive and copy the game datafiles
+from the original media to this directory. Repeat this for every game
+you want to play (it is better to use a separate directory for each
+game).
+
+3. Start ScummVM.
+
+If at this stage ScummVM appears in English instead of <translated
+language>, do as follow to change the language:
+- Click on 'Options'.
+- Click on the right arrow in the tab bar and select the 'Misc' tab.
+- Select "<translated language>" in the 'GUI Language' box and click on
+ 'OK'.
+- Confirm the message box that pops-up, click on 'Quit' to quit ScummVM
+ and then restart the program.
+
+Now choose 'Add game', select the directory with the game datafiles (do
+not try to select the datafiles themselves!) and press 'Choose'
+
+4. A dialog should popup allowing you to configure various settings if
+you wish to (it should be just fine to leave everything at its default,
+though). Confirm the dialog.
+
+5. Select the game you want to play in the list, and press 'Start'.
+
+ScummVM remembers the games that you add. So if you close ScummVM, the
+next time you start it again the list of game will contain all the games
+you previously added. You can therefore go directly to step 5, unless
+you want to add more games.
+
+Hint: If you want to add multiple games in one go, try pressing and
+holding the shift key before clicking 'Add game' -- its label will
+change to 'Mass Add' and if you press it, you are again asked to select
+a directory, only this time ScummVM will search through all
+subdirectoriess for supported games.
+
+
+2.0) Contact:
+---- --------
+The easiest way to contact the ScummVM team is by submitting bug reports
+(see section 2.1) or by using our forums at http://forums.scummvm.org .
+You can also join and e-mail the scummvm-devel mailing list, or chat
+with us on IRC (#scummvm on irc.freenode.net) Please do not ask us to
+support an unsupported game -- read the FAQ on our web site first. Note
+that the official language of the forum, mailing list and chat is
+English and no other languages should be used.
+
+
+2.1) Reporting Bugs:
+---- ---------------
+To report a bug, please create a SourceForge account and follow the "Bug
+Tracker" link from our homepage. Please make sure the bug is
+reproducible, and still occurs in the latest SVN/Daily build version.
+Also check the known problems list (below) and the compatibility list on
+our website for that game, to ensure the issue is not already known:
+
+ http://www.scummvm.org/compatibility_stable.php
+
+Please do not report bugs on games that are not listed as being
+completeable in the 'Supported Games' section, or compatibility list. We
+-know- those games have bugs.
+
+Please include the following information:
+ - ScummVM version (PLEASE test the latest SVN/Daily build)
+ - Bug details, including instructions on reproducing
+ - Language of game (English, German, ...)
+ - Version of game (talkie, floppy, ...)
+ - Platform and Compiler (Win32, Linux, FreeBSD, ...)
+ - Attach a savegame if possible
+ - If this bug only occurred recently, please note the last version
+ without the bug, and the first version including the bug. That way
+ we can fix it quicker by looking at the changes made.
+
+Finally, please report each issue separately; do not file multiple
+issues on the same ticket. (Otherwise, it gets difficult to track the
+status of each individual bug). Please keep also in mind that all the
+bug reports must be written in English.
+
diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp
index d273c2a9fb..22d8adf92d 100644
--- a/engines/agi/detection.cpp
+++ b/engines/agi/detection.cpp
@@ -164,7 +164,7 @@ public:
AgiMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "AGI preAGI + v2 + v3 Engine";
+ return "AGI preAGI + v2 + v3";
}
virtual const char *getOriginalCopyright() const {
return "Sierra AGI Engine (C) Sierra On-Line Software";
diff --git a/engines/cine/detection.cpp b/engines/cine/detection.cpp
index 2b7bf0375c..262798a34e 100644
--- a/engines/cine/detection.cpp
+++ b/engines/cine/detection.cpp
@@ -90,7 +90,7 @@ public:
CineMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Cinematique evo 1 engine";
+ return "Cinematique evo 1";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/cruise/detection.cpp b/engines/cruise/detection.cpp
index d77d920205..4aaaf03e29 100644
--- a/engines/cruise/detection.cpp
+++ b/engines/cruise/detection.cpp
@@ -247,7 +247,7 @@ public:
CruiseMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Cinematique evo 2 engine";
+ return "Cinematique evo 2";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/draci/detection.cpp b/engines/draci/detection.cpp
index c3502cbaa0..572ecce77b 100644
--- a/engines/draci/detection.cpp
+++ b/engines/draci/detection.cpp
@@ -113,7 +113,7 @@ public:
DraciMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Draci Historie Engine";
+ return "Draci Historie";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/drascula/detection.cpp b/engines/drascula/detection.cpp
index 58a05495fd..5a8903db9d 100644
--- a/engines/drascula/detection.cpp
+++ b/engines/drascula/detection.cpp
@@ -296,7 +296,7 @@ public:
DrasculaMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Drascula Engine";
+ return "Drascula";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/gob/detection.cpp b/engines/gob/detection.cpp
index c165090c4c..be44c05bfb 100644
--- a/engines/gob/detection.cpp
+++ b/engines/gob/detection.cpp
@@ -116,7 +116,7 @@ public:
GobMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Gob Engine";
+ return "Gob";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/groovie/detection.cpp b/engines/groovie/detection.cpp
index bde89f8769..78ecac8dbb 100644
--- a/engines/groovie/detection.cpp
+++ b/engines/groovie/detection.cpp
@@ -219,7 +219,7 @@ public:
GroovieMetaEngine() : AdvancedMetaEngine(detectionParams) {}
const char *getName() const {
- return "Groovie Engine";
+ return "Groovie";
}
const char *getOriginalCopyright() const {
diff --git a/engines/hugo/detection.cpp b/engines/hugo/detection.cpp
index 2fdb63d0a7..25b8b16084 100644
--- a/engines/hugo/detection.cpp
+++ b/engines/hugo/detection.cpp
@@ -161,7 +161,7 @@ public:
HugoMetaEngine() : AdvancedMetaEngine(detectionParams) {}
const char *getName() const {
- return "Hugo Engine";
+ return "Hugo";
}
const char *getOriginalCopyright() const {
diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp
index 3c59838e0f..864228a2d4 100644
--- a/engines/kyra/detection.cpp
+++ b/engines/kyra/detection.cpp
@@ -79,7 +79,7 @@ public:
KyraMetaEngine() : AdvancedMetaEngine(detectionParams) {}
const char *getName() const {
- return "Legend of Kyrandia Engine";
+ return "Legend of Kyrandia";
}
const char *getOriginalCopyright() const {
diff --git a/engines/lastexpress/detection.cpp b/engines/lastexpress/detection.cpp
index e55a6f6fad..bfcb415da1 100644
--- a/engines/lastexpress/detection.cpp
+++ b/engines/lastexpress/detection.cpp
@@ -207,7 +207,7 @@ public:
LastExpressMetaEngine() : AdvancedMetaEngine(detectionParams) {}
const char *getName() const {
- return "LastExpress Engine";
+ return "Last Express";
}
const char *getOriginalCopyright() const {
diff --git a/engines/lure/detection.cpp b/engines/lure/detection.cpp
index b40e60af67..a69300ee2f 100644
--- a/engines/lure/detection.cpp
+++ b/engines/lure/detection.cpp
@@ -205,7 +205,7 @@ public:
LureMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Lure of the Temptress Engine";
+ return "Lure of the Temptress";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/m4/detection.cpp b/engines/m4/detection.cpp
index 645855a43b..1aefe3d02d 100644
--- a/engines/m4/detection.cpp
+++ b/engines/m4/detection.cpp
@@ -414,7 +414,7 @@ public:
M4MetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "MADS/M4 engine";
+ return "MADS/M4";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/made/detection.cpp b/engines/made/detection.cpp
index e5a11766f4..4576e2b5ce 100644
--- a/engines/made/detection.cpp
+++ b/engines/made/detection.cpp
@@ -555,7 +555,7 @@ public:
MadeMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "MADE Engine";
+ return "MADE";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/mohawk/detection.cpp b/engines/mohawk/detection.cpp
index 3b7efe714d..6a73b28246 100644
--- a/engines/mohawk/detection.cpp
+++ b/engines/mohawk/detection.cpp
@@ -188,7 +188,7 @@ public:
MohawkMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Mohawk Engine";
+ return "Mohawk";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/parallaction/detection.cpp b/engines/parallaction/detection.cpp
index 7e5798bf5c..c3719bcd51 100644
--- a/engines/parallaction/detection.cpp
+++ b/engines/parallaction/detection.cpp
@@ -250,7 +250,7 @@ public:
ParallactionMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Parallaction engine";
+ return "Parallaction";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp
index ca52ff5208..b23baf4cc3 100644
--- a/engines/saga/detection.cpp
+++ b/engines/saga/detection.cpp
@@ -131,7 +131,7 @@ public:
SagaMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Saga engine ["
+ return "SAGA ["
#if defined(ENABLE_IHNM) && defined(ENABLE_SAGA2)
"all games"
diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp
index 28d6abbd48..61e6cc9d09 100644
--- a/engines/sci/detection.cpp
+++ b/engines/sci/detection.cpp
@@ -402,7 +402,7 @@ public:
SciMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "SCI Engine [SCI0, SCI01, SCI10, SCI11"
+ return "SCI [SCI0, SCI01, SCI10, SCI11"
#ifdef ENABLE_SCI32
", SCI32"
#endif
diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp
index ec85f52ace..bba26961c7 100644
--- a/engines/scumm/detection.cpp
+++ b/engines/scumm/detection.cpp
@@ -1156,7 +1156,7 @@ Common::Error ScummMetaEngine::createInstance(OSystem *syst, Engine **engine) co
}
const char *ScummMetaEngine::getName() const {
- return "SCUMM Engine ["
+ return "SCUMM ["
#if defined(ENABLE_SCUMM_7_8) && defined(ENABLE_HE)
"all games"
diff --git a/engines/sword25/detection.cpp b/engines/sword25/detection.cpp
index 9ca44c61eb..caa1cf51ac 100644
--- a/engines/sword25/detection.cpp
+++ b/engines/sword25/detection.cpp
@@ -102,7 +102,7 @@ public:
Sword25MetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "The Broken Sword 2.5 Engine";
+ return "Broken Sword 2.5";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/teenagent/detection.cpp b/engines/teenagent/detection.cpp
index 8db2b36e9a..4784e2fb7e 100644
--- a/engines/teenagent/detection.cpp
+++ b/engines/teenagent/detection.cpp
@@ -113,7 +113,7 @@ public:
}
virtual const char *getName() const {
- return "Teen Agent Engine";
+ return "Teen Agent";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/tinsel/detection.cpp b/engines/tinsel/detection.cpp
index b0af9a9f9b..27b16c5b93 100644
--- a/engines/tinsel/detection.cpp
+++ b/engines/tinsel/detection.cpp
@@ -104,7 +104,7 @@ public:
TinselMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Tinsel Engine";
+ return "Tinsel";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/toon/detection.cpp b/engines/toon/detection.cpp
index f98d09a5fc..1056f6ec0d 100644
--- a/engines/toon/detection.cpp
+++ b/engines/toon/detection.cpp
@@ -147,7 +147,7 @@ public:
ToonMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Toon Engine";
+ return "Toon";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/touche/detection.cpp b/engines/touche/detection.cpp
index 9d159e8327..b7f9c092aa 100644
--- a/engines/touche/detection.cpp
+++ b/engines/touche/detection.cpp
@@ -156,7 +156,7 @@ public:
ToucheMetaEngine() : AdvancedMetaEngine(detectionParams) {}
virtual const char *getName() const {
- return "Touche Engine";
+ return "Touche";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 2f0536599a..7534abdec7 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -3481,52 +3481,11 @@ void SceneHandler::postInit(SceneObjectList *OwnerList) {
void SceneHandler::process(Event &event) {
// Main keypress handler
- if ((event.eventType == EVENT_KEYPRESS) && !event.handled) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_F1:
- // F1 - Help
- MessageDialog::show((_vm->getFeatures() & GF_DEMO) ? DEMO_HELP_MSG : HELP_MSG, OK_BTN_STRING);
- break;
-
- case Common::KEYCODE_F2: {
- // F2 - Sound Options
- ConfigDialog *dlg = new ConfigDialog();
- dlg->runModal();
- delete dlg;
- _globals->_events.setCursorFromFlag();
- break;
- }
-
- case Common::KEYCODE_F3:
- // F3 - Quit
- _globals->_game->quitGame();
- event.handled = false;
- break;
-
- case Common::KEYCODE_F4:
- // F4 - Restart
- _globals->_game->restartGame();
- _globals->_events.setCursorFromFlag();
- break;
-
- case Common::KEYCODE_F7:
- // F7 - Restore
- _globals->_game->restoreGame();
- _globals->_events.setCursorFromFlag();
- break;
+ if (!event.handled) {
+ _globals->_game->processEvent(event);
- case Common::KEYCODE_F10:
- // F10 - Pause
- GfxDialog::setPalette();
- MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING);
+ if (event.eventType == EVENT_KEYPRESS)
_globals->_events.setCursorFromFlag();
- break;
-
- default:
- break;
- }
-
- _globals->_events.setCursorFromFlag();
}
// Check for displaying right-click dialog
diff --git a/engines/tsage/detection.cpp b/engines/tsage/detection.cpp
index 4ab2142c95..20c2002257 100644
--- a/engines/tsage/detection.cpp
+++ b/engines/tsage/detection.cpp
@@ -88,7 +88,7 @@ public:
}
virtual const char *getName() const {
- return "TsAGE Engine";
+ return "TsAGE";
}
virtual const char *getOriginalCopyright() const {
diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp
index 132225dacb..e889c56c4d 100644
--- a/engines/tsage/events.cpp
+++ b/engines/tsage/events.cpp
@@ -151,8 +151,13 @@ void EventsClass::setCursor(CursorType cursorType) {
switch (cursorType) {
case CURSOR_NONE:
// No cursor
- cursor = _resourceManager->getSubResource(4, 1, 6, &size);
_globals->setFlag(122);
+
+ if (_vm->getFeatures() & GF_DEMO) {
+ CursorMan.showMouse(false);
+ return;
+ }
+ cursor = _resourceManager->getSubResource(4, 1, 6, &size);
break;
case CURSOR_LOOK:
diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp
index 5da00e8522..85dfc5d058 100644
--- a/engines/tsage/graphics.cpp
+++ b/engines/tsage/graphics.cpp
@@ -967,9 +967,10 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) {
// Event loop
GfxButton *selectedButton = NULL;
- while (!_vm->getEventManager()->shouldQuit()) {
+ bool breakFlag = false;
+ while (!_vm->getEventManager()->shouldQuit() && !breakFlag) {
Event event;
- while (_globals->_events.getEvent(event)) {
+ while (_globals->_events.getEvent(event) && !breakFlag) {
// Adjust mouse positions to be relative within the dialog
event.mousePos.x -= _gfxManager._bounds.left;
event.mousePos.y -= _gfxManager._bounds.top;
@@ -978,19 +979,23 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) {
if ((*i)->process(event))
selectedButton = static_cast<GfxButton *>(*i);
}
- }
- if (selectedButton)
- break;
- else if (!event.handled) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
- selectedButton = NULL;
- break;
- } else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) {
- selectedButton = defaultButton;
+ if (selectedButton) {
+ breakFlag = true;
break;
+ } else if (!event.handled) {
+ if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ selectedButton = NULL;
+ breakFlag = true;
+ break;
+ } else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) {
+ selectedButton = defaultButton;
+ breakFlag = true;
+ break;
+ }
}
}
+
g_system->delayMillis(10);
g_system->updateScreen();
}
diff --git a/engines/tsage/ringworld_demo.cpp b/engines/tsage/ringworld_demo.cpp
index 2dacea660a..3ad414fa20 100644
--- a/engines/tsage/ringworld_demo.cpp
+++ b/engines/tsage/ringworld_demo.cpp
@@ -39,6 +39,68 @@ Scene *RingworldDemoGame::createScene(int sceneNumber) {
return new RingworldDemoScene();
}
+void RingworldDemoGame::quitGame() {
+ _globals->_events.setCursor(CURSOR_ARROW);
+ MessageDialog *dlg = new MessageDialog(DEMO_EXIT_MSG, EXIT_BTN_STRING, DEMO_BTN_STRING);
+ dlg->draw();
+
+ GfxButton *selectedButton = dlg->execute(&dlg->_btn2);
+ bool exitFlag = selectedButton != &dlg->_btn2;
+
+ delete dlg;
+ _globals->_events.hideCursor();
+
+ if (exitFlag)
+ _vm->quitGame();
+}
+
+void RingworldDemoGame::pauseGame() {
+ _globals->_events.setCursor(CURSOR_ARROW);
+ MessageDialog *dlg = new MessageDialog(DEMO_PAUSED_MSG, EXIT_BTN_STRING, DEMO_RESUME_BTN_STRING);
+ dlg->draw();
+
+ GfxButton *selectedButton = dlg->execute(&dlg->_btn2);
+ bool exitFlag = selectedButton != &dlg->_btn2;
+
+ delete dlg;
+ _globals->_events.hideCursor();
+
+ if (exitFlag)
+ _vm->quitGame();
+}
+
+void RingworldDemoGame::processEvent(Event &event) {
+ if (event.eventType == EVENT_KEYPRESS) {
+ switch (event.kbd.keycode) {
+ case Common::KEYCODE_F1:
+ // F1 - Help
+ MessageDialog::show(DEMO_HELP_MSG, OK_BTN_STRING);
+ break;
+
+ case Common::KEYCODE_F2: {
+ // F2 - Sound Options
+ ConfigDialog *dlg = new ConfigDialog();
+ dlg->runModal();
+ delete dlg;
+ _globals->_events.setCursorFromFlag();
+ break;
+ }
+
+ case Common::KEYCODE_F3:
+ // F3 - Quit
+ quitGame();
+ event.handled = false;
+ break;
+
+ default:
+ break;
+ }
+ } else if (event.eventType == EVENT_BUTTON_DOWN) {
+ pauseGame();
+ event.handled = true;
+ }
+}
+
/*--------------------------------------------------------------------------
* Ringworld Demo scene
*
diff --git a/engines/tsage/ringworld_demo.h b/engines/tsage/ringworld_demo.h
index 8b69da8f43..7492c1e871 100644
--- a/engines/tsage/ringworld_demo.h
+++ b/engines/tsage/ringworld_demo.h
@@ -32,9 +32,13 @@
namespace tSage {
class RingworldDemoGame: public Game {
+private:
+ void pauseGame();
public:
virtual void start();
virtual Scene *createScene(int sceneNumber);
+ virtual void quitGame();
+ virtual void processEvent(Event &event);
};
class RingworldDemoScene: public Scene {
diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp
index a03c4081da..2141fcce5a 100644
--- a/engines/tsage/ringworld_logic.cpp
+++ b/engines/tsage/ringworld_logic.cpp
@@ -1421,4 +1421,52 @@ void RingworldGame::endGame(int resNum, int lineNum) {
_globals->_events.setCursorFromFlag();
}
+void RingworldGame::processEvent(Event &event) {
+ if (event.eventType == EVENT_KEYPRESS) {
+ switch (event.kbd.keycode) {
+ case Common::KEYCODE_F1:
+ // F1 - Help
+ MessageDialog::show(HELP_MSG, OK_BTN_STRING);
+ break;
+
+ case Common::KEYCODE_F2: {
+ // F2 - Sound Options
+ ConfigDialog *dlg = new ConfigDialog();
+ dlg->runModal();
+ delete dlg;
+ _globals->_events.setCursorFromFlag();
+ break;
+ }
+
+ case Common::KEYCODE_F3:
+ // F3 - Quit
+ quitGame();
+ event.handled = false;
+ break;
+
+ case Common::KEYCODE_F4:
+ // F4 - Restart
+ restartGame();
+ _globals->_events.setCursorFromFlag();
+ break;
+
+ case Common::KEYCODE_F7:
+ // F7 - Restore
+ restoreGame();
+ _globals->_events.setCursorFromFlag();
+ break;
+
+ case Common::KEYCODE_F10:
+ // F10 - Pause
+ GfxDialog::setPalette();
+ MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING);
+ _globals->_events.setCursorFromFlag();
+ break;
+
+ default:
+ break;
+ }
+ }
+}
+
} // End of namespace tSage
diff --git a/engines/tsage/ringworld_logic.h b/engines/tsage/ringworld_logic.h
index 6fa92fa043..19b0f10b42 100644
--- a/engines/tsage/ringworld_logic.h
+++ b/engines/tsage/ringworld_logic.h
@@ -453,6 +453,7 @@ public:
virtual void endGame(int resNum, int lineNum);
virtual Scene *createScene(int sceneNumber);
+ virtual void processEvent(Event &event);
};
} // End of namespace tSage
diff --git a/engines/tsage/ringworld_scenes2.cpp b/engines/tsage/ringworld_scenes2.cpp
index 906f648b9e..4378eac724 100644
--- a/engines/tsage/ringworld_scenes2.cpp
+++ b/engines/tsage/ringworld_scenes2.cpp
@@ -477,13 +477,14 @@ void Scene1001::Action1::signal() {
case 19: {
_globals->_soundHandler.startSound(91);
byte adjustData[4] = {0xff, 0xff, 0xff, 0};
- _globals->_scenePalette.fade(adjustData, true, 0);
+ _globals->_scenePalette.fade(adjustData, false, 0);
scene->_object1._strip = 7;
scene->_object1._frame = 1;
scene->_object1.setPosition(Common::Point(314, 112));
scene->_object1.addMover(NULL);
setDelay(2);
+ break;
}
case 20:
_globals->_scenePalette.loadPalette(16);
diff --git a/engines/tsage/scenes.h b/engines/tsage/scenes.h
index a5aacbacfa..b3c009c4fe 100644
--- a/engines/tsage/scenes.h
+++ b/engines/tsage/scenes.h
@@ -129,6 +129,7 @@ public:
virtual void quitGame() {}
virtual void endGame(int resNum, int lineNum) {}
virtual Scene *createScene(int sceneNumber) = 0;
+ virtual void processEvent(Event &event) {}
};
} // End of namespace tSage
diff --git a/engines/tsage/staticres.cpp b/engines/tsage/staticres.cpp
index 6c2d92497e..9f36268ce3 100644
--- a/engines/tsage/staticres.cpp
+++ b/engines/tsage/staticres.cpp
@@ -112,6 +112,10 @@ const char *SCENE6100_VERY_WELL = "Very well. I will retrieve the stasis box and
Wait for it's return in the lander bay.";
const char *DEMO_HELP_MSG = " Help...\rF2 - Sound Options\rF3 - Exit demo\r\rPress ENTER\rto continue";
-const char *DEMO_PAUSED_MSG = " demo is paused";
+const char *DEMO_PAUSED_MSG = "Ringworld\x14 demo is paused";
+const char *DEMO_EXIT_MSG = "Press ENTER to resume the Ringworld\x14 demo. Press ESC to exit";
+const char *EXIT_BTN_STRING = "Exit";
+const char *DEMO_BTN_STRING = "Demo";
+const char *DEMO_RESUME_BTN_STRING = "Resume";
} // End of namespace tSage
diff --git a/engines/tsage/staticres.h b/engines/tsage/staticres.h
index bed9e0dce0..fa93511779 100644
--- a/engines/tsage/staticres.h
+++ b/engines/tsage/staticres.h
@@ -79,6 +79,12 @@ extern const char *SCENE6100_VERY_WELL;
// Demo messages
extern const char *DEMO_HELP_MSG;
extern const char *DEMO_PAUSED_MSG;
+extern const char *DEMO_HELP_MSG;
+extern const char *DEMO_PAUSED_MSG;
+extern const char *DEMO_EXIT_MSG;
+extern const char *EXIT_BTN_STRING;
+extern const char *DEMO_BTN_STRING;
+extern const char *DEMO_RESUME_BTN_STRING;
} // End of namespace tSage
diff --git a/engines/tucker/detection.cpp b/engines/tucker/detection.cpp
index 89b0b87fbd..9b466d682d 100644
--- a/engines/tucker/detection.cpp
+++ b/engines/tucker/detection.cpp
@@ -143,7 +143,7 @@ public:
}
virtual const char *getName() const {
- return "Tucker Engine";
+ return "Tucker";
}
virtual const char *getOriginalCopyright() const {
diff --git a/gui/credits.h b/gui/credits.h
index 7ad480032e..f8e939061d 100644
--- a/gui/credits.h
+++ b/gui/credits.h
@@ -59,7 +59,7 @@ static const char *credits[] = {
"C0""Ludvig Strigeus",
"C2""(retired)",
"",
-"C1""BASS",
+"C1""Beneath a Steel Sky",
"C0""Robert G\366ffringmann",
"C2""(retired)",
"C0""Oliver Kiehl",
@@ -101,7 +101,7 @@ static const char *credits[] = {
"C0""Vincent Hamm",
"C2""(retired)",
"",
-"C1""Draci",
+"C1""Draci Historie",
"C0""Denis Kasak",
"C0""Robert Spalek",
"",
@@ -109,7 +109,7 @@ static const char *credits[] = {
"C0""Filippos Karapetis",
"C0""Pawel Kolodziejski",
"",
-"C1""FOTAQ",
+"C1""Flight of the Amazon Queen",
"C0""David Eriksson",
"C2""(retired)",
"C0""Gregory Montoir",
@@ -131,7 +131,7 @@ static const char *credits[] = {
"C0""Oystein Eftevaag",
"C0""Eugene Sandulenko",
"",
-"C1""Kyra",
+"C1""Legend of Kyrandia",
"C0""Torbj\366rn Andersson",
"C2""VQA Player",
"C0""Oystein Eftevaag",
@@ -144,7 +144,7 @@ static const char *credits[] = {
"C0""Jordi Vilalta Prat",
"C0""Julien Templier",
"",
-"C1""Lure",
+"C1""Lure of the Temptress",
"C0""Paul Gilbert",
"",
"C1""M4",
@@ -185,7 +185,7 @@ static const char *credits[] = {
"C0""Jordi Vilalta Prat",
"C0""Lars Skovlund",
"",
-"C1""TeenAgent",
+"C1""Teen Agent",
"C0""Robert Megone",
"C2""Help with callback rewriting",
"C0""Vladimir Menshakov",
diff --git a/gui/options.cpp b/gui/options.cpp
index d3501390db..e42d6c62ee 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -305,8 +305,14 @@ void OptionsDialog::close() {
if (getResult()) {
// Graphic options
+ bool graphicsModeChanged = false;
if (_fullscreenCheckbox) {
if (_enableGraphicSettings) {
+ if (ConfMan.getBool("fullscreen", _domain) != _fullscreenCheckbox->getState())
+ graphicsModeChanged = true;
+ if (ConfMan.getBool("aspect_ratio", _domain) != _aspectCheckbox->getState())
+ graphicsModeChanged = true;
+
ConfMan.setBool("fullscreen", _fullscreenCheckbox->getState(), _domain);
ConfMan.setBool("aspect_ratio", _aspectCheckbox->getState(), _domain);
ConfMan.setBool("disable_dithering", _disableDitheringCheckbox->getState(), _domain);
@@ -318,6 +324,8 @@ void OptionsDialog::close() {
while (gm->name) {
if (gm->id == (int)_gfxPopUp->getSelectedTag()) {
+ if (ConfMan.get("gfx_mode", _domain) != gm->name)
+ graphicsModeChanged = true;
ConfMan.set("gfx_mode", gm->name, _domain);
isSet = true;
break;
@@ -338,6 +346,48 @@ void OptionsDialog::close() {
ConfMan.removeKey("render_mode", _domain);
}
}
+
+ // Setup graphics again if needed
+ if (_domain == Common::ConfigManager::kApplicationDomain && graphicsModeChanged) {
+ g_system->beginGFXTransaction();
+ g_system->setGraphicsMode(ConfMan.get("gfx_mode", _domain).c_str());
+
+ if (ConfMan.hasKey("aspect_ratio"))
+ g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, ConfMan.getBool("aspect_ratio", _domain));
+ if (ConfMan.hasKey("fullscreen"))
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, ConfMan.getBool("fullscreen", _domain));
+ OSystem::TransactionError gfxError = g_system->endGFXTransaction();
+ if (gfxError != OSystem::kTransactionSuccess) {
+ // Revert ConfMan to what OSystem is using.
+ Common::String message = "Failed to apply some of the graphic options changes:";
+
+ if (gfxError & OSystem::kTransactionModeSwitchFailed) {
+ const OSystem::GraphicsMode *gm = g_system->getSupportedGraphicsModes();
+ while (gm->name) {
+ if (gm->id == g_system->getGraphicsMode()) {
+ ConfMan.set("gfx_mode", gm->name, _domain);
+ break;
+ }
+ gm++;
+ }
+ message += "\nthe video mode could not be changed.";
+ }
+
+ if (gfxError & OSystem::kTransactionAspectRatioFailed) {
+ ConfMan.setBool("aspect_ratio", g_system->getFeatureState(OSystem::kFeatureAspectRatioCorrection), _domain);
+ message += "\nthe fullscreen setting could not be changed";
+ }
+
+ if (gfxError & OSystem::kTransactionFullscreenFailed) {
+ ConfMan.setBool("fullscreen", g_system->getFeatureState(OSystem::kFeatureFullscreenMode), _domain);
+ message += "\nthe aspect ratio setting could not be changed";
+ }
+
+ // And display the error
+ GUI::MessageDialog dialog(message);
+ dialog.runModal();
+ }
+ }
// Volume options
if (_musicVolumeSlider) {
diff --git a/test/common/array.h b/test/common/array.h
index f17edd3984..c10270436f 100644
--- a/test/common/array.h
+++ b/test/common/array.h
@@ -107,6 +107,34 @@ class ArrayTestSuite : public CxxTest::TestSuite
}
+ void test_self_insert() {
+ Common::Array<int> array;
+ int i;
+
+ // Insert some data -- and make sure we have enough space for
+ // *twice* as much data. This way, there is no need to allocate
+ // new storage, so if the insert() operation is "clever", it
+ // will try to reuse the existing storage.
+ // This in turn may uncover bugs if the insertion code does not
+ // expect self-insertions.
+ array.reserve(128);
+ for (i = 0; i < 64; ++i)
+ array.push_back(i);
+
+ // Now insert the array into the middle of itself
+ array.insert_at(12, array);
+
+ // Verify integrity
+ TS_ASSERT_EQUALS(array.size(), 128UL);
+
+ for (i = 0; i < 12; ++i)
+ TS_ASSERT_EQUALS(array[i], i);
+ for (i = 0; i < 64; ++i)
+ TS_ASSERT_EQUALS(array[i+12], i);
+ for (i = 12; i < 64; ++i)
+ TS_ASSERT_EQUALS(array[i+64], i);
+ }
+
void test_remove_at() {
Common::Array<int> array;
diff --git a/test/module.mk b/test/module.mk
index 3542ae2903..4e5cbf62e1 100644
--- a/test/module.mk
+++ b/test/module.mk
@@ -9,7 +9,7 @@ TESTS := $(srcdir)/test/common/*.h $(srcdir)/test/audio/*.h
TEST_LIBS := audio/libaudio.a common/libcommon.a
#
-TEST_FLAGS := --runner=StdioPrinter
+TEST_FLAGS := --runner=StdioPrinter --no-std --no-eh
TEST_CFLAGS := -I$(srcdir)/test/cxxtest
TEST_LDFLAGS := $(LIBS)
TEST_CXXFLAGS := $(filter-out -Wglobal-constructors,$(CXXFLAGS))