aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLe Philousophe2019-06-23 13:18:05 +0200
committerLe Philousophe2019-07-05 07:52:00 +0200
commitd46988491d49f4fdfeb4662a9e5be245afac9008 (patch)
tree997773ec71a1a7b98a3f5398644332605713ca44
parent95d1f30bd7f4dc5394f0e718c791b21bc431fc65 (diff)
downloadscummvm-rg350-d46988491d49f4fdfeb4662a9e5be245afac9008.tar.gz
scummvm-rg350-d46988491d49f4fdfeb4662a9e5be245afac9008.tar.bz2
scummvm-rg350-d46988491d49f4fdfeb4662a9e5be245afac9008.zip
CRYOMNI3D: Add German version of Versailles
-rw-r--r--devtools/create_cryomni3d/create_cryomni3d_dat.cpp2
-rw-r--r--devtools/create_cryomni3d/create_cryomni3d_dat.h1
-rw-r--r--devtools/create_cryomni3d/versailles.cpp1
-rw-r--r--devtools/create_cryomni3d/versailles.h230
-rw-r--r--dists/engine-data/cryomni3d.datbin17184 -> 23152 bytes
-rw-r--r--engines/cryomni3d/datstream.cpp2
-rw-r--r--engines/cryomni3d/detection_tables.h17
-rw-r--r--engines/cryomni3d/versailles/engine.cpp18
8 files changed, 271 insertions, 0 deletions
diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
index 484634ec75..741d76fa74 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
@@ -50,11 +50,13 @@ struct Parts {
write ## game ## _ ## platform ## _ ## lang ## Data, 0, 0 }
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, FR)
+DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, DE)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, EN)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, IT)
static Parts gamesParts[] = {
GAME_PLATFORM_LANG_PART(Versailles, ALL, FR),
+ GAME_PLATFORM_LANG_PART(Versailles, ALL, DE),
GAME_PLATFORM_LANG_PART(Versailles, ALL, EN),
GAME_PLATFORM_LANG_PART(Versailles, ALL, IT),
};
diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.h b/devtools/create_cryomni3d/create_cryomni3d_dat.h
index e58e1287fb..8f8aeb8b58 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_DE MKTAG16('d', 'e')
#define LANG_EN MKTAG16('e', 'n')
#define LANG_FR MKTAG16('f', 'r')
#define LANG_IT MKTAG16('i', 't')
diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp
index 1ef3db0fcf..46d276d05a 100644
--- a/devtools/create_cryomni3d/versailles.cpp
+++ b/devtools/create_cryomni3d/versailles.cpp
@@ -58,5 +58,6 @@
}
DEFINE_FUNCS(FR)
+DEFINE_FUNCS(DE)
DEFINE_FUNCS(EN)
DEFINE_FUNCS(IT)
diff --git a/devtools/create_cryomni3d/versailles.h b/devtools/create_cryomni3d/versailles.h
index b7f6407ea0..8dc58fdfdc 100644
--- a/devtools/create_cryomni3d/versailles.h
+++ b/devtools/create_cryomni3d/versailles.h
@@ -36,6 +36,13 @@ static char const *const versaillesFRlocalizedFilenames[] = {
"credits.txt",
"LEB001__.WAV",
};
+static char const *const versaillesDElocalizedFilenames[] = {
+ "DIALOG1.ALM",
+ "tous_doc.ALM",
+ "lien_doc.alm",
+ "credits.ALM",
+ "LEB1_ALM.WAV",
+};
static char const *const versaillesENlocalizedFilenames[] = {
"DIALOG1.GB",
"tous_doc.gb",
@@ -53,12 +60,16 @@ static char const *const versaillesITlocalizedFilenames[] = {
static char const versaillesFREpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
static char const versaillesFREpilPwd[] = "LELOUPETLATETE";
+static char const versaillesDEEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
+static char const versaillesDEEpilPwd[] = "DIEENTENUNDDERPUDEL";
static char const versaillesENEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
static char const versaillesENEpilPwd[] = "FOXANDCRANE";
static char const versaillesITEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
static char const versaillesITEpilPwd[] = "LEANATREEILCANE";
static char const versaillesFRBombPwd[] = "JEMENVAISMAISLETATDEMEURERATOUJOURS";
+static char const versaillesDEBombPwd[] =
+ "MONARCHEN IST ES NICHT GEGEBEN VOLLKOMMENHEIT ZU ERREICHEN";
static char const versaillesENBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
static char const versaillesITBombPwd[] = "AI SOVRANI NON E DATO RAGGIUNGERE LA PERFEZIONE";
@@ -284,6 +295,225 @@ static char const *const versaillesFRpaintings[] = {
"\"La descente de Croix \"\rCharles Lebrun", /* 47: 45260 */
};
+static char const *const versaillesDEmessages[] = {
+ "Das " "\x85" "ffnen dieser T" "\x9f" "r ist zur Zeit nicht "
+ "gestattet.", /* 0 */
+ "Diese T" "\x9f" "r ist verschlossen.", /* 1 */
+ "Diese T" "\x9f" "r ist zu.", /* 2 */
+ "Diese Schublade ist leer.", /* 3 */
+ "Sie k" "\x9a" "nnen die Plane nicht erreichen.", /* 4 */
+ "In diesem Orangenbaum ist nichts zu finden.", /* 5 */
+ "Dies hier ist kein Orangenbaum.", /* 6 */
+ "Es ist zu dunkel.", /* 7 */
+ "Die Kiste ist verschlossen.", /* 8 */
+ "Sie k" "\x9a" "nnen diese T" "\x9f" "r " "\x9a" "ffnen.", /* 9 */
+ "Sie ben" "\x9a" "tigen etwas, um die Bombe zu erreichen.", /* 10 */
+ "Diese Vase ist leer.", /* 11 */
+ "Jetzt k" "\x9a" "nnen Sie gehen.", /* 12 */
+ "Sie haben keine Zeit mehr, sich " "\x9f" "ber den Hof zu "
+ "informieren!", /* 13 */
+ "Es ist zu sp" "\x8a" "t, um sich die Bilder anzusehen.", /* 14 */
+ "Warten Sie! Geben Sie Ihre Hinweise doch an den Diener weiter.", /* 15 */
+ "Sie k" "\x9a" "nnen das Papier nicht erreichen.", /* 16 */
+ "Zur Apotheke", /* 17 */
+ "Vorsicht! Sie k" "\x9a" "nnen dieses Level beenden, aber Sie "
+ "haben noch nicht alle notwendigen Informationen, um "
+ "weiterzukommen. Es empfiehlt sich, Ihr Spiel jetzt zu SPEICHERN.", /* 18 */
+ "Vorsicht! Sie k" "\x9a" "nnen dieses Level beenden, aber Sie "
+ "haben vielleicht noch nicht alle notwendigen Informationen, um "
+ "weiterzukommen. Es empfiehlt sich, Ihr Spiel jetzt zu SPEICHERN.", /* 19 */
+ "Sie k" "\x9a" "nnen sich nicht von der Stelle bewegen, wenn Sie "
+ "eine Leiter tragen!", /* 20 */
+ "Hier ist nichts mehr zu tun.", /* 21 */
+ "Auf Wiedersehen...", /* 22 */
+ "VERSAILLES,", /* 23 */
+ "Verschw" "\x9a" "rung am Hof", /* 24 */
+ "Die Enzyklop" "\x8a" "die", /* 25 */
+ " Spiel wieder aufnehmen", /* 26 */
+ " Spiel starten", /* 27 */
+ " Spiel laden", /* 28 */
+ " Spiel speichern", /* 29 */
+ " Anzeige der Untertitel: JA", /* 30 */
+ " Anzeige der Untertitel: NEIN", /* 31 */
+ " Musik: JA", /* 32 */
+ " Musik: NEIN", /* 33 */
+ " ein Musikst" "\x9f" "ck auf Festplatte kopieren (20 "
+ "MB)", /* 34 */
+ " komplette Musik auf Festplatte kopieren (92 MB)", /* 35 */
+ " Musik von CD-ROM spielen", /* 36 */
+ nullptr, /* 37 */
+ nullptr, /* 38 */
+ "Lautst" "\x8a" "rke", /* 39 */
+ "Programm beenden", /* 40 */
+ "", /* 41 */
+ "Der Rundgang", /* 42 */
+ "Credits", /* 43 */
+ " Besichtigung wieder aufnehmen", /* 44 */
+ " Rundgang speichern", /* 45 */
+ " Rundgang laden", /* 46 */
+ nullptr, /* 47 */
+ " Omni3D: normal", /* 48 */
+ " Omni3D: langsam", /* 49 */
+ " Omni3D: sehr langsam", /* 50 */
+ " Omni3D: schnell", /* 51 */
+ " Omni3D: sehr schnell", /* 52 */
+ "Best" "\x8a" "tigen", /* 53 */
+ "Abbrechen", /* 54 */
+ "Frei", /* 55 */
+ "Ohne Namen", /* 56 */
+ "Vorsicht! Das begonnene Spiel wird beendet.", /* 57 */
+ "Zur" "\x9f" "ck", /* 58 */
+ "Das Schloss", /* 59 */
+ "Zur" "\x9f" "ck zum Hauptmen" "\x9f", /* 60 */
+ "Gesamt" "\x9f" "bersicht Enzyklop" "\x8a" "die", /* 61 */
+ "Pl" "\x8a" "ne von Schloss und G" "\x8a" "rten", /* 62 */
+ "Pl" "\x8a" "ne der Innenr" "\x8a" "ume des Schlosses", /* 63 */
+ "Problem beim Schreiben auf Festplatte: Nicht genug Speicherplatz", /* 64 */
+ nullptr, /* 65 */
+ "Legen Sie die CD-ROM %d ein", /* 66 */
+ "Legen Sie die CD-ROM %d und dr" "\x9f" "cken Sie eine Taste", /* 67 */
+ "Die K" "\x9f" "nste", /* 68 */
+ "Die Regierung", /* 69 */
+ "Der Hof", /* 70 */
+ "Leben bei Hofe", /* 71 */
+ "Das Schloss und die G" "\x8a" "rten", /* 72 */
+ "Chronologie", /* 73 */
+ "Apollobecken", /* 74 */
+ "Das Schloss", /* 75 */
+ "S" "\x8a" "ulengang", /* 76 */
+ "Labyrinth", /* 77 */
+ "Latone", /* 78 */
+ "Orangerie", /* 79 */
+ "Wasserterrasse", /* 80 */
+ "Gr" "\x9f" "ner Teppich", /* 81 */
+ "Gro" "\xa7" "e Reitst" "\x8a" "lle", /* 82 */
+ "Kleine Reitst" "\x8a" "lle", /* 83 */
+ "Die G" "\x8a" "rten", /* 84 */
+ "Vorhof", /* 85 */
+ "Gro" "\xa7" "er Kanal", /* 86 */
+ "S" "\x9f" "dterrasse", /* 87 */
+ "Nordterrasse", /* 88 */
+ "K" "\x9a" "niglicher Gem" "\x9f" "segarten", /* 89 */
+ "Ballsaal", /* 90 */
+ "Neptunbecken", /* 91 */
+ "Wasserraum der Schweizer", /* 92 */
+ "Nadeln (Unn" "\x9a" "tig!)", /* 93 */
+ "Schere", /* 94 */
+ "Papier", /* 95 */
+ "Schm" "\x8a" "hschrift " "\x9f" "ber die K" "\x9f" "nste", /* 96 */
+ "Kleiner Schl" "\x9f" "ssel 1", /* 97 */
+ "Aufgedecktes Papier", /* 98 */
+ "Beflecktes Papier", /* 99 */
+ "Papier aus der Kiste", /* 100 */
+ "Schm" "\x8a" "hschrift " "\x9f" "ber die k" "\x9a" "nigliche "
+ "Ahnenreihe", /* 101 */
+ "Brennende Kerze", /* 102 */
+ "Kerze", /* 103 */
+ "Schl" "\x9f" "ssel", /* 104 */
+ "Zeichenkarton", /* 105 */
+ "Zeichenkarton", /* 106 */
+ "Falsche Skizze", /* 107 */
+ "Leiter", /* 108 */
+ "Zerst" "\x9a" "rte Skizze", /* 109 */
+ "Pinsel", /* 110 */
+ "Goldpinsel", /* 111 */
+ "Rotpinsel", /* 112 */
+ "Zeichenkohle", /* 113 */
+ "Papier", /* 114 */
+ "Schm" "\x8a" "hschrift " "\x9f" "ber die Architektur", /* 115 */
+ "Kleiner Schl" "\x9f" "ssel 2", /* 116 */
+ "Bogensch" "\x9f" "tze (unn" "\x9a" "tig!)", /* 117 */
+ "Partitur", /* 118 */
+ "Billardstock", /* 119 */
+ "Genehmigung", /* 120 */
+ "Reproduktion der Medaillen", /* 121 */
+ "Medaillen-Schublade", /* 122 */
+ "Schl" "\x9f" "ssel zur kleinen Apollo-T" "\x9f" "r", /* 123 */
+ "Nahrungsmittel", /* 124 */
+ "Schm" "\x8a" "hschrift " "\x9f" "ber die Religion", /* 125 */
+ "Inschrift", /* 126 */
+ "Schm" "\x8a" "hschrift " "\x9f" "ber die Regierung", /* 127 */
+ "Feder", /* 128 */
+ "Merkzeichen", /* 129 */
+ "Fernrohr", /* 130 */
+ "Vaubanplan", /* 131 */
+ "Plan Vauban", /* 132 */
+ "Schnur", /* 133 */
+ "Schnitt", /* 134 */
+ "Kleiner Schl" "\x9f" "ssel 3", /* 135 */
+ "Kleiner Schl" "\x9f" "ssel 4", /* 136 */
+ "Memorandum", /* 137 */
+ "Schlosspl" "\x8a" "ne", /* 138 */
+ "Schlosspl" "\x8a" "ne", /* 139 */
+ "Schl" "\x9f" "ssel zum Dachstuhl", /* 140 */
+ "Fabeln", /* 141 */
+ "Plan zum Labyrinth", /* 142 */
+ "Werkzeug", /* 143 */
+ "Medikament", /* 144 */
+ "Trichter", /* 145 */
+};
+
+static char const *const versaillesDEpaintings[] = {
+ "\"Einzug der Tiere in die Arche\"\rGerolamo Bassano", /* 0: 41201 */
+ "\"Das Mahl von Emmaus\"\rJacopo Bassano", /* 1: 41202 */
+ "\"Magdalena zu F" "\x9f\xa7" "en Jesu Christi\"\rSustris", /* 2: 41203 */
+ "\"Auszug aus der Arche\"\rGerolamo Bassano", /* 3: 41204 */
+ "\"Schlag gegen den Felsen\"\rJacopo Bassano", /* 4: 41205 */
+ "\"Die Schlacht von Arbil\"\rJoseph Parrocel", /* 5: 41301 */
+ "\"Alexander der Gro" "\xa7" "e als Sieger " "\x9f" "ber Darius in "
+ "der Schlacht von Arbil\"\rLe Bourguignon", /* 6: 41302 */
+ "\"Der Kampf des Leukippos\"\rJoseph Parrocel", /* 7: 42401 */
+ "\"Die heilige C" "\x8a" "cilia mit einem Engel, der ein "
+ "Notenblatt h" "\x8a" "lt\"\rDominiquin", /* 8: 42901 */
+ "\"Don Francisco du Moncada\"\rVan Dyck", /* 9: 42902 */
+ "\"Der kleine Johannes der T" "\x8a" "ufer\"\rLe Carrache", /* 10: 42903 */
+ "\"Der heilige Matth" "\x8a" "us\"\rValentin", /* 11: 42904 */
+ "\"Der Denar des C" "\x8a" "sar\"\rValentin", /* 12: 42905 */
+ "\"Der heilige Lukas\"\rValentin", /* 13: 42906 */
+ "\"Die geheimnisvolle Hochzeit der heiligen "
+ "Katharina\"\rAlessandro Turchi", /* 14: 42907 */
+ "\"Zusammenkunft der Trinker\"\rNicolas Tournier", /* 15: 42908 */
+ "\"Die Wahrsagerin\"\rValentin", /* 16: 42909 */
+ "\"Der K" "\x9a" "nig David beim Harfenspiel\"\rDominiquin", /* 17: 42910 */
+ "\"Die heilige Magdalena\"\rDominiquin", /* 18: 42911 */
+ "\"Selbstportr" "\x8a" "t\"\rVan Dyck", /* 19: 42912 */
+ "\"Der heilige Johannes Evangelist\"\rValentin", /* 20: 42913 */
+ "\"Agar, dem ein Engel Beistand leistet\"\rGiovanni Lanfranco", /* 21: 42914 */
+ "\"Der heilige Markus\"\rValentin", /* 22: 42915 */
+ "\"Meleagros mit dem kalydonischen Eberkopf zu seinen F" "\x9f"
+ "\xa7" "en\"\rJacques Rousseau", /* 23: 43090 */
+ "\"Der K" "\x9a" "nig in r" "\x9a" "mischem Gewand\"\rJean Warin", /* 24: 43091 */ /* BUG: Switched */
+ "\"Attalante\"\rJacques Rousseau", /* 25: 43092 */
+ "\"\x80" "neas tr" "\x8a" "gt Anchises\"\rSpada", /* 26: 43100 */
+ "\"David und Bethsabee\"\rV" "\x8e" "ron" "\x8f" "se", /* 27: 43101 */
+ "\"Die Flucht nach " "\x80" "gypten\"\rGuido R" "\x8e" "ni", /* 28: 43102 */
+ "\"Ludwig XIV. zu Pferd\"\rPierre Mignard", /* 29: 43103 */
+ "\"Die k" "\x9a" "nigliche Pracht und der Fortschritt der sch"
+ "\x9a" "nen K" "\x9f" "nste\"\rHouasse", /* 30: 43104 */
+ "\"Das Opfer der Iphigenie\"\rCharles de la fosse", /* 31: 43130 */
+ "\"B" "\x9f" "ste Ludwigs XIV.\"\rSkulptur von Bernini", /* 32: 43131 */
+ "\"Diana entdeckt ihren Hirten Endymion, der in Morpheus' Armen "
+ "eingeschlafen ist\"\rGabriel Blanchard", /* 33: 43132 */
+ "\"Die Jungfrau und der heilige Petrus\"\rGuerchin", /* 34: 43140 */
+ "\"Die Emmaus-Pilger\"\rV" "\x8e" "ron" "\x8f" "se", /* 35: 43141 */
+ "\"Die heilige Familie\"\rV" "\x8e" "ron" "\x8f" "se", /* 36: 43142 */
+ "\"Die Familie des Darius zu F" "\x9f\xa7" "en "
+ "Alexanders\"\rCharles Le Brun", /* 37: 43143 */
+ "\"Der heilige Johannes der T" "\x8a" "ufer\"\rRapha" "\x91" "l", /* 38: 43144 */
+ "\"Maria von Medici\"\rVan Dyck", /* 39: 43150 */
+ "\"Herkules k" "\x8a" "mpft gegen Acheloos\"\rGuido R" "\x8e" "ni", /* 40: 43151 */
+ "\"Der Zentaur Nessus tr" "\x8a" "gt Deianeira\"\rGuido R" "\x8e"
+ "ni", /* 41: 43152 */
+ "\"Der heilige Franz von Assisi, nach seiner Stigmatisierung gest"
+ "\x8a" "rkt\"\rSeghers", /* 42: 43153 */
+ "\"Thomiris taucht den Kopf des Cyrus in Blut\"\rRubens", /* 43: 43154 */
+ "\"Herkules t" "\x9a" "tet Hydra\"\rGuido R" "\x8e" "ni", /* 44: 43155 */
+ "\"Herkules auf dem Scheiterhaufen\"\rGuido R" "\x8e" "ni", /* 45: 43156 */
+ "\"Portr" "\x8a" "t des pf" "\x8a" "lzischen Prinzen und seines "
+ "Bruders, Prinz Robert\"\rVan Dyck", /* 46: 43157 */
+ "\"Die Kreuzabnahme\"\rCharles Le Brun", /* 47: 45260 */
+};
+
static char const *const versaillesENmessages[] = {
"For the moment it is forbidden to open this door.", /* 0 */
"This door is locked.", /* 1 */
diff --git a/dists/engine-data/cryomni3d.dat b/dists/engine-data/cryomni3d.dat
index fdcb8fbab2..02bc9e413e 100644
--- a/dists/engine-data/cryomni3d.dat
+++ b/dists/engine-data/cryomni3d.dat
Binary files differ
diff --git a/engines/cryomni3d/datstream.cpp b/engines/cryomni3d/datstream.cpp
index b8af3271f8..f679467ca8 100644
--- a/engines/cryomni3d/datstream.cpp
+++ b/engines/cryomni3d/datstream.cpp
@@ -117,6 +117,8 @@ void DATSeekableStream::readString16Array16(Common::StringArray &array) {
uint16 DATSeekableStream::translateLanguage(Common::Language lang) {
switch (lang) {
+ case Common::DE_DEU:
+ return MKTAG16('d', 'e');
case Common::EN_ANY:
return MKTAG16('e', 'n');
case Common::FR_FRA:
diff --git a/engines/cryomni3d/detection_tables.h b/engines/cryomni3d/detection_tables.h
index 0ece04dd81..5f824f16a7 100644
--- a/engines/cryomni3d/detection_tables.h
+++ b/engines/cryomni3d/detection_tables.h
@@ -161,6 +161,23 @@ static const CryOmni3DGameDescription gameDescriptions[] = {
GF_VERSAILLES_AUDIOPADDING,
},
+ // Versailles 1685
+ // German Macintosh
+ // From lePhilousophe
+ {
+ {
+ "versailles",
+ "",
+ AD_ENTRY1s("Versailles", "f1aa0603e7f71404f936e4189b4c5b2b", 348614),
+ Common::DE_DEU,
+ Common::kPlatformMacintosh,
+ ADGF_UNSTABLE,
+ GUI_OPTIONS_VERSAILLES
+ },
+ GType_VERSAILLES,
+ GF_VERSAILLES_AUDIOPADDING,
+ },
+
{ AD_TABLE_END_MARKER, 0, 0 }
};
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index 7fba90102c..6f0a0e3ee8 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -635,6 +635,24 @@ void CryOmni3DEngine_Versailles::playTransitionEndLevel(int level) {
// In original game the HNM player just doesn't render the cursor
bool cursorWasVisible = showMouse(false);
+ if (level == -2) {
+ if (getLanguage() == Common::DE_DEU) {
+ // Display one more copyright
+ if (displayHLZ("RAVENSBG", 5000)) {
+ clearKeys();
+ fadeOutPalette();
+ if (shouldAbort()) {
+ return;
+ }
+ // Display back cursor there once the palette has been zeroed
+ showMouse(cursorWasVisible);
+
+ fillSurface(0);
+ return;
+ }
+ }
+ }
+
// Videos are like music because if you mute music in game it will mute videos soundtracks
playHNM(video, Audio::Mixer::kMusicSoundType);