[Scummvm-git-logs] scummvm master -> c89feeb64441735a9cf35bcc3eaed6c733908116

lephilousophe lephilousophe at users.noreply.github.com
Sat Mar 14 11:28:43 UTC 2020


This automated email contains information about 14 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
11cbfb1c9a CRYOMNI3D: Fix functions name in create_cryomni3d
09f2bcf7e8 CRYOMNI3D: Revamp text handling and fonts
90d1c764c3 CRYOMNI3D: Add clipping support for videos
dad1b4d135 CRYOMNI3D: Add subtitles support for CJK
baad1c7c86 CRYOMNI3D: Add support for subtitles in create_cryomni3d
168522beea CRYOMNI3D: Add support for automatically named saves
bf215580dd CRYOMNI3D: Prepare CJK support for Versailles
658c4dfa37 CRYOMNI3D: Handle translations for riddles and bomb
128f1978bc CRYOMNI3D: Add support for Chinese version of Versailles
b40d3ca55f CRYOMNI3D: Add TTF list support
cb4c1a72ba CRYOMNI3D: Add Korean version of Versailles
39f6d8e7ed CRYOMNI3D: Add Japanese version of Versailles
a05676d2c3 CRYOMNI3D: Fix documentation for CJK
c89feeb644 CRYOMNI3D: Abort even in yes/no message box and file picker


Commit: 11cbfb1c9afbed1160d5a2573d31efd98031d7a4
    https://github.com/scummvm/scummvm/commit/11cbfb1c9afbed1160d5a2573d31efd98031d7a4
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Fix functions name in create_cryomni3d

Changed paths:
    devtools/create_cryomni3d/create_cryomni3d_dat.cpp
    devtools/create_cryomni3d/versailles.cpp


diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
index 96724a379c..acbec44ab9 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
@@ -43,11 +43,11 @@ struct Parts {
 };
 
 #define DEFINE_GAME_PLATFORM_LANG_FUNCS(game, platform, lang) \
-    size_t write ## game ## _ ## platform ## _ ## lang ## Header(FILE *f, \
+    size_t write ## game ## _ ## platform ## _ ## lang ## _Header(FILE *f, \
                                    uint32 offset, uint32 size); \
-    size_t write ## game ## _ ## platform ## _ ## lang ## Data(FILE *f);
-#define GAME_PLATFORM_LANG_PART(game, platform, lang) { write ## game ## _ ## platform ## _ ## lang ## Header, \
-    write ## game ## _ ## platform ## _ ## lang ## Data, 0, 0 }
+    size_t write ## game ## _ ## platform ## _ ## lang ## _Data(FILE *f);
+#define GAME_PLATFORM_LANG_PART(game, platform, lang) { write ## game ## _ ## platform ## _ ## lang ## _Header, \
+    write ## game ## _ ## platform ## _ ## lang ## _Data, 0, 0 }
 
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, FR)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, BR)
diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp
index 5aed6cb65c..68f810a5bd 100644
--- a/devtools/create_cryomni3d/versailles.cpp
+++ b/devtools/create_cryomni3d/versailles.cpp
@@ -30,12 +30,12 @@
 
 // In Versailles platform doesn't seem to change anything
 #define DEFINE_FUNCS(lang) \
-    size_t writeVersailles_ALL_ ## lang ## Header(FILE *f, uint32 offset, uint32 size) { \
+    size_t writeVersailles_ALL_ ## lang ## _Header(FILE *f, uint32 offset, uint32 size) { \
         return writeGameHeader(f, VERSAILLES_GAMEID, VERSAILLES_VERSION, LANG_ ## lang, PLATFORM_ALL, \
                                offset, size); \
     } \
     \
-    size_t writeVersailles_ALL_ ## lang ## Data(FILE *f) { \
+    size_t writeVersailles_ALL_ ## lang ## _Data(FILE *f) { \
         size_t size = 0; \
         \
         assert(VERSAILLES_LOCALIZED_FILENAMES_COUNT == ARRAYSIZE(versailles ## lang ## localizedFilenames)); \


Commit: 09f2bcf7e87afb7da4c25e7e7a2120b6b6da3a4f
    https://github.com/scummvm/scummvm/commit/09f2bcf7e87afb7da4c25e7e7a2120b6b6da3a4f
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Revamp text handling and fonts

Add support to extended Cryo fonts used by Chinese version of
Versailles and melt in existing Graphics::Font interface.

Changed paths:
  A engines/cryomni3d/fonts/cryoextfont.cpp
  A engines/cryomni3d/fonts/cryoextfont.h
  A engines/cryomni3d/fonts/cryofont.cpp
  A engines/cryomni3d/fonts/cryofont.h
    engines/cryomni3d/font_manager.cpp
    engines/cryomni3d/font_manager.h
    engines/cryomni3d/module.mk
    engines/cryomni3d/versailles/documentation.cpp
    engines/cryomni3d/versailles/engine.cpp


diff --git a/engines/cryomni3d/font_manager.cpp b/engines/cryomni3d/font_manager.cpp
index b882b5106b..93178d345c 100644
--- a/engines/cryomni3d/font_manager.cpp
+++ b/engines/cryomni3d/font_manager.cpp
@@ -22,72 +22,105 @@
 
 #include "common/debug.h"
 #include "common/file.h"
+#include "common/hash-ptr.h"
+#include "common/hash-str.h"
 #include "graphics/managed_surface.h"
 
 #include "cryomni3d/font_manager.h"
+#include "cryomni3d/fonts/cryoextfont.h"
+#include "cryomni3d/fonts/cryofont.h"
 
 namespace CryOmni3D {
 
 FontManager::FontManager() : _currentFont(nullptr), _transparentBackground(false),
-	_spaceWidth(0), _charSpacing(0), _lineHeight(30), _foreColor(0), _blockTextRemaining(nullptr) {
+	_spaceWidth(0), _charSpacing(0), _lineHeight(30), _foreColor(0), _blockTextRemaining(nullptr),
+	_useSpaceDelimiter(true), _keepASCIIjoined(true), _codepage(Common::kCodePageInvalid),
+	_toUnicode(false) {
 }
 
 FontManager::~FontManager() {
-	for (Common::Array<Font *>::iterator it = _fonts.begin(); it != _fonts.end(); it++) {
+	Common::HashMap<Graphics::Font *, bool> deletedFonts;
+	for (Common::Array<Graphics::Font *>::iterator it = _fonts.begin(); it != _fonts.end(); it++) {
+		if (deletedFonts.find(*it) != deletedFonts.end()) {
+			// Already deleted
+			continue;
+		}
+
+		deletedFonts[*it] = true;
 		delete *it;
 	}
 }
 
-void FontManager::loadFonts(const Common::Array<Common::String> &fontFiles) {
-	_fonts.reserve(_fonts.size() + fontFiles.size());
+void FontManager::loadFonts(const Common::Array<Common::String> &fontFiles,
+                            Common::CodePage codepage) {
+	assert(codepage != Common::kCodePageInvalid);
+	_codepage = codepage;
+	setupWrapParameters();
+
+	// Cryo fonts are never in Unicode
+	_toUnicode = false;
+
+	_fonts.clear();
+	_fonts.reserve(fontFiles.size());
+
+	Common::HashMap<Common::String, Graphics::Font *> fontsCache;
 
 	for (Common::Array<Common::String>::const_iterator it = fontFiles.begin(); it != fontFiles.end();
 	        it++) {
-		Common::File font_fl;
-		//debug("Open font file %s", it->c_str());
-		if (!font_fl.open(*it)) {
-			error("Can't open file %s", it->c_str());
+		Graphics::Font *fontEntry = fontsCache.getVal(*it, nullptr);
+		if (fontEntry) {
+			_fonts.push_back(fontEntry);
+			continue;
 		}
-		loadFont(font_fl);
-	}
-}
 
-void FontManager::loadFont(Common::ReadStream &font_fl) {
-	byte magic[8];
+		// New font
 
-	font_fl.read(magic, sizeof(magic));
-	if (memcmp(magic, "CRYOFONT", 8)) {
-		error("Invalid font magic");
+		// For now only support CP950 in extended cryo font
+		if (_codepage == Common::kWindows950) {
+			CryoExtFont *font = new CryoExtFont();
+			font->load(*it, _codepage);
+			_fonts.push_back(font);
+			fontsCache[*it] = font;
+		} else {
+			CryoFont *font = new CryoFont();
+			font->load(*it);
+			_fonts.push_back(font);
+			fontsCache[*it] = font;
+		}
 	}
+}
 
-	// 3 unknown uint16
-	(void) font_fl.readUint16BE();
-	(void) font_fl.readUint16BE();
-	(void) font_fl.readUint16BE();
-
-	Font *font = new Font();
-
-	font->maxHeight = font_fl.readSint16BE();
-	//debug("Max char height %d", font.maxHeight);
-
-	font_fl.read(font->comment, sizeof(font->comment));
-	//debug("Comment %s", font.comment);
-
-	for (uint i = 0; i < Font::kCharactersCount; i++) {
-		uint16 h = font_fl.readUint16BE();
-		uint16 w = font_fl.readUint16BE();
-		uint sz = font->chars[i].setup(w, h);
-		//debug("Char %d sz %dx%d %d", i, w, h, sz);
-		font->chars[i].offX = font_fl.readSint16BE();
-		font->chars[i].offY = font_fl.readSint16BE();
-		font->chars[i].printedWidth = font_fl.readUint16BE();
-		//debug("Char %d offX %d offY %d PW %d", i, font.chars[i].offX, font.chars[i].offY, font.chars[i].printedWidth);
+Common::U32String FontManager::toU32(const Common::String &str) const {
+	assert(_codepage != Common::kCodePageInvalid);
 
-		font_fl.read(font->chars[i].data, sz);
-		//debug("Char %d read %d", i, v);
+	if (_toUnicode) {
+		return str.decode(_codepage);
 	}
 
-	_fonts.push_back(font);
+	switch (_codepage) {
+	case Common::kUtf8:
+		error("UTF-8 not supported");
+	case Common::kWindows932:
+	case Common::kWindows949:
+	case Common::kWindows950: {
+		/* if high-order bit is 1, then character is 2 bytes else it's 1 byte
+		 * We don't check validity of the codepoint */
+		Common::U32String ret;
+		for (uint32 i = 0; i < str.size(); i++) {
+			uint32 c = (byte)str[i];
+			if ((c & 0x80) && (i + 1 < str.size())) {
+				c <<= 8;
+				i++;
+				c |= str[i] & 0xff;
+			}
+			ret += c;
+		}
+		return ret;
+	}
+	default:
+		// All other codepages are SBCS: one byte is one character
+		return str;
+	}
 }
 
 void FontManager::setCurrentFont(int currentFont) {
@@ -101,82 +134,42 @@ void FontManager::setCurrentFont(int currentFont) {
 }
 
 void FontManager::setSpaceWidth(uint additionalSpace) {
+	// For now space character is still the same in all encodings: 0x20
 	if (_currentFont) {
-		_spaceWidth = additionalSpace + _currentFont->chars[0].printedWidth;
+		_spaceWidth = additionalSpace + _currentFont->getCharWidth(' ');
 	} else {
 		_spaceWidth = 0;
 	}
 }
 
 uint FontManager::displayStr_(uint x, uint y,
-                              const Common::String &text) const {
+                              const Common::U32String &text) const {
 	uint offset = 0;
-	for (Common::String::const_iterator it = text.begin(); it != text.end(); it++) {
-		offset += displayChar(x + offset, y, *it);
+	for (Common::U32String::const_iterator it = text.begin(); it != text.end(); it++) {
+		_currentFont->drawChar(_currentSurface, *it, x + offset, y, _foreColor);
+		offset += _currentFont->getCharWidth(*it) + _charSpacing;
 	}
 	return offset;
 }
 
-uint FontManager::displayChar(uint x, uint y, unsigned char c) const {
-	if (!_currentFont) {
-		error("There is no current font");
-	}
-	if (!_currentSurface) {
-		error("There is no current surface");
-	}
-
-	if (c < ' ' || c >= 255) {
-		c = '?';
-	}
-	c -= 32;
-
-	const Character &char_ = _currentFont->chars[c];
-	int realX = x + char_.offX;
-	int realY = y + char_.offY + _currentFont->maxHeight - 2;
-
-	if (!_transparentBackground) {
-		_currentSurface->fillRect(Common::Rect(realX, realY, realX + char_.w, realY + char_.h), 0xff);
-	}
-	Graphics::Surface src;
-	src.init(char_.w, char_.h, char_.w, char_.data, Graphics::PixelFormat::createFormatCLUT8());
-	_currentSurface->transBlitFrom(src, Common::Point(realX, realY), 0, false, _foreColor);
-
-	// WORKAROUND: in Versailles game the space width is calculated differently in this function and in the getStrWidth one, let's try to be consistent
-#define KEEP_SPACE_BUG
-#ifndef KEEP_SPACE_BUG
-	if (c == 0) {
-		return _spaceWidth;
-	} else {
-		return _charSpacing + char_.printedWidth;
-	}
-#else
-	return _charSpacing + char_.printedWidth;
-#endif
-}
-
-uint FontManager::getStrWidth(const Common::String &text) const {
+uint FontManager::getStrWidth(const Common::U32String &text) const {
 	uint width = 0;
-	for (Common::String::const_iterator it = text.begin(); it != text.end(); it++) {
-		unsigned char c = *it;
+	for (Common::U32String::const_iterator it = text.begin(); it != text.end(); it++) {
+		uint32 c = *it;
 		if (c == ' ') {
 			width += _spaceWidth;
 		} else {
-			if (c < ' ' || c >= 255) {
-				c = '?';
-			}
-			c -= 32;
-			width += _charSpacing;
-			width += _currentFont->chars[c].printedWidth;
+			width += _currentFont->getCharWidth(*it) + _charSpacing;
 		}
 	}
 	return width;
 }
 
-bool FontManager::displayBlockText(const Common::String &text,
-                                   Common::String::const_iterator begin) {
+bool FontManager::displayBlockText(const Common::U32String &text,
+                                   Common::U32String::const_iterator begin) {
 	bool notEnoughSpace = false;
-	Common::String::const_iterator ptr = begin;
-	Common::Array<Common::String> words;
+	Common::U32String::const_iterator ptr = begin;
+	Common::Array<Common::U32String> words;
 
 	if (begin != text.end()) {
 		_blockTextRemaining = nullptr;
@@ -193,7 +186,7 @@ bool FontManager::displayBlockText(const Common::String &text,
 			} else {
 				spaceWidthPerWord = (double)spacesWidth / (double)words.size();
 			}
-			Common::Array<Common::String>::const_iterator word;
+			Common::Array<Common::U32String>::const_iterator word;
 			uint word_i;
 			for (word = words.begin(), word_i = 0; word != words.end(); word++, word_i++) {
 				_blockPos.x += displayStr_(_blockPos.x, _blockPos.y, *word);
@@ -218,22 +211,22 @@ bool FontManager::displayBlockText(const Common::String &text,
 	return notEnoughSpace;
 }
 
-uint FontManager::getLinesCount(const Common::String &text, uint width) {
+uint FontManager::getLinesCount(const Common::U32String &text, uint width) {
 	if (text.size() == 0) {
 		// One line even if it's empty
 		return 1;
 	}
-	if (text.size() > 1024) {
+	if (text.size() >= 1024) {
 		// Too long text, be lazy
 		return getStrWidth(text) / width + 3;
 	}
 
 	uint lineCount = 0;
-	Common::String::const_iterator textP = text.begin();
+	Common::U32String::const_iterator textP = text.begin();
 	uint len = text.size();
 
 	while (len > 0) {
-		Common::String buffer;
+		Common::U32String buffer;
 		uint lineWidth = 0;
 		lineCount++;
 		while (lineWidth < width && len > 0 && *textP != '\r') {
@@ -244,20 +237,34 @@ uint FontManager::getLinesCount(const Common::String &text, uint width) {
 
 		if (lineWidth >= width) {
 			// We overrun the line, get backwards
-			while (buffer.size()) {
-				if (buffer[buffer.size() - 1] == ' ') {
-					break;
+			if (_useSpaceDelimiter) {
+				uint bufferSize = buffer.size();
+				while (buffer.size()) {
+					if (buffer[buffer.size() - 1] == ' ') {
+						break;
+					}
+					buffer.deleteLastChar();
+					textP--;
+					len++;
+				}
+				if (!buffer.size()) {
+					// Word was too long: fail
+					// Split in middle of something
+					textP += bufferSize - 1;
+					len -= bufferSize - 1;
+				}
+				if (*textP == ' ') {
+					textP++;
+				}
+			} else {
+				if (buffer.size()) {
+					buffer.deleteLastChar();
+					textP--;
+					len++;
+				} else {
+					// fail
+					return 0;
 				}
-				buffer.deleteLastChar();
-				textP--;
-				len++;
-			}
-			if (!buffer.size()) {
-				// Word was too long: fail
-				return 0;
-			}
-			if (*textP == ' ') {
-				textP++;
 			}
 			// Continue with next line
 			continue;
@@ -276,14 +283,14 @@ uint FontManager::getLinesCount(const Common::String &text, uint width) {
 	return lineCount;
 }
 
-void FontManager::calculateWordWrap(const Common::String &text,
-                                    Common::String::const_iterator *position, uint *finalPos, bool *hasCr,
-                                    Common::Array<Common::String> &words) const {
+void FontManager::calculateWordWrap(const Common::U32String &text,
+                                    Common::U32String::const_iterator *position, uint *finalPos, bool *hasCr,
+                                    Common::Array<Common::U32String> &words) const {
 	*hasCr = false;
 	uint offset = 0;
 	bool wordWrap = false;
 	uint lineWidth = _blockRect.right - _blockRect.left;
-	Common::String::const_iterator ptr = *position;
+	Common::U32String::const_iterator ptr = *position;
 
 	words.clear();
 
@@ -296,9 +303,9 @@ void FontManager::calculateWordWrap(const Common::String &text,
 	}
 
 	while (!wordWrap) {
-		Common::String::const_iterator begin = ptr;
-		for (; ptr != text.end() && *ptr != '\r' && *ptr != ' '; ptr++) { }
-		Common::String word(begin, ptr);
+		Common::U32String::const_iterator begin = ptr;
+		for (; ptr != text.end() && *ptr != '\r' && (!_useSpaceDelimiter || *ptr != ' '); ptr++) { }
+		Common::U32String word(begin, ptr);
 		uint width = getStrWidth(word);
 		if (width + offset >= lineWidth) {
 			wordWrap = true;
@@ -317,24 +324,72 @@ void FontManager::calculateWordWrap(const Common::String &text,
 
 	if (words.size() > 0) {
 		offset -= _spaceWidth;
-	}
+	} /**/ else {
+		// couldn't get a word (too long): we are at start of line
+		Common::U32String::const_iterator begin = ptr;
+		// Start with one character
+		for (ptr++; ptr != text.end(); ptr++) {
+			Common::U32String word(begin, ptr);
+			uint width = getStrWidth(word);
+			if (width >= lineWidth) {
+				break;
+			}
+			offset = width;
+		}
+		// We overran: go back
+		if (ptr != begin) {
+			ptr--;
+		}
+		if (_keepASCIIjoined) {
+			Common::U32String::const_iterator end = ptr;
+			// Until now ptr was pointing after the last character
+			// As we want to look at it, go back
+			if (ptr != begin) {
+				ptr--;
+			}
+			for (; ptr != begin; ptr--) {
+				// Try to split at space or non-ASCII character
+				if (*ptr >= 0x80) {
+					break;
+				}
+				if (Common::isSpace(*ptr)) {
+					break;
+				}
+			}
+			if (ptr == begin) {
+				// Too bad: we have to split in middle of something
+				ptr = end;
+			} else {
+				// Go back just after last character
+				ptr++;
+			}
+		}
+		Common::U32String word(begin, ptr);
+		words.push_back(word);
+	} /**/
 	*finalPos = offset;
 	*position = ptr;
 }
 
-FontManager::Character::Character() : h(0), w(0), offX(0), offY(0), printedWidth(0), data(0) {
-}
-
-FontManager::Character::~Character() {
-	delete[] data;
-}
-
-uint FontManager::Character::setup(uint16 width, uint16 height) {
-	w = width;
-	h = height;
-	uint sz = w * h;
-	data = new byte[sz];
-	return sz;
+void FontManager::setupWrapParameters() {
+	switch (_codepage) {
+	case Common::kWindows932:
+		_useSpaceDelimiter = true;
+		_keepASCIIjoined = false;
+		break;
+	case Common::kWindows949:
+		_useSpaceDelimiter = true;
+		_keepASCIIjoined = false;
+		break;
+	case Common::kWindows950:
+		_useSpaceDelimiter = false;
+		_keepASCIIjoined = true;
+		break;
+	default:
+		_useSpaceDelimiter = true;
+		_keepASCIIjoined = false;
+		break;
+	}
 }
 
 } // End of namespace CryOmni3D
diff --git a/engines/cryomni3d/font_manager.h b/engines/cryomni3d/font_manager.h
index dd347ec19e..a71d5e8bcd 100644
--- a/engines/cryomni3d/font_manager.h
+++ b/engines/cryomni3d/font_manager.h
@@ -25,11 +25,11 @@
 
 #include "common/array.h"
 #include "common/str.h"
+#include "common/str-enc.h"
+#include "common/ustr.h"
 #include "common/rect.h"
 
-namespace Common {
-class ReadStream;
-}
+#include "graphics/font.h"
 
 namespace Graphics {
 class ManagedSurface;
@@ -42,7 +42,7 @@ public:
 	FontManager();
 	virtual ~FontManager();
 
-	void loadFonts(const Common::Array<Common::String> &fontFiles);
+	void loadFonts(const Common::Array<Common::String> &fontFiles, Common::CodePage codepage);
 	void setCurrentFont(int currentFont);
 	uint getCurrentFont() { return _currentFontId; }
 	void setTransparentBackground(bool transparent) { _transparentBackground = transparent; }
@@ -53,52 +53,45 @@ public:
 	void setCharSpacing(uint w) { _charSpacing = w; }
 	void setSurface(Graphics::ManagedSurface *surface) { _currentSurface = surface; }
 
-	int getFontMaxHeight() { return _currentFont->maxHeight; }
-
-	void displayInt(uint x, uint y, int value) const { displayStr_(x, y, Common::String::format("%d", value)); }
-	void displayStr(uint x, uint y, const Common::String &text) const { displayStr_(x, y, text); }
-	uint getStrWidth(const Common::String &text) const;
-
-	uint getLinesCount(const Common::String &text, uint width);
-
-	void setupBlock(const Common::Rect &block, bool justifyText = false) { _blockRect = block; _blockPos.x = block.left; _blockPos.y = block.top; _justifyText = justifyText; }
-	bool displayBlockText(const Common::String &text) { return displayBlockText(text, text.begin()); }
-	bool displayBlockText(const Common::String &text, Common::String::const_iterator begin);
-	Common::String::const_iterator blockTextRemaining() { return _blockTextRemaining; }
+	int getFontMaxHeight() { return _currentFont->getFontHeight(); }
+
+	void displayInt(uint x, uint y, int value) const {
+		displayStr_(x, y,
+		            toU32(Common::String::format("%d", value)));
+	}
+	void displayStr(uint x, uint y, const Common::String &text) const { displayStr_(x, y, toU32(text)); }
+	void displayStr(uint x, uint y, const Common::U32String &text) const { displayStr_(x, y, text); }
+	uint getStrWidth(const Common::String &text) const { return getStrWidth(toU32(text)); }
+	uint getStrWidth(const Common::U32String &text) const;
+
+	uint getLinesCount(const Common::String &text, uint width) { return getLinesCount(toU32(text), width); }
+
+	void setupBlock(const Common::Rect &block, bool justifyText = false) {
+		_blockRect = block;
+		_blockPos.x = block.left;
+		_blockPos.y = block.top;
+		_justifyText = justifyText;
+	}
+	bool displayBlockText(const Common::String &text) {
+		_blockTextStr = toU32(text);
+		return displayBlockText(_blockTextStr, _blockTextStr.begin());
+	}
+	bool displayBlockTextContinue() { return displayBlockText(_blockTextStr, _blockTextRemaining); }
 	Common::Point blockTextLastPos() { return _blockPos; }
 
 private:
-	void loadFont(Common::ReadStream &font_fl);
-	uint displayStr_(uint x, uint y, const Common::String &text) const;
-	uint displayChar(uint x, uint y, unsigned char c) const;
-	void calculateWordWrap(const Common::String &text, Common::String::const_iterator *position,
-	                       uint *finalPos, bool *has_br, Common::Array<Common::String> &words) const;
-
-	struct Character {
-		uint16 h;
-		uint16 w;
-		int16 offX;
-		int16 offY;
-		uint16 printedWidth;
-
-		byte *data;
-
-		Character();
-		~Character();
-
-		uint setup(uint16 width, uint16 height);
-	};
-
-	struct Font {
-		static const uint kCharactersCount = 223;
-
-		uint16 maxHeight;
-		byte comment[32];
-		Character chars[kCharactersCount];
-	};
-
-	Common::Array<Font *> _fonts;
-	const Font *_currentFont;
+	Common::U32String toU32(const Common::String &text) const;
+
+	uint displayStr_(uint x, uint y, const Common::U32String &text) const;
+	uint getLinesCount(const Common::U32String &text, uint width);
+	bool displayBlockText(const Common::U32String &text, Common::U32String::const_iterator begin);
+	void calculateWordWrap(const Common::U32String &text, Common::U32String::const_iterator *position,
+	                       uint *finalPos, bool *has_br, Common::Array<Common::U32String> &words) const;
+
+	Common::CodePage _codepage;
+	bool _toUnicode;
+	Common::Array<Graphics::Font *> _fonts;
+	const Graphics::Font *_currentFont;
 	uint _currentFontId;
 	bool _transparentBackground;
 	uint _spaceWidth;
@@ -112,7 +105,13 @@ private:
 	Common::Point _blockPos;
 	int _lineHeight;
 	bool _justifyText;
-	Common::String::const_iterator _blockTextRemaining;
+	Common::U32String _blockTextStr;
+	Common::U32String::const_iterator _blockTextRemaining;
+
+	// Specific parameters for non alphabetic languages
+	void setupWrapParameters();
+	bool _useSpaceDelimiter;
+	bool _keepASCIIjoined;
 };
 
 } // End of namespace CryOmni3D
diff --git a/engines/cryomni3d/fonts/cryoextfont.cpp b/engines/cryomni3d/fonts/cryoextfont.cpp
new file mode 100644
index 0000000000..49300042f7
--- /dev/null
+++ b/engines/cryomni3d/fonts/cryoextfont.cpp
@@ -0,0 +1,269 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "common/debug.h"
+#include "common/file.h"
+#include "graphics/managed_surface.h"
+
+#include "cryomni3d/fonts/cryoextfont.h"
+
+namespace CryOmni3D {
+
+CryoExtFont::~CryoExtFont() {
+	delete _crf;
+}
+
+void CryoExtFont::load(const Common::String &fontFile, Common::CodePage codepage) {
+	// For now only CP950 is supported
+	assert(codepage == Common::kWindows950);
+
+	_codepage = codepage;
+
+	Common::File *crf = new Common::File();
+
+	if (!crf->open(fontFile)) {
+		error("can't open file %s", fontFile.c_str());
+	}
+
+	_crf = crf;
+
+	byte magic[8];
+
+	_crf->read(magic, sizeof(magic));
+	if (memcmp(magic, "CRYOFONT", 8)) {
+		error("Invalid font magic");
+	}
+
+	// 3 unknown uint16
+	(void) _crf->readUint16BE();
+	(void) _crf->readUint16BE();
+	(void) _crf->readUint16BE();
+
+	_height = _crf->readSint16BE();
+	//debug("Max char height %d", _maxHeight);
+
+	_crf->read(_comment, sizeof(_comment));
+	//debug("Comment %s", _comment);
+
+	Common::String offsetsFile = fontFile;
+	offsetsFile.setChar('I', offsetsFile.size() - 1);
+	loadOffsets(offsetsFile);
+}
+
+void CryoExtFont::loadOffsets(const Common::String &offsetsFile) {
+	Common::File cri;
+
+	if (!cri.open(offsetsFile)) {
+		error("can't open file %s", offsetsFile.c_str());
+	}
+
+	uint32 counts = cri.size() / sizeof(uint32);
+	_offsets.reserve(counts);
+	debug("Loading %u offsets", counts);
+
+	for (; counts > 0; counts--) {
+		uint32 offset = cri.readUint32BE();
+		_offsets.push_back(offset);
+	}
+}
+
+void CryoExtFont::assureCached(uint32 chr) const {
+	if (_cache.contains(chr)) {
+		return;
+	}
+
+	uint32 glyphId = mapGlyph(chr);
+
+	if (glyphId >= _offsets.size()) {
+		warning("Invalid glyph id: %u", glyphId);
+		glyphId = 0;
+	}
+
+	uint32 offset = _offsets[glyphId];
+	_crf->seek(offset);
+
+	Glyph &glyph = _cache[chr];
+	uint16 h = _crf->readUint16BE();
+	uint16 w = _crf->readUint16BE();
+	uint sz = glyph.setup(w, h);
+	//debug("Char %u/%u sz %ux%u %u", chr, glyphId, w, h, sz);
+	glyph.offX    = _crf->readSint16BE();
+	glyph.offY    = _crf->readSint16BE();
+	glyph.advance = _crf->readUint16BE();
+	//debug("Char %u/%u offX %d offY %d PW %d", chr, glyphId, glyph.offX, glyph.offY, glyph.advance);
+
+	_crf->read(glyph.bitmap, sz);
+	//debug("Char %u/%u read %d", chr, glyphId, v);
+
+	if ((_cache.size() % 10) == 0) {
+		debug("Glyph cache size is now %u", _cache.size());
+	}
+}
+
+Common::Rect CryoExtFont::getBoundingBox(uint32 chr) const {
+	assureCached(chr);
+
+	const Glyph &glyph = _cache[chr];
+	return Common::Rect(glyph.offX, glyph.offY,
+	                    glyph.offX + glyph.w, glyph.offY + glyph.h);
+}
+
+int CryoExtFont::getCharWidth(uint32 chr) const {
+	assureCached(chr);
+
+	const Glyph &glyph = _cache[chr];
+	return glyph.advance;
+}
+
+void CryoExtFont::drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32 color) const {
+	assert(dst);
+	assert(dst->format.bytesPerPixel == 1 || dst->format.bytesPerPixel == 2 ||
+	       dst->format.bytesPerPixel == 4);
+
+	assureCached(chr);
+
+	const Glyph &glyph = _cache[chr];
+
+	x += glyph.offX;
+	// In european versions of Versailles there was a -2 offset which is not present in Chinese one
+	// Maybe this offset should be checked when adding new games
+	y += glyph.offY + _height;
+
+	if (x > dst->w) {
+		return;
+	}
+	if (y > dst->h) {
+		return;
+	}
+
+	int w = glyph.w;
+	int h = glyph.h;
+
+	const uint8 *srcPos = (const uint8 *)glyph.bitmap;
+
+	const uint16 stride = (glyph.w + 7) / 8;
+	const uint16 originalWidth = glyph.w;
+
+	// Make sure we are not drawing outside the screen bounds
+	if (y < 0) {
+		// y is negative so srcPos will increase and h will decrease
+		srcPos -= y * stride;
+		h += y;
+		y = 0;
+	}
+
+	if (y + h > dst->h) {
+		h = dst->h - y;
+	}
+
+	if (h <= 0) {
+		return;
+	}
+
+	int jStart = 0;
+	if (x < 0) {
+		// x is negative so jStart will be positive and w will decrease
+		jStart = -x;
+		w += x;
+		x = 0;
+	}
+
+	if (x + w > dst->w) {
+		w = dst->w - x;
+	}
+
+	if (w <= 0) {
+		return;
+	}
+
+	const int jEnd = jStart + w - 1;
+
+	for (uint16 i = 0; i < h; i++) {
+		byte b = 0;
+		for (uint16 j = 0; j < originalWidth; j++) {
+			if ((j % 8) == 0) {
+				b = *(srcPos++);
+			}
+
+			if (j >= jStart && j <= jEnd && b & 0x80) {
+				if (dst->format.bytesPerPixel == 1) {
+					*((byte *)dst->getBasePtr(x + j, y + i)) = color;
+				} else if (dst->format.bytesPerPixel == 2) {
+					*((uint16 *)dst->getBasePtr(x + j, y + i)) = color;
+				} else if (dst->format.bytesPerPixel == 4) {
+					*((uint32 *)dst->getBasePtr(x + j, y + i)) = color;
+				}
+			}
+
+			b <<= 1;
+		}
+	}
+}
+
+uint32 CryoExtFont::mapGlyph(uint32 chr) const {
+	switch (_codepage) {
+	case Common::kWindows950:
+		/* Nothing more than 0xffff */
+		if (chr >> 16) {
+			return 0;
+		}
+		/* No glyph for non printable */
+		if (chr < 0x20) {
+			return 0;
+		}
+		/* ASCII characters : like in 8bits case, 0x60 ones */
+		if (chr < 0x80) {
+			return chr - 0x20;
+		}
+		/* Invalid ranges */
+		if (chr < 0x8000) {
+			return 0;
+		}
+		if ((chr & 0xff) < 0x40) {
+			return 0;
+		}
+		/* After the 0x60 ASCII characters
+		 * a table of 0xC0 large (starting at 0x40) and
+		 * 0x80 long (starting at 0x80) */
+		chr = 0xC0 * ((chr >> 8) - 0x80) + ((chr & 0xff) - 0x40) + 0x60;
+		return chr;
+	default:
+		error("Invalid encoding");
+	}
+}
+
+CryoExtFont::Glyph::Glyph() : offX(0), offY(0), advance(0), bitmap(nullptr) {
+}
+
+CryoExtFont::Glyph::~Glyph() {
+	delete[] bitmap;
+}
+
+uint CryoExtFont::Glyph::setup(uint16 width, uint16 height) {
+	w = width;
+	h = height;
+	uint sz = h * ((w + 7) / 8);
+	bitmap = new byte[sz];
+	return sz;
+}
+
+} // End of namespace CryOmni3D
diff --git a/engines/cryomni3d/fonts/cryoextfont.h b/engines/cryomni3d/fonts/cryoextfont.h
new file mode 100644
index 0000000000..5cae411811
--- /dev/null
+++ b/engines/cryomni3d/fonts/cryoextfont.h
@@ -0,0 +1,88 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CRYOMNI3D_FONTS_CRYOEXTFONT_H
+#define CRYOMNI3D_FONTS_CRYOEXTFONT_H
+
+#include "common/array.h"
+#include "common/hashmap.h"
+#include "common/str.h"
+#include "graphics/font.h"
+
+namespace Common {
+class SeekableReadStream;
+}
+
+namespace CryOmni3D {
+
+class CryoExtFont : public Graphics::Font {
+public:
+	CryoExtFont() : _height(0), _maxAdvance(0), _crf(nullptr), _codepage(Common::kCodePageInvalid) { }
+	virtual ~CryoExtFont();
+
+	void load(const Common::String &fontFile, Common::CodePage encoding);
+
+	virtual int getFontHeight() const { return _height; }
+	virtual int getMaxCharWidth() const { return _maxAdvance; }
+
+	virtual int getCharWidth(uint32 chr) const;
+
+	virtual Common::Rect getBoundingBox(uint32 chr) const;
+
+	virtual void drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32 color) const;
+
+private:
+	void loadOffsets(const Common::String &offsetsFile);
+	void assureCached(uint32 chr) const;
+	uint32 mapGlyph(uint32 chr) const;
+
+	struct Glyph {
+		uint16 h;
+		uint16 w;
+		int16 offX;
+		int16 offY;
+		uint16 advance;
+
+		byte *bitmap;
+
+		Glyph();
+		~Glyph();
+
+		uint setup(uint16 width, uint16 height);
+	};
+
+	uint16 _height;
+	uint16 _maxAdvance;
+	byte _comment[32];
+
+	Common::CodePage _codepage;
+
+	mutable Common::SeekableReadStream *_crf;
+	Common::Array<uint32> _offsets;
+
+	typedef Common::HashMap<uint32, Glyph> GlyphCache;
+	mutable GlyphCache _cache;
+};
+
+} // End of namespace CryOmni3D
+
+#endif
diff --git a/engines/cryomni3d/fonts/cryofont.cpp b/engines/cryomni3d/fonts/cryofont.cpp
new file mode 100644
index 0000000000..0a17465ed6
--- /dev/null
+++ b/engines/cryomni3d/fonts/cryofont.cpp
@@ -0,0 +1,186 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "common/debug.h"
+#include "common/file.h"
+#include "graphics/managed_surface.h"
+
+#include "cryomni3d/fonts/cryofont.h"
+
+namespace CryOmni3D {
+
+void CryoFont::load(const Common::String &fontFile) {
+	Common::File crf;
+
+	if (!crf.open(fontFile)) {
+		error("can't open file %s", fontFile.c_str());
+	}
+
+	byte magic[8];
+
+	crf.read(magic, sizeof(magic));
+	if (memcmp(magic, "CRYOFONT", 8)) {
+		error("Invalid font magic");
+	}
+
+	// 3 unknown uint16
+	(void) crf.readUint16BE();
+	(void) crf.readUint16BE();
+	(void) crf.readUint16BE();
+
+	_height = crf.readSint16BE();
+	//debug("Max char height %d", _maxHeight);
+
+	crf.read(_comment, sizeof(_comment));
+	//debug("Comment %s", _comment);
+
+	loadAll8bitGlyphs(crf);
+}
+
+void CryoFont::loadAll8bitGlyphs(Common::SeekableReadStream &font_fl) {
+	for (uint i = 0; i < k8bitCharactersCount; i++) {
+		// Cache maps a character to a glyph
+		Glyph &glyph = _glyphs[i];
+		uint16 h = font_fl.readUint16BE();
+		uint16 w = font_fl.readUint16BE();
+		uint sz = glyph.setup(w, h);
+		//debug("Char %d sz %dx%d %d", i, w, h, sz);
+		glyph.offX    = font_fl.readSint16BE();
+		glyph.offY    = font_fl.readSint16BE();
+		glyph.advance = font_fl.readUint16BE();
+		//debug("Char %d offX %d offY %d PW %d", i, glyph.offX, glyph.offY, glyph.advance);
+
+		font_fl.read(glyph.bitmap, sz);
+		//debug("Char %d read %d", i, v);
+
+		if (glyph.advance > _maxAdvance) {
+			_maxAdvance = glyph.advance;
+		}
+	}
+}
+
+Common::Rect CryoFont::getBoundingBox(uint32 chr) const {
+	const Glyph &glyph = _glyphs[mapGlyph(chr)];
+	return Common::Rect(glyph.offX, glyph.offY,
+	                    glyph.offX + glyph.w, glyph.offY + glyph.h);
+}
+
+int CryoFont::getCharWidth(uint32 chr) const {
+	const Glyph &glyph = _glyphs[mapGlyph(chr)];
+	return glyph.advance;
+}
+
+void CryoFont::drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32 color) const {
+	assert(dst);
+	assert(dst->format.bytesPerPixel == 1 || dst->format.bytesPerPixel == 2 ||
+	       dst->format.bytesPerPixel == 4);
+
+	const Glyph &glyph = _glyphs[mapGlyph(chr)];
+
+	x += glyph.offX;
+	y += glyph.offY + _height - 2;
+
+	if (x > dst->w) {
+		return;
+	}
+	if (y > dst->h) {
+		return;
+	}
+
+	int w = glyph.w;
+	int h = glyph.h;
+
+	const uint8 *srcPos = (const uint8 *)glyph.bitmap;
+
+	// Make sure we are not drawing outside the screen bounds
+	if (x < 0) {
+		// x is negative so srcPos will increase and w will decrease
+		srcPos -= x;
+		w += x;
+		x = 0;
+	}
+
+	if (x + w > dst->w) {
+		w = dst->w - x;
+	}
+
+	if (w <= 0) {
+		return;
+	}
+
+	if (y < 0) {
+		// y is negative so srcPos will increase and h will decrease
+		srcPos -= y * glyph.w;
+		h += y;
+		y = 0;
+	}
+
+	if (y + h > dst->h) {
+		h = dst->h - y;
+	}
+
+	if (h <= 0) {
+		return;
+	}
+
+	for (uint16 i = 0; i < h; i++) {
+		for (uint16 j = 0; j < w; j++) {
+			if (srcPos[j]) {
+				if (dst->format.bytesPerPixel == 1) {
+					*((byte *)dst->getBasePtr(x + j, y + i)) = color;
+				} else if (dst->format.bytesPerPixel == 2) {
+					*((uint16 *)dst->getBasePtr(x + j, y + i)) = color;
+				} else if (dst->format.bytesPerPixel == 4) {
+					*((uint32 *)dst->getBasePtr(x + j, y + i)) = color;
+				}
+			}
+		}
+		// Next line
+		srcPos += glyph.w;
+	}
+}
+
+uint32 CryoFont::mapGlyph(uint32 chr) const {
+	/* Placeholder for non printable and out of limit characters */
+	if (chr < 0x20 || chr >= 0xff) {
+		chr = '?';
+	}
+	chr -= 0x20;
+	return chr;
+}
+
+CryoFont::Glyph::Glyph() : offX(0), offY(0), advance(0), bitmap(nullptr) {
+}
+
+CryoFont::Glyph::~Glyph() {
+	delete[] bitmap;
+}
+
+uint CryoFont::Glyph::setup(uint16 width, uint16 height) {
+	w = width;
+	h = height;
+	uint sz = w * h;
+	bitmap = new byte[sz];
+	return sz;
+}
+
+} // End of namespace CryOmni3D
diff --git a/engines/cryomni3d/fonts/cryofont.h b/engines/cryomni3d/fonts/cryofont.h
new file mode 100644
index 0000000000..ac50a5712f
--- /dev/null
+++ b/engines/cryomni3d/fonts/cryofont.h
@@ -0,0 +1,82 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CRYOMNI3D_FONTS_CRYOFONT_H
+#define CRYOMNI3D_FONTS_CRYOFONT_H
+
+#include "common/array.h"
+#include "common/hashmap.h"
+#include "common/str.h"
+#include "graphics/font.h"
+
+namespace Common {
+class SeekableReadStream;
+}
+
+namespace CryOmni3D {
+
+class CryoFont : public Graphics::Font {
+public:
+	CryoFont() : _height(0), _maxAdvance(0) { }
+
+	void load(const Common::String &fontFile);
+
+	virtual int getFontHeight() const { return _height; }
+	virtual int getMaxCharWidth() const { return _maxAdvance; }
+
+	virtual int getCharWidth(uint32 chr) const;
+
+	virtual Common::Rect getBoundingBox(uint32 chr) const;
+
+	virtual void drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32 color) const;
+
+private:
+	void loadAll8bitGlyphs(Common::SeekableReadStream &font_fl);
+	uint32 mapGlyph(uint32 chr) const;
+
+	struct Glyph {
+		uint16 h;
+		uint16 w;
+		int16 offX;
+		int16 offY;
+		uint16 advance;
+
+		byte *bitmap;
+
+		Glyph();
+		~Glyph();
+
+		uint setup(uint16 width, uint16 height);
+	};
+
+	static const uint k8bitCharactersCount = 223;
+
+	uint16 _height;
+	uint16 _maxAdvance;
+	byte _comment[32];
+
+	Glyph _glyphs[k8bitCharactersCount];
+};
+
+} // End of namespace CryOmni3D
+
+#endif
diff --git a/engines/cryomni3d/module.mk b/engines/cryomni3d/module.mk
index 830f4502f7..266a6e93da 100644
--- a/engines/cryomni3d/module.mk
+++ b/engines/cryomni3d/module.mk
@@ -1,6 +1,8 @@
 MODULE := engines/cryomni3d
 
 MODULE_OBJS = \
+	fonts/cryoextfont.o \
+	fonts/cryofont.o \
 	image/codecs/hlz.o \
 	image/hlz.o \
 	video/hnm_decoder.o \
diff --git a/engines/cryomni3d/versailles/documentation.cpp b/engines/cryomni3d/versailles/documentation.cpp
index d52e67c89a..e39fd5cb47 100644
--- a/engines/cryomni3d/versailles/documentation.cpp
+++ b/engines/cryomni3d/versailles/documentation.cpp
@@ -1508,7 +1508,7 @@ void Versailles_Documentation::drawRecordData(Graphics::ManagedSurface &surface,
 		blockContent2.top = _fontManager->blockTextLastPos().y + lineHeight;
 		_fontManager->setupBlock(blockContent2);
 
-		if (!_fontManager->displayBlockText(text, _fontManager->blockTextRemaining())) {
+		if (!_fontManager->displayBlockTextContinue()) {
 			// All text was drawn
 			break;
 		}
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index 9807df1446..b72c0c5756 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -276,6 +276,8 @@ void CryOmni3DEngine_Versailles::setupFonts() {
 	// Explainations below are based on original binaries, debug is not used in this engine
 	// Fonts loaded are not always the same: FR Mac and EN DOS don't use the same font for debug doc/unused
 	// The important is that the loaded one is present in all versions
+
+	// Code below is for SBCS encodings (ie. non CJK)
 	uint8 fontsSet = getFeatures() & GF_VERSAILLES_FONTS_MASK;
 	switch (fontsSet) {
 	case GF_VERSAILLES_FONTS_NUMERIC:
@@ -352,7 +354,8 @@ void CryOmni3DEngine_Versailles::setupFonts() {
 		error("Font set invalid");
 	}
 
-	_fontManager.loadFonts(fonts);
+	// Use a SBCS codepage as a placeholder, we won't convert characters anyway
+	_fontManager.loadFonts(fonts, Common::kWindows1250);
 }
 
 void CryOmni3DEngine_Versailles::setupSprites() {


Commit: 90d1c764c32ed369609225a5724ab994a479d61a
    https://github.com/scummvm/scummvm/commit/90d1c764c32ed369609225a5724ab994a479d61a
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add clipping support for videos

This will be used to avoid drawing subtitles at every frame

Changed paths:
    engines/cryomni3d/cryomni3d.cpp
    engines/cryomni3d/cryomni3d.h


diff --git a/engines/cryomni3d/cryomni3d.cpp b/engines/cryomni3d/cryomni3d.cpp
index 952e69af84..fdfe2200bc 100644
--- a/engines/cryomni3d/cryomni3d.cpp
+++ b/engines/cryomni3d/cryomni3d.cpp
@@ -44,7 +44,7 @@ namespace CryOmni3D {
 CryOmni3DEngine::CryOmni3DEngine(OSystem *syst,
                                  const CryOmni3DGameDescription *gamedesc) : Engine(syst), _gameDescription(gamedesc),
 	_canLoadSave(false), _fontManager(), _sprites(), _dragStatus(kDragStatus_NoDrag), _lastMouseButton(0),
-	_autoRepeatNextEvent(uint(-1)) {
+	_autoRepeatNextEvent(uint(-1)), _hnmHasClip(false) {
 	if (!_mixer->isReady()) {
 		error("Sound initialization failed");
 	}
@@ -172,7 +172,16 @@ void CryOmni3DEngine::playHNM(const Common::String &filename, Audio::Mixer::Soun
 				if (beforeDraw) {
 					(this->*beforeDraw)(frameNum);
 				}
-				g_system->copyRectToScreen(frame->getPixels(), frame->pitch, 0, 0, width, height);
+
+				if (_hnmHasClip) {
+					Common::Rect rct(width, height);
+					rct.clip(_hnmClipping);
+					g_system->copyRectToScreen(frame->getPixels(), frame->pitch, rct.left, rct.top, rct.width(),
+					                           rct.height());
+				} else {
+					g_system->copyRectToScreen(frame->getPixels(), frame->pitch, 0, 0, width, height);
+				}
+
 				if (afterDraw) {
 					(this->*afterDraw)(frameNum);
 				}
diff --git a/engines/cryomni3d/cryomni3d.h b/engines/cryomni3d/cryomni3d.h
index 387a5a02c9..716ba11de3 100644
--- a/engines/cryomni3d/cryomni3d.h
+++ b/engines/cryomni3d/cryomni3d.h
@@ -176,6 +176,9 @@ protected:
 	void fadeInPalette(const byte *colors);
 	void setBlackPalette();
 
+	void setHNMClipping(const Common::Rect &clip) { _hnmClipping = clip; _hnmHasClip = true; }
+	void unsetHNMClipping() { _hnmHasClip = false; }
+
 protected:
 	bool _canLoadSave;
 
@@ -194,6 +197,9 @@ protected:
 private:
 	uint _lockPaletteStartRW;
 	uint _lockPaletteEndRW;
+
+	Common::Rect _hnmClipping;
+	bool _hnmHasClip;
 };
 
 } // End of namespace CryOmni3D


Commit: dad1b4d1357fe9453aa9f67ccc98137ff71f98ba
    https://github.com/scummvm/scummvm/commit/dad1b4d1357fe9453aa9f67ccc98137ff71f98ba
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add subtitles support for CJK

Changed paths:
    engines/cryomni3d/versailles/data.cpp
    engines/cryomni3d/versailles/engine.cpp
    engines/cryomni3d/versailles/engine.h


diff --git a/engines/cryomni3d/versailles/data.cpp b/engines/cryomni3d/versailles/data.cpp
index f97e0da917..1220497605 100644
--- a/engines/cryomni3d/versailles/data.cpp
+++ b/engines/cryomni3d/versailles/data.cpp
@@ -71,6 +71,24 @@ const FakeTransitionActionPlace CryOmni3DEngine_Versailles::kFakeTransitions[] =
 	{0, 0} // Must be the last one
 };
 
+static void readSubtitles(Common::HashMap<Common::String, Common::Array<SubtitleEntry> > &subtitles,
+                          DATSeekableStream *data) {
+	uint16 vidsCount = data->readUint16LE();
+	for (uint16 i = 0; i < vidsCount; i++) {
+		Common::String vidName = data->readString16();
+		Common::Array<SubtitleEntry> &entries = subtitles[vidName];
+
+		uint16 linesCount = data->readUint16LE();
+		entries.resize(linesCount);
+		for (uint16 j = 0; j < linesCount; j++) {
+			SubtitleEntry &entry = entries[j];
+
+			entry.frameStart = data->readUint32LE();
+			entry.text = data->readString16();
+		}
+	}
+}
+
 void CryOmni3DEngine_Versailles::loadStaticData() {
 	// This should match data in devtools/create_cryomni3d_dat
 	DATSeekableStream *data = getStaticData(MKTAG('V', 'R', 'S', 'L'), 1);
@@ -91,6 +109,14 @@ void CryOmni3DEngine_Versailles::loadStaticData() {
 	data->readString16Array16(_paintingsTitles);
 	assert(_paintingsTitles.size() == 48);
 
+	_subtitles.clear();
+	// Only CJK have subtitles, don't change dat format for other languages
+	if ((getLanguage() == Common::JA_JPN) ||
+	        (getLanguage() == Common::KO_KOR) ||
+	        (getLanguage() == Common::ZH_TWN)) {
+		readSubtitles(_subtitles, data);
+	}
+
 	delete data;
 }
 
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index b72c0c5756..c4e7b39db0 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -656,8 +656,7 @@ void CryOmni3DEngine_Versailles::playTransitionEndLevel(int level) {
 		}
 	}
 
-	// Videos are like music because if you mute music in game it will mute videos soundtracks
-	playHNM(video, Audio::Mixer::kMusicSoundType);
+	playSubtitledVideo(video);
 
 	clearKeys();
 	if (shouldAbort()) {
@@ -1611,6 +1610,81 @@ void CryOmni3DEngine_Versailles::playInGameVideo(const Common::String &filename,
 	}
 }
 
+void CryOmni3DEngine_Versailles::playSubtitledVideo(const Common::String &filename) {
+	Common::HashMap<Common::String, Common::Array<SubtitleEntry> >::const_iterator it;
+
+	if (!showSubtitles() ||
+	        (it = _subtitles.find(filename)) == _subtitles.end() ||
+	        it->_value.size() == 0) {
+		// No subtitle, don't try to handle them frame by frame
+		// Videos are like music because if you mute music in game it will mute videos soundtracks
+		playHNM(filename, Audio::Mixer::kMusicSoundType);
+		return;
+	}
+
+	// Keep 2 colors for background and text
+	setPalette(&_cursorPalette[3 * 242], 254, 1);
+	setPalette(&_cursorPalette[3 * 247], 255, 1);
+	lockPalette(0, 253);
+
+	_currentSubtitleSet = &it->_value;
+	_currentSubtitle = _currentSubtitleSet->begin();
+
+	_fontManager.setCurrentFont(8);
+	_fontManager.setTransparentBackground(true);
+	_fontManager.setForeColor(254u);
+	_fontManager.setLineHeight(22);
+	_fontManager.setSpaceWidth(2);
+	_fontManager.setCharSpacing(1);
+
+	// Videos are like music because if you mute music in game it will mute videos soundtracks
+	playHNM(filename, Audio::Mixer::kMusicSoundType,
+	        static_cast<HNMCallback>(&CryOmni3DEngine_Versailles::drawVideoSubtitles), nullptr);
+
+	clearKeys();
+	unlockPalette();
+}
+
+void CryOmni3DEngine_Versailles::drawVideoSubtitles(uint frameNum) {
+	if (_currentSubtitle == _currentSubtitleSet->end()) {
+		// No next subtitle to draw, just return
+		return;
+	}
+
+	if (frameNum < _currentSubtitle->frameStart) {
+		// Not yet the good frame, just return
+		return;
+	}
+
+	const Common::String &text = _currentSubtitle->text;
+	_currentSubtitle++;
+
+	if (text.size() == 0) {
+		// Empty text, reset clipping
+		unsetHNMClipping();
+		return;
+	}
+
+	uint lines = _fontManager.getLinesCount(text, 640 - 8);
+	uint top = 480 - (2 * 4) - _fontManager.lineHeight() * lines;
+
+	Graphics::ManagedSurface tmp(640, 480 - top, Graphics::PixelFormat::createFormatCLUT8());
+
+	tmp.clear(255u);
+
+	_fontManager.setSurface(&tmp);
+	_fontManager.setupBlock(Common::Rect(4, 4, tmp.w - 4,
+	                                     tmp.h - 4)); // +1 because bottom,right is excluded
+
+	_fontManager.displayBlockText(text);
+
+	// Enable clipping to avoid refreshing text at every frame
+	setHNMClipping(Common::Rect(0, 0, 640, top));
+
+	g_system->copyRectToScreen(tmp.getPixels(), tmp.pitch, 0, top, tmp.w, tmp.h);
+	g_system->updateScreen();
+}
+
 void CryOmni3DEngine_Versailles::loadBMPs(const char *pattern, Graphics::Surface *bmps,
         uint count) {
 	Image::BitmapDecoder bmpDecoder;
diff --git a/engines/cryomni3d/versailles/engine.h b/engines/cryomni3d/versailles/engine.h
index d5f02b7e8c..8fc48115dd 100644
--- a/engines/cryomni3d/versailles/engine.h
+++ b/engines/cryomni3d/versailles/engine.h
@@ -27,6 +27,7 @@
 #include "common/random.h"
 #include "common/array.h"
 #include "common/hashmap.h"
+#include "common/hash-str.h"
 #include "common/str.h"
 
 #include "cryomni3d/cryomni3d.h"
@@ -219,6 +220,11 @@ struct MsgBoxParameters {
 	uint timeoutChar;
 };
 
+struct SubtitleEntry {
+	uint32 frameStart;
+	Common::String text;
+};
+
 class CryOmni3DEngine_Versailles : public CryOmni3DEngine {
 	friend class Versailles_DialogsManager;
 protected:
@@ -342,6 +348,7 @@ private:
 	bool showSubtitles() const;
 
 	void playInGameVideo(const Common::String &filename, bool restoreCursorPalette = true);
+	void playSubtitledVideo(const Common::String &filename);
 
 	void loadBMPs(const char *pattern, Graphics::Surface *bmps, uint count);
 
@@ -428,6 +435,12 @@ private:
 	bool doCountDown();
 	void doDrawCountdown(Graphics::ManagedSurface *surface);
 
+	// Video subtitles
+	Common::HashMap<Common::String, Common::Array<SubtitleEntry> > _subtitles;
+	const Common::Array<SubtitleEntry> *_currentSubtitleSet;
+	Common::Array<SubtitleEntry>::const_iterator _currentSubtitle;
+	void drawVideoSubtitles(uint frameNum);
+
 	// Objects
 	template<uint ID>
 	void genericDisplayObject();


Commit: baad1c7c86bcdc9bc56c7275617047756b032a68
    https://github.com/scummvm/scummvm/commit/baad1c7c86bcdc9bc56c7275617047756b032a68
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add support for subtitles in create_cryomni3d

Changed paths:
    devtools/create_cryomni3d/util.cpp
    devtools/create_cryomni3d/util.h
    devtools/create_cryomni3d/versailles.cpp
    devtools/create_cryomni3d/versailles.h


diff --git a/devtools/create_cryomni3d/util.cpp b/devtools/create_cryomni3d/util.cpp
index 4ce94efb8c..d27379e417 100644
--- a/devtools/create_cryomni3d/util.cpp
+++ b/devtools/create_cryomni3d/util.cpp
@@ -127,21 +127,10 @@ size_t writeString16(FILE *fp, const char *string) {
 	return written;
 }
 
-template<typename T, size_t (*Tf)(FILE *fp, T), typename U, size_t (*Uf)(FILE *fp, U)>
-size_t writeArray(FILE *fp, T const *array, U elems) {
-	size_t written = 0;
-	written += Uf(fp, elems);
-	for (U i = 0; i < elems; i++) {
-		written += Tf(fp, array[i]);
-	}
-	return written;
-}
-
 size_t writeString16Array16(FILE *fp, char const *const *array, uint16 elems) {
 	return writeArray<char const *, writeString16, uint16, writeUint16LE>(fp, array, elems);
 }
 
-
 //#define DEBUG
 static const char padBuf[PADDING_ALIGNMENT] = {
 #ifndef DEBUG
diff --git a/devtools/create_cryomni3d/util.h b/devtools/create_cryomni3d/util.h
index 4cd685e927..91e8974e21 100644
--- a/devtools/create_cryomni3d/util.h
+++ b/devtools/create_cryomni3d/util.h
@@ -46,6 +46,26 @@ size_t writeString16Array16(FILE *fp, char const *const *string, uint16 elems);
 size_t writePadding(FILE *fp);
 uint32 fileSize(FILE *fp);
 
+// Helper
+template<typename T, size_t (*Tf)(FILE *fp, const T &), typename U, size_t (*Uf)(FILE *fp, U)>
+size_t writeArray(FILE *fp, T const *array, U elems) {
+	size_t written = 0;
+	written += Uf(fp, elems);
+	for (U i = 0; i < elems; i++) {
+		written += Tf(fp, array[i]);
+	}
+	return written;
+}
+template<typename T, size_t (*Tf)(FILE *fp, T), typename U, size_t (*Uf)(FILE *fp, U)>
+size_t writeArray(FILE *fp, T const *array, U elems) {
+	size_t written = 0;
+	written += Uf(fp, elems);
+	for (U i = 0; i < elems; i++) {
+		written += Tf(fp, array[i]);
+	}
+	return written;
+}
+
 /* Misc stuff */
 void NORETURN_PRE error(const char *s, ...) NORETURN_POST;
 void warning(const char *s, ...);
diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp
index 68f810a5bd..e287309566 100644
--- a/devtools/create_cryomni3d/versailles.cpp
+++ b/devtools/create_cryomni3d/versailles.cpp
@@ -28,6 +28,35 @@
 
 #include "versailles.h"
 
+size_t writeVersaillesSubtitleEntry(FILE *fp, const SubtitleEntry &entry) {
+	size_t size = 0;
+
+	size += writeUint32LE(fp, entry.frameStart);
+	size += writeString16(fp, entry.text);
+
+	return size;
+}
+
+size_t writeVersaillesSubtitle(FILE *fp, Subtitle const &subtitle) {
+	size_t size = 0;
+
+	size += writeString16(fp, subtitle.videoName);
+
+	size_t count = 0;
+	for (; count < ARRAYSIZE(subtitle.entries) &&
+	        (subtitle.entries[count].text != nullptr ||
+	         subtitle.entries[count].frameStart != 0); count++) { }
+
+	size += writeArray<SubtitleEntry, writeVersaillesSubtitleEntry, uint16, writeUint16LE>(fp,
+	        subtitle.entries, count);
+
+	return size;
+}
+
+size_t writeVersaillesSubtitles16(FILE *fp, Subtitle const *subtitles, uint16 elems) {
+	return writeArray<Subtitle, writeVersaillesSubtitle, uint16, writeUint16LE>(fp, subtitles, elems);
+}
+
 // In Versailles platform doesn't seem to change anything
 #define DEFINE_FUNCS(lang) \
     size_t writeVersailles_ALL_ ## lang ## _Header(FILE *f, uint32 offset, uint32 size) { \
@@ -48,10 +77,45 @@
         size += writeString16(f, versailles ## lang ## BombPwd); \
         \
         assert(VERSAILLES_MESSAGES_COUNT == ARRAYSIZE(versailles ## lang ## messages)); \
-        size += writeString16Array16(f, versailles ## lang ## messages, VERSAILLES_MESSAGES_COUNT); \
+        size += writeString16Array16(f, versailles ## lang ## messages, ARRAYSIZE(versailles ## lang ## messages)); \
+        \
+        assert(VERSAILLES_PAINTINGS_COUNT == ARRAYSIZE(versailles ## lang ## paintings)); \
+        size += writeString16Array16(f, versailles ## lang ## paintings, ARRAYSIZE(versailles ## lang ## paintings)); \
+        \
+        size += writePadding(f); \
+        return size; \
+    }
+
+#define DEFINE_FUNCS_CJK(lang) \
+    size_t writeVersailles_ALL_ ## lang ## _Header(FILE *f, uint32 offset, uint32 size) { \
+        return writeGameHeader(f, VERSAILLES_GAMEID, VERSAILLES_VERSION, LANG_ ## lang, PLATFORM_ALL, \
+                               offset, size); \
+    } \
+    \
+    size_t writeVersailles_ALL_ ## lang ## _Data(FILE *f) { \
+        size_t size = 0; \
+        \
+        assert(VERSAILLES_LOCALIZED_FILENAMES_COUNT == ARRAYSIZE(versailles ## lang ## localizedFilenames)); \
+        size += writeString16Array16(f, versailles ## lang ## localizedFilenames, \
+                                     VERSAILLES_LOCALIZED_FILENAMES_COUNT); \
+        \
+        size += writeString16(f, versailles ## lang ## EpilMsg); \
+        size += writeString16(f, versailles ## lang ## EpilPwd); \
+        \
+        if ((LANG_ ## lang == LANG_JA)) { \
+            assert(VERSAILLES_JA_BOMB_ALPHABET_SIZE + 1 == sizeof(versaillesJABombAlphabet)); \
+            size += writeString16(f, versaillesJABombAlphabet); \
+        } \
+        size += writeString16(f, versailles ## lang ## BombPwd); \
+        \
+        assert(VERSAILLES_MESSAGES_COUNT_CJK == ARRAYSIZE(versailles ## lang ## messages)); \
+        size += writeString16Array16(f, versailles ## lang ## messages, ARRAYSIZE(versailles ## lang ## messages)); \
         \
         assert(VERSAILLES_PAINTINGS_COUNT == ARRAYSIZE(versailles ## lang ## paintings)); \
-        size += writeString16Array16(f, versailles ## lang ## paintings, VERSAILLES_PAINTINGS_COUNT); \
+        size += writeString16Array16(f, versailles ## lang ## paintings, ARRAYSIZE(versailles ## lang ## paintings)); \
+        \
+        /* No need to assert as we don't expect a fixed count in engine */ \
+        size += writeVersaillesSubtitles16(f, versailles ## lang ## subtitles, ARRAYSIZE(versailles ## lang ## subtitles)); \
         \
         size += writePadding(f); \
         return size; \
diff --git a/devtools/create_cryomni3d/versailles.h b/devtools/create_cryomni3d/versailles.h
index f384a40139..e856f08fbf 100644
--- a/devtools/create_cryomni3d/versailles.h
+++ b/devtools/create_cryomni3d/versailles.h
@@ -28,6 +28,17 @@
 #define VERSAILLES_GAMEID MKTAG('V', 'R', 'S', 'L')
 #define VERSAILLES_VERSION 1
 
+struct SubtitleEntry {
+	uint32 frameStart;
+	char const *const text;
+};
+
+#define MAX_SUBTITLE_ENTRIES 256
+struct Subtitle {
+	char const *const videoName;
+	SubtitleEntry const entries[MAX_SUBTITLE_ENTRIES];
+};
+
 #define VERSAILLES_LOCALIZED_FILENAMES_COUNT 5
 static char const *const versaillesFRlocalizedFilenames[] = {
 	"DIALOG1.GTO",


Commit: 168522beeac66c38f2639031a5a40da74bef2c2b
    https://github.com/scummvm/scummvm/commit/168522beeac66c38f2639031a5a40da74bef2c2b
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add support for automatically named saves

CJK versions of game use this to avoid handling extended character set
in files

Changed paths:
    engines/cryomni3d/versailles/engine.h
    engines/cryomni3d/versailles/menus.cpp
    engines/cryomni3d/versailles/saveload.cpp


diff --git a/engines/cryomni3d/versailles/engine.h b/engines/cryomni3d/versailles/engine.h
index 8fc48115dd..693b9e971f 100644
--- a/engines/cryomni3d/versailles/engine.h
+++ b/engines/cryomni3d/versailles/engine.h
@@ -330,7 +330,7 @@ private:
 
 	bool canVisit() const;
 	Common::String getSaveFileName(bool visit, uint saveNum) const;
-	void getSavesList(bool visit, Common::Array<Common::String> &saveNames);
+	void getSavesList(bool visit, Common::Array<Common::String> &saveNames, int &nextSaveNum);
 	void saveGame(bool visit, uint saveNum, const Common::String &saveName);
 	bool loadGame(bool visit, uint saveNum);
 
diff --git a/engines/cryomni3d/versailles/menus.cpp b/engines/cryomni3d/versailles/menus.cpp
index ea34b5d80d..b474e5eae5 100644
--- a/engines/cryomni3d/versailles/menus.cpp
+++ b/engines/cryomni3d/versailles/menus.cpp
@@ -590,6 +590,8 @@ uint CryOmni3DEngine_Versailles::displayYesNoBox(Graphics::ManagedSurface &surfa
 
 uint CryOmni3DEngine_Versailles::displayFilePicker(const Graphics::Surface *bgFrame,
         bool saveMode, Common::String &saveName) {
+	bool autoName = (_messages.size() >= 148);
+
 	Graphics::ManagedSurface surface(bgFrame->w, bgFrame->h, bgFrame->format);
 	surface.blitFrom(*bgFrame);
 
@@ -609,7 +611,8 @@ uint CryOmni3DEngine_Versailles::displayFilePicker(const Graphics::Surface *bgFr
 	g_system->updateScreen();
 
 	Common::Array<Common::String> savesList;
-	getSavesList(_isVisiting, savesList);
+	int nextSaveNum;
+	getSavesList(_isVisiting, savesList, nextSaveNum);
 	Common::String saveNameBackup;
 
 	showMouse(true);
@@ -750,15 +753,27 @@ uint CryOmni3DEngine_Versailles::displayFilePicker(const Graphics::Surface *bgFr
 					boxSelected = boxHovered;
 					// Backup new one
 					saveNameBackup = savesList[boxSelected + fileListOffset];
-					// Not an existing save clear free name
-					if (!existingSave) {
-						savesList[boxSelected + fileListOffset] = "";
+					if (saveMode) {
+						if (!existingSave) {
+							// Not an existing save clear free name
+							savesList[boxSelected + fileListOffset] = "";
+						}
+						if (autoName) {
+							// Apply autoname to text
+							if (_currentLevel < 8) {
+								savesList[boxSelected + fileListOffset] = Common::String::format(_messages[146].c_str(),
+								        _currentLevel);
+							} else {
+								savesList[boxSelected + fileListOffset] = _messages[147];
+							}
+							savesList[boxSelected + fileListOffset] += Common::String::format(" - %d", nextSaveNum);
+						}
 					}
 					redraw = true;
 				}
 			}
 		}
-		if (boxSelected != uint(-1) && saveMode) {
+		if (boxSelected != uint(-1) && saveMode && !autoName) {
 			if (key.keycode != Common::KEYCODE_INVALID) {
 				// Reference means we edit in place
 				Common::String &selectedSaveName = savesList[boxSelected + fileListOffset];
@@ -837,7 +852,11 @@ uint CryOmni3DEngine_Versailles::displayFilePicker(const Graphics::Surface *bgFr
 		}
 	}
 	if (boxSelected != uint(-1)) {
-		saveName = savesList[boxSelected + fileListOffset];
+		if (autoName) {
+			saveName = Common::String::format("AUTO%04d", nextSaveNum);
+		} else {
+			saveName = savesList[boxSelected + fileListOffset];
+		}
 		ConfMan.setInt(_isVisiting ? "visits_list_off" : "saves_list_off", fileListOffset);
 		return boxSelected + fileListOffset + 1;
 	} else {
diff --git a/engines/cryomni3d/versailles/saveload.cpp b/engines/cryomni3d/versailles/saveload.cpp
index c71b6d1e40..1af28bee60 100644
--- a/engines/cryomni3d/versailles/saveload.cpp
+++ b/engines/cryomni3d/versailles/saveload.cpp
@@ -53,8 +53,13 @@ bool CryOmni3DEngine_Versailles::canVisit() const {
 	return Common::File::exists("game0001.sav");
 }
 
-void CryOmni3DEngine_Versailles::getSavesList(bool visit, Common::StringArray &saveNames) {
+void CryOmni3DEngine_Versailles::getSavesList(bool visit, Common::StringArray &saveNames,
+        int &nextSaveNum) {
+	nextSaveNum = 1;
+	bool supportsAutoName = (_messages.size() >= 148);
+
 	char saveName[kSaveDescriptionLen + 1];
+	// Terminate saveName here forever (we don't overrun kSaveDescriptionLen)
 	saveName[kSaveDescriptionLen] = '\0';
 	Common::String pattern = Common::String::format("%s%s.????", _targetName.c_str(),
 	                         visit ? "_visit" : "");
@@ -98,9 +103,34 @@ void CryOmni3DEngine_Versailles::getSavesList(bool visit, Common::StringArray &s
 			num++;
 			Common::InSaveFile *in = _saveFileMan->openForLoading(*file);
 			if (in) {
-				if (in->read(saveName, kSaveDescriptionLen) == kSaveDescriptionLen) {
-					saveNames.push_back(saveName);
+				if (in->read(saveName, kSaveDescriptionLen) != kSaveDescriptionLen) {
+					delete in;
+				}
+
+				Common::String saveNameStr = saveName;
+				if (supportsAutoName && saveNameStr.hasPrefix("AUTO")) {
+					int saveNum = atoi(saveName + 4);
+					if (saveNum >= 1 && saveNum <= 9999) {
+						in->seek(436); // Go to current level
+						uint32 level = in->readUint32BE();
+
+						if (level < 8) {
+							saveNameStr = Common::String::format(_messages[146].c_str(), level);
+						} else {
+							saveNameStr = _messages[147];
+						}
+						saveNameStr += Common::String::format(" - %d", saveNum);
+						if (saveNum >= nextSaveNum) {
+							if (saveNum >= 9999) {
+								nextSaveNum = 9999;
+							} else {
+								nextSaveNum = saveNum + 1;
+							}
+						}
+					}
 				}
+
+				saveNames.push_back(saveNameStr);
 				delete in;
 			}
 		}


Commit: bf215580ddc51e191246f25d3d212b1cca91f2f6
    https://github.com/scummvm/scummvm/commit/bf215580ddc51e191246f25d3d212b1cca91f2f6
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Prepare CJK support for Versailles

Changed paths:
    devtools/create_cryomni3d/versailles.cpp
    devtools/create_cryomni3d/versailles.h
    engines/cryomni3d/versailles/data.cpp
    engines/cryomni3d/versailles/engine.h
    engines/cryomni3d/versailles/logic.cpp


diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp
index e287309566..5955268f40 100644
--- a/devtools/create_cryomni3d/versailles.cpp
+++ b/devtools/create_cryomni3d/versailles.cpp
@@ -102,10 +102,6 @@ size_t writeVersaillesSubtitles16(FILE *fp, Subtitle const *subtitles, uint16 el
         size += writeString16(f, versailles ## lang ## EpilMsg); \
         size += writeString16(f, versailles ## lang ## EpilPwd); \
         \
-        if ((LANG_ ## lang == LANG_JA)) { \
-            assert(VERSAILLES_JA_BOMB_ALPHABET_SIZE + 1 == sizeof(versaillesJABombAlphabet)); \
-            size += writeString16(f, versaillesJABombAlphabet); \
-        } \
         size += writeString16(f, versailles ## lang ## BombPwd); \
         \
         assert(VERSAILLES_MESSAGES_COUNT_CJK == ARRAYSIZE(versailles ## lang ## messages)); \
diff --git a/devtools/create_cryomni3d/versailles.h b/devtools/create_cryomni3d/versailles.h
index e856f08fbf..ed897a2e7c 100644
--- a/devtools/create_cryomni3d/versailles.h
+++ b/devtools/create_cryomni3d/versailles.h
@@ -105,6 +105,7 @@ static char const versaillesESBombPwd[] = "NO ES PODER DE REYES EL ALCANZAR LA P
 static char const versaillesITBombPwd[] = "AI SOVRANI NON E DATO RAGGIUNGERE LA PERFEZIONE";
 
 #define VERSAILLES_MESSAGES_COUNT 146
+#define VERSAILLES_MESSAGES_COUNT_CJK 151
 #define VERSAILLES_PAINTINGS_COUNT 48
 
 static char const *const versaillesFRmessages[] = {
diff --git a/engines/cryomni3d/versailles/data.cpp b/engines/cryomni3d/versailles/data.cpp
index 1220497605..a853885462 100644
--- a/engines/cryomni3d/versailles/data.cpp
+++ b/engines/cryomni3d/versailles/data.cpp
@@ -101,11 +101,18 @@ void CryOmni3DEngine_Versailles::loadStaticData() {
 	// epigraph settings, bomb password
 	_epigraphContent = data->readString16();
 	_epigraphPassword = data->readString16();
+	_bombAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ '";
 	_bombPassword = data->readString16();
 
 	// messages, paintings titles
 	data->readString16Array16(_messages);
-	assert(_messages.size() == 146);
+	if ((getLanguage() == Common::JA_JPN) ||
+	        (getLanguage() == Common::KO_KOR) ||
+	        (getLanguage() == Common::ZH_TWN)) {
+		assert(_messages.size() == 151);
+	} else {
+		assert(_messages.size() == 146);
+	}
 	data->readString16Array16(_paintingsTitles);
 	assert(_paintingsTitles.size() == 48);
 
diff --git a/engines/cryomni3d/versailles/engine.h b/engines/cryomni3d/versailles/engine.h
index 693b9e971f..e2465e64db 100644
--- a/engines/cryomni3d/versailles/engine.h
+++ b/engines/cryomni3d/versailles/engine.h
@@ -558,15 +558,16 @@ private:
 	IMG_CB(88003d);
 	IMG_CB(88003e);
 	IMG_CB(88003f);
-	Common::String _bombPassword;
+	Common::U32String _bombAlphabet; // For Japanese edition
+	Common::U32String _bombPassword;
 	static const uint kBombPasswordSmallLength = 40;
 	static const uint kBombPasswordMaxLength = 60;
 	static const uint16 kBombLettersPos[2][kBombPasswordMaxLength][2];
 	bool handleBomb(ZonFixedImage *fimg);
 	void drawBombLetters(Graphics::ManagedSurface &surface, const Graphics::Surface(&bmpLetters)[28],
 	                     const uint bombPasswordLength,
-	                     const unsigned char (&bombPossibilites)[kBombPasswordMaxLength][5],
-	                     const unsigned char (&bombCurrentLetters)[kBombPasswordMaxLength]);
+	                     const uint32(&bombPossibilites)[kBombPasswordMaxLength][5],
+	                     const byte(&bombCurrentLetters)[kBombPasswordMaxLength]);
 	IMG_CB(88004);
 	IMG_CB(88004b);
 #undef IMG_CB
diff --git a/engines/cryomni3d/versailles/logic.cpp b/engines/cryomni3d/versailles/logic.cpp
index 10e96d1413..e2edad534a 100644
--- a/engines/cryomni3d/versailles/logic.cpp
+++ b/engines/cryomni3d/versailles/logic.cpp
@@ -2930,8 +2930,8 @@ bool CryOmni3DEngine_Versailles::handleBomb(ZonFixedImage *fimg) {
 	bool success = false;
 	Common::RandomSource rnd("VersaillesBomb");
 	Graphics::Surface bmpLetters[28];
-	unsigned char bombPossibilites[60][5];
-	unsigned char bombCurrentLetters[60];
+	uint32 bombPossibilites[60][5];
+	byte bombCurrentLetters[60];
 	Graphics::ManagedSurface tempSurf;
 
 	const uint bombPasswordLength = _bombPassword.size();
@@ -2939,14 +2939,21 @@ bool CryOmni3DEngine_Versailles::handleBomb(ZonFixedImage *fimg) {
 		error("Bomb password is too long");
 	}
 
-	loadBMPs("bomb_%02d.bmp", bmpLetters, 28);
+	uint max = _bombAlphabet.size() - 1;
+	if (getLanguage() != Common::JA_JPN) {
+		// In bitmap mode we only have 28 images
+		assert(max < 28);
+		// BUG: in game the rand is modulo 27
+		max = 26;
+		loadBMPs("bomb_%02d.bmp", bmpLetters, 28);
+	}
 	for (uint i = 0; i < bombPasswordLength; i++) {
-		bombPossibilites[i][0] = toupper(_bombPassword[i]);
+		bombPossibilites[i][0] = _bombPassword[i];
 		for (uint j = 1; j < 5; j++) {
 			bool foundSameLetter;
 			do {
 				foundSameLetter = false;
-				bombPossibilites[i][j] = rnd.getRandomNumberRng('A', 'Z');
+				bombPossibilites[i][j] = _bombAlphabet[rnd.getRandomNumber(max)];
 				for (uint k = 0; k < j; k++) {
 					if (bombPossibilites[i][k] == bombPossibilites[i][j]) {
 						foundSameLetter = true;
@@ -2989,8 +2996,8 @@ bool CryOmni3DEngine_Versailles::handleBomb(ZonFixedImage *fimg) {
 				// Check if password is OK
 				success = true;
 				for (uint i = 0; i < bombPasswordLength; i++) {
-					unsigned char letterChar = bombPossibilites[i][bombCurrentLetters[i]];
-					if (letterChar != _bombPassword[i]) {
+					uint16 letterId = bombPossibilites[i][bombCurrentLetters[i]];
+					if (letterId != _bombPassword[i]) {
 						success = false;
 						break;
 					}
@@ -3122,22 +3129,33 @@ const uint16 CryOmni3DEngine_Versailles::kBombLettersPos[2][kBombPasswordMaxLeng
 
 void CryOmni3DEngine_Versailles::drawBombLetters(Graphics::ManagedSurface &surface,
         const Graphics::Surface(&bmpLetters)[28], const uint bombPasswordLength,
-        const unsigned char (&bombPossibilites)[kBombPasswordMaxLength][5],
-        const unsigned char (&bombCurrentLetters)[kBombPasswordMaxLength]) {
+        const uint32(&bombPossibilites)[kBombPasswordMaxLength][5],
+        const byte(&bombCurrentLetters)[kBombPasswordMaxLength]) {
 	uint table = bombPasswordLength <= kBombPasswordSmallLength ? 0 : 1;
-	for (uint i = 0; i < bombPasswordLength; i++) {
-		unsigned char letterChar = bombPossibilites[i][bombCurrentLetters[i]];
-		uint letterId = 0;
-		if (letterChar >= 'A' && letterChar <= 'Z') {
-			letterId = letterChar - 'A';
-		} else if (letterChar == ' ') {
-			letterId = 26;
-		} else if (letterChar == '\'') {
-			letterId = 27;
+	if (getLanguage() == Common::JA_JPN) {
+		_fontManager.setCurrentFont(1);
+		_fontManager.setTransparentBackground(true);
+		_fontManager.setForeColor(0);
+		_fontManager.setSurface(&surface);
+
+		for (uint i = 0; i < bombPasswordLength; i++) {
+			Common::Rect rct(34, 34);
+			rct.moveTo(kBombLettersPos[table][i][0], kBombLettersPos[table][i][1]);
+			surface.fillRect(rct, 239);
+
+			uint32 letter = bombPossibilites[i][bombCurrentLetters[i]];
+			Common::U32String str(&letter, 1);
+
+			_fontManager.displayStr(rct.left + (34 - _fontManager.getStrWidth(str)) / 2,
+			                        rct.top + 5, str);
+		}
+	} else {
+		for (uint i = 0; i < bombPasswordLength; i++) {
+			uint letterId = _bombAlphabet.find(bombPossibilites[i][bombCurrentLetters[i]]);
+			const Graphics::Surface &letter = bmpLetters[letterId];
+			Common::Point dst(kBombLettersPos[table][i][0], kBombLettersPos[table][i][1]);
+			surface.transBlitFrom(letter, dst);
 		}
-		const Graphics::Surface &letter = bmpLetters[letterId];
-		Common::Point dst(kBombLettersPos[table][i][0], kBombLettersPos[table][i][1]);
-		surface.transBlitFrom(letter, dst);
 	}
 }
 


Commit: 658c4dfa37b87bce52c8a9e04562dd6343479626
    https://github.com/scummvm/scummvm/commit/658c4dfa37b87bce52c8a9e04562dd6343479626
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Handle translations for riddles and bomb

Changed paths:
    engines/cryomni3d/versailles/engine.h
    engines/cryomni3d/versailles/logic.cpp


diff --git a/engines/cryomni3d/versailles/engine.h b/engines/cryomni3d/versailles/engine.h
index e2465e64db..3b6823df96 100644
--- a/engines/cryomni3d/versailles/engine.h
+++ b/engines/cryomni3d/versailles/engine.h
@@ -452,6 +452,8 @@ private:
 	void obj_125();
 	void obj_126();
 	void obj_126hk(Graphics::ManagedSurface &surface);
+	void obj_129();
+	void obj_129hk(Graphics::ManagedSurface &surface);
 	void obj_142();
 	void obj_142hk(Graphics::ManagedSurface &surface);
 
@@ -564,6 +566,7 @@ private:
 	static const uint kBombPasswordMaxLength = 60;
 	static const uint16 kBombLettersPos[2][kBombPasswordMaxLength][2];
 	bool handleBomb(ZonFixedImage *fimg);
+	void handleBombTranslation(Graphics::ManagedSurface &surface);
 	void drawBombLetters(Graphics::ManagedSurface &surface, const Graphics::Surface(&bmpLetters)[28],
 	                     const uint bombPasswordLength,
 	                     const uint32(&bombPossibilites)[kBombPasswordMaxLength][5],
diff --git a/engines/cryomni3d/versailles/logic.cpp b/engines/cryomni3d/versailles/logic.cpp
index e2edad534a..d3d1cb1e75 100644
--- a/engines/cryomni3d/versailles/logic.cpp
+++ b/engines/cryomni3d/versailles/logic.cpp
@@ -106,7 +106,7 @@ void CryOmni3DEngine_Versailles::setupObjects() {
 	SET_OBJECT_CB(112, 126);
 	SET_OBJECT_GENERIC_CB(90, 127, 17);
 	SET_OBJECT(216, 128);
-	SET_OBJECT_GENERIC_CB(32, 129, 18);
+	SET_OBJECT_CB(32, 129);
 	SET_OBJECT(37, 130); // 35
 	SET_OBJECT_GENERIC_CB(134, 131, 19);
 	SET_OBJECT_GENERIC_CB(150, 132, 20);
@@ -192,6 +192,46 @@ void CryOmni3DEngine_Versailles::obj_126hk(Graphics::ManagedSurface &surface) {
 	for (uint i = 0; i < 28; i++) {
 		bmpLetters[i].free();
 	}
+
+	if (_messages.size() <= 148) {
+		return;
+	}
+
+	Common::String &translation = _messages[148];
+
+	if (translation.size() == 0) {
+		return;
+	}
+
+	_fontManager.setCurrentFont(1);
+	_fontManager.setTransparentBackground(true);
+	_fontManager.setForeColor(0);
+	_fontManager.setSurface(&surface);
+	_fontManager.displayStr(9, 424, translation);
+}
+
+void CryOmni3DEngine_Versailles::obj_129() {
+	displayObject(kImagesObjects[18], &CryOmni3DEngine_Versailles::obj_129hk);
+}
+
+void CryOmni3DEngine_Versailles::obj_129hk(Graphics::ManagedSurface &surface) {
+	if (_messages.size() <= 149) {
+		return;
+	}
+
+	Common::String &translation = _messages[149];
+
+	if (translation.size() == 0) {
+		return;
+	}
+
+	surface.fillRect(Common::Rect(0, 455, 640, 480), 247);
+
+	_fontManager.setCurrentFont(8);
+	_fontManager.setTransparentBackground(true);
+	_fontManager.setForeColor(242);
+	_fontManager.setSurface(&surface);
+	_fontManager.displayStr(10, 460, translation);
 }
 
 void CryOmni3DEngine_Versailles::obj_142() {
@@ -3003,6 +3043,7 @@ bool CryOmni3DEngine_Versailles::handleBomb(ZonFixedImage *fimg) {
 					}
 				}
 				if (success) {
+					handleBombTranslation(tempSurf);
 					break;
 				}
 			}
@@ -3020,6 +3061,43 @@ bool CryOmni3DEngine_Versailles::handleBomb(ZonFixedImage *fimg) {
 	return success;
 }
 
+void CryOmni3DEngine_Versailles::handleBombTranslation(Graphics::ManagedSurface &surface) {
+	if (_messages.size() <= 150) {
+		return;
+	}
+
+	Common::String &translation = _messages[150];
+
+	if (translation.size() == 0) {
+		return;
+	}
+
+	surface.fillRect(Common::Rect(0, 430, 640, 480), 247);
+
+	_fontManager.setCurrentFont(1);
+	_fontManager.setTransparentBackground(true);
+	_fontManager.setForeColor(242);
+	_fontManager.setSurface(&surface);
+	uint w = _fontManager.getStrWidth(translation);
+	_fontManager.displayStr((640 - w) / 2, 440, translation);
+
+	g_system->copyRectToScreen(surface.getPixels(), surface.pitch, 0, 0,
+	                           surface.w, surface.h);
+	g_system->updateScreen();
+
+	uint32 end = g_system->getMillis() + 5000;
+	bool exitImg = false;
+	while (!shouldAbort() && !exitImg && g_system->getMillis() < end) {
+		if (pollEvents()) {
+			if (checkKeysPressed() || getCurrentMouseButton() == 1) {
+				exitImg = true;
+			}
+		}
+		g_system->updateScreen();
+		g_system->delayMillis(10);
+	}
+}
+
 const uint16 CryOmni3DEngine_Versailles::kBombLettersPos[2][kBombPasswordMaxLength][2] = {
 	{
 		{26, 91},


Commit: 128f1978bcdc2ba284d9eba13829d41c0bc6e55e
    https://github.com/scummvm/scummvm/commit/128f1978bcdc2ba284d9eba13829d41c0bc6e55e
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add support for Chinese version of Versailles

Changed paths:
    devtools/create_cryomni3d/create_cryomni3d_dat.cpp
    devtools/create_cryomni3d/create_cryomni3d_dat.h
    devtools/create_cryomni3d/versailles.cpp
    devtools/create_cryomni3d/versailles.h
    dists/engine-data/cryomni3d.dat
    engines/cryomni3d/datstream.cpp
    engines/cryomni3d/detection_tables.h
    engines/cryomni3d/versailles/documentation.cpp
    engines/cryomni3d/versailles/engine.cpp
    engines/cryomni3d/versailles/menus.cpp


diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
index acbec44ab9..9f9f93d26e 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
@@ -55,6 +55,7 @@ DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, DE)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, EN)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ES)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, IT)
+DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ZT)
 
 static Parts gamesParts[] = {
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, FR),
@@ -63,6 +64,7 @@ static Parts gamesParts[] = {
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, EN),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, ES),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, IT),
+	GAME_PLATFORM_LANG_PART(Versailles, ALL, ZT),
 };
 
 #define CRYOMNI3D_DAT_VER 1 // 32-bit integer
diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.h b/devtools/create_cryomni3d/create_cryomni3d_dat.h
index f9ae6bdee1..730c0958fb 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.h
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.h
@@ -44,5 +44,6 @@ size_t writeGameHeader(FILE *f, uint32 gameId, uint16 version, uint16 lang, uint
 #define LANG_ES                       MKTAG16('e', 's')
 #define LANG_FR                       MKTAG16('f', 'r')
 #define LANG_IT                       MKTAG16('i', 't')
+#define LANG_ZT                       MKTAG16('z', 't') // ZH_TWN
 
 #endif
diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp
index 5955268f40..94bd058c26 100644
--- a/devtools/create_cryomni3d/versailles.cpp
+++ b/devtools/create_cryomni3d/versailles.cpp
@@ -123,3 +123,4 @@ DEFINE_FUNCS(DE)
 DEFINE_FUNCS(EN)
 DEFINE_FUNCS(ES)
 DEFINE_FUNCS(IT)
+DEFINE_FUNCS_CJK(ZT)
diff --git a/devtools/create_cryomni3d/versailles.h b/devtools/create_cryomni3d/versailles.h
index ed897a2e7c..683848e19f 100644
--- a/devtools/create_cryomni3d/versailles.h
+++ b/devtools/create_cryomni3d/versailles.h
@@ -82,6 +82,13 @@ static char const *const versaillesBRlocalizedFilenames[] = {
 	"credits.BR",
 	"LEB1_BR.WAV",
 };
+static char const *const versaillesZTlocalizedFilenames[] = {
+	"DIALOG1.TW",
+	"tous_doc.TW",
+	"lien_doc.txt",
+	"credits.TW",
+	"LEB1_GB.WAV",
+};
 
 static char const versaillesFREpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
 static char const versaillesFREpilPwd[] = "LELOUPETLATETE";
@@ -95,6 +102,8 @@ static char const versaillesESEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT"
 static char const versaillesESEpilPwd[] = "ELZORROYLAGRULLA";
 static char const versaillesITEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
 static char const versaillesITEpilPwd[] = "LEANATREEILCANE";
+static char const versaillesZTEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
+static char const versaillesZTEpilPwd[] = "FOXANDCRANE";
 
 static char const versaillesFRBombPwd[] = "JEMENVAISMAISLETATDEMEURERATOUJOURS";
 static char const versaillesBRBombPwd[] = "O PODER DE UM REI NAO O TORNA IMORTAL";
@@ -103,6 +112,7 @@ static char const versaillesDEBombPwd[] =
 static char const versaillesENBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 static char const versaillesESBombPwd[] = "NO ES PODER DE REYES EL ALCANZAR LA PERFECCION";
 static char const versaillesITBombPwd[] = "AI SOVRANI NON E DATO RAGGIUNGERE LA PERFEZIONE";
+static char const versaillesZTBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 
 #define VERSAILLES_MESSAGES_COUNT 146
 #define VERSAILLES_MESSAGES_COUNT_CJK 151
@@ -1405,4 +1415,861 @@ static char const *const versaillesITpaintings[] = {
 	"\"Cristo calato dalla Croce\"\rCharles Lebrun",                      /* 47: 45260 */
 };
 
+static char const *const versaillesZTmessages[] = {
+	"\xa5\xd8\xab" "e" "\xb8" "T" "\xa4\xee\xb6" "}" "\xb1\xd2\xb3" "o" ""
+	"\xae\xb0\xaa\xf9\xa1" "C",                                           /*   0 */
+	"\xb3" "o" "\xae\xb0\xaa\xf9\xac" "O" ""
+	"\xc2\xea\xb5\xdb\xaa\xba\xa1" "C",                                   /*   1 */
+	"\xb3" "o" "\xae\xb0\xaa\xf9\xac" "O" ""
+	"\xc2\xea\xb5\xdb\xaa\xba\xa1" "C",                                   /*   2 */
+	"\xb3" "o" "\xad\xd3\xc2" "d" "\xa4" "l" "\xac" "O" ""
+	"\xaa\xc5\xaa\xba\xa1" "C",                                           /*   3 */
+	"\xa7" "A" "\xb5" "L" "\xaa" "k" ""
+	"\xb1\xb5\xc4\xb2\xa8\xec\xa8\xba\xad\xd3\xbb\\\xa4" "l" "\xa1" "C",  /*   4 */
+	"\xb3" "o" "\xb4\xca\xbe\xef\xa4" "l" "\xbe\xf0\xa4" "W" "\xa8" "S" ""
+	"\xa6\xb3\xaa" "F" "\xa6\xe8\xa1" "C",                                /*   5 */
+	"\xb3" "o" "\xa4\xa3\xac" "O" "\xbe\xef\xa4" "l" "\xbe\xf0\xa1" "I",  /*   6 */
+	"\xa4\xd3\xb7" "t" "\xa4" "F" "\xa1" "C",                             /*   7 */
+	"\xb3" "o" "\xad\xd3\xa4" "p" "\xbd" "c" "\xa4" "l" "\xa4" "W" ""
+	"\xc2\xea\xa4" "F" "\xa1" "C",                                        /*   8 */
+	"\xa7" "A" "\xa5" "i" "\xa5" "H" "\xa5\xb4\xb6" "}" ""
+	"\xa8\xba\xae\xb0\xaa\xf9\xa1" "C",                                   /*   9 */
+	"\xa7" "A" "\xbb\xdd\xad" "n" "\xa4" "@" "\xa8\xc7\xaa" "F" ""
+	"\xa6\xe8\xa1" "A" "\xa4" "~" ""
+	"\xaf\xe0\xb1\xb5\xc4\xb2\xa8\xec\xac\xb5\xbc" "u" "\xa1" "C",        /*  10 */
+	"\xb3" "o" "\xad\xd3\xaa\xe1\xb2" "~" "\xac" "O" ""
+	"\xaa\xc5\xaa\xba\xa1" "C",                                           /*  11 */
+	"\xb2" "{" "\xa6" "b" "\xa7" "A" "\xa5" "i" "\xa5" "H" "\xb8" "g" ""
+	"\xb9" "L" "\xa4" "F" "\xa1" "C",                                     /*  12 */
+	"\xa7" "A" "\xa8" "S" "\xa6\xb3\xae\xc9\xb6\xa1\xa4" "F" ""
+	"\xb8\xd1\xae" "c" "\xa7\xca\xa1" "I",                                /*  13 */
+	"\xad" "n" "\xac\xdd\xb9\xcf\xb5" "e" "\xa1" "A" "\xb2" "{" "\xa6" ""
+	"b" "\xa4" "]" "\xa4\xd3\xb1\xdf\xa4" "F" "\xa1" "C",                 /*  14 */
+	"\xb5\xa5\xa4" "@" "\xa4" "U" "\xa1" "I" "\xa7\xe2\xa7" "A" ""
+	"\xaa\xba\xbd" "u" "\xaf\xc1\xa5\xe6\xb5\xb9\xaa\xf9\xa9\xd0\xa1" ""
+	"C",                                                                  /*  15 */
+	"\xa7" "A" "\xb7" "p" "\xa4\xa3\xa8\xec\xa8\xba\xb1" "i" ""
+	"\xaf\xc8\xa1" "C",                                                   /*  16 */
+	"\xa9\xb9\xc3\xc4\xbe\xaf\xae" "v" "\xb3" "B" "\xa1" "C",             /*  17 */
+	"\xc4\xb5\xa7" "i" "\xa1" "G" "\xa7" "A" "\xa5" "i" "\xa5" "H" ""
+	"\xab" "e" "\xa9\xb9\xa6\xb9\xbc" "h" ""
+	"\xaa\xba\xb5\xb2\xa7\xf4\xa6" "a" "\xc2" "I" "\xa1" "A" ""
+	"\xa6\xfd\xac" "O" "\xa7" "A" "\xa9" "|" ""
+	"\xa5\xbc\xa7\xb9\xa6\xa8\xa5" "i" "\xa5" "H" "\xc4" "~" ""
+	"\xc4\xf2\xb6" "i" "\xa6\xe6\xb9" "C" ""
+	"\xc0\xb8\xa9\xd2\xbb\xdd\xaa\xba\xa4" "@" ""
+	"\xa4\xc1\xa6\xe6\xb0\xca\xa1" "C" "\xab\xd8\xc4\xb3\xa7" "A" ""
+	"\xb2" "{" "\xa6" "b" "\xb4" "N" "\xc0" "x" "\xa6" "s" "\xb9" "C" ""
+	"\xc0\xb8\xb6" "i" "\xab\xd7\xa1" "C",                                /*  18 */
+	"\xc4\xb5\xa7" "i" "\xa1" "G" "\xa7" "A" "\xa5" "i" "\xa5" "H" ""
+	"\xab" "e" "\xa9\xb9\xa6\xb9\xbc" "h" ""
+	"\xaa\xba\xb5\xb2\xa7\xf4\xa6" "a" "\xc2" "I" "\xa1" "A" ""
+	"\xa6\xfd\xac" "O" "\xa7" "A" "\xa6\xb3\xa5" "i" "\xaf\xe0\xa9" "|" ""
+	"\xa5\xbc\xa7\xb9\xa6\xa8\xa5" "i" "\xa5" "H" "\xc4" "~" ""
+	"\xc4\xf2\xb6" "i" "\xa6\xe6\xb9" "C" ""
+	"\xc0\xb8\xa9\xd2\xbb\xdd\xaa\xba\xa4" "@" ""
+	"\xa4\xc1\xa6\xe6\xb0\xca\xa1" "C" "\xab\xd8\xc4\xb3\xa7" "A" ""
+	"\xb2" "{" "\xa6" "b" "\xb4" "N" "\xc0" "x" "\xa6" "s" "\xb9" "C" ""
+	"\xc0\xb8\xb6" "i" "\xab\xd7\xa1" "C",                                /*  19 */
+	"\xa7" "A" "\xa4\xa3\xaf\xe0\xb1" "a" "\xb5\xdb\xa4" "@" "\xae" "y" ""
+	"\xbc\xd3\xb1\xe8\xa8\xec\xb3" "B" "\xb6" "]" "\xa1" "I",             /*  20 */
+	"\xb3" "o" "\xb8\xcc\xa8" "S" "\xa6\xb3\xa7" "O" "\xaa\xba\xaa" "F" ""
+	"\xa6\xe8\xa1" "C",                                                   /*  21 */
+	"\xa6" "A" "\xa8\xa3\xa1" "I",                                        /*  22 */
+	"\xa4" "Z" "\xba\xb8\xc1\xc9\xa1\xd0\xae" "c" ""
+	"\xa7\xca\xba\xc3\xb6\xb3",                                           /*  23 */
+	"\xb8\xf4\xa9\xf6\xa4" "Q" "\xa5" "|" "\xae" "c" ""
+	"\xa7\xca\xaa\xba\xb3\xb1\xbf\xd1",                                   /*  24 */
+	"\xb0\xd1\xbe\\\xa4\xe5\xa5\xf3\xb0\xcf",                             /*  25 */
+	"           " "\xc4" "~" "\xc4\xf2\xa5\xbb\xa6\xb8\xb9" "C" ""
+	"\xc0\xb8",                                                           /*  26 */
+	"           " "\xb6" "}" "\xa9" "l" "\xb7" "s" "\xb9" "C" ""
+	"\xc0\xb8",                                                           /*  27 */
+	"           " "\xb8\xfc\xa4" "J" "\xb9" "C" "\xc0\xb8\xb6" "i" ""
+	"\xab\xd7",                                                           /*  28 */
+	"           " "\xc0" "x" "\xa6" "s" "\xa5\xbb\xa6\xb8\xb9" "C" ""
+	"\xc0\xb8",                                                           /*  29 */
+	"           " "\xc5\xe3\xa5\xdc\xa6" "r" "\xb9\xf5\xa1" "G" "\xb6" ""
+	"}" "\xb1\xd2",                                                       /*  30 */
+	"           " "\xc5\xe3\xa5\xdc\xa6" "r" "\xb9\xf5\xa1" "G" ""
+	"\xc3\xf6\xb3\xac",                                                   /*  31 */
+	"           " "\xad\xb5\xbc\xd6\xa1" "G" "\xb6" "}" "\xb1\xd2",       /*  32 */
+	"           " "\xad\xb5\xbc\xd6\xa1" "G" "\xc3\xf6\xb3\xac",          /*  33 */
+	"           " "\xb1" "N" "\xa4" "@" ""
+	"\xad\xba\xad\xb5\xbc\xd6\xbd\xc6\xbb" "s" "\xa6\xdc\xb5" "w" ""
+	"\xba\xd0" "(20 Mb)",                                                 /*  34 */
+	"           " "\xb1" "N" ""
+	"\xa9\xd2\xa6\xb3\xad\xb5\xbc\xd6\xbd\xc6\xbb" "s" "\xa6\xdc\xb5" ""
+	"w" "\xba\xd0" "(92 Mb)",                                             /*  35 */
+	"           " "\xa4\xa3\xb1" "N" "\xad\xb5\xbc\xd6\xbd\xc6\xbb" "s" ""
+	"\xa6\xdc\xb5" "w" "\xba\xd0" "(" "\xb1" "qCD" "\xbc\xbd\xa9\xf1" ""
+	")",                                                                  /*  36 */
+	nullptr,                                                              /*  37 */
+	nullptr,                                                              /*  38 */
+	"\xad\xb5\xb6" "q",                                                   /*  39 */
+	"\xc2\xf7\xb6" "}" "\xb9" "C" "\xc0\xb8",                             /*  40 */
+	"",                                                                   /*  41 */
+	"\xb0\xd1\xc6" "[" "\xab\xb0\xb3\xf9",                                /*  42 */
+	"\xbb" "s" "\xa7" "@" "\xb8" "s",                                     /*  43 */
+	"           " "\xc4" "~" "\xc4\xf2\xa5\xbb\xa6\xb8\xb0\xd1\xb3" "X",  /*  44 */
+	"           " "\xc0" "x" "\xa6" "s" "\xa5\xbb\xa6\xb8\xb0\xd1\xb3" ""
+	"X",                                                                  /*  45 */
+	"           " "\xb8\xfc\xa4" "J" "\xb0\xd1\xb3" "X" "\xb6" "i" ""
+	"\xab\xd7",                                                           /*  46 */
+	nullptr,                                                              /*  47 */
+	"           Omni3D" "\xa1" "G" "\xbc\xd0\xb7\xc7",                    /*  48 */
+	"           Omni3D" "\xa1" "G" "\xba" "C" "\xb3" "t",                 /*  49 */
+	"           Omni3D" "\xa1" "G" "\xb7\xa5\xba" "C" "\xb3" "t",         /*  50 */
+	"           Omni3D" "\xa1" "G" "\xa7\xd6\xb3" "t",                    /*  51 */
+	"           Omni3D" "\xa1" "G" "\xb7\xa5\xa7\xd6\xb3" "t",            /*  52 */
+	"\xbd" "T" "\xa9" "w",                                                /*  53 */
+	"\xa8\xfa\xae\xf8",                                                   /*  54 */
+	"\xaa\xc5\xa5\xd5\xc4\xe6\xa6\xec",                                   /*  55 */
+	"\xb5" "L" "\xc0\xc9\xa6" "W",                                        /*  56 */
+	"\xc4\xb5\xa7" "i" "\xa1" "G" ""
+	"\xb7\xc7\xb3\xc6\xa9\xf1\xb1\xf3\xb3" "o" "\xad\xd3\xb9" "C" ""
+	"\xc0\xb8\xa1" "C",                                                   /*  57 */
+	"\xaa\xf0\xa6" "^",                                                   /*  58 */
+	"\xab\xb0\xb3\xf9",                                                   /*  59 */
+	"\xa6" "^" "\xa5" "D" "\xbf\xef\xb3\xe6",                             /*  60 */
+	"\xa4\xe5\xa5\xf3\xb0\xcf\xba" "K" "\xad" "n",                        /*  61 */
+	"\xab\xb0\xb3\xf9\xa4\xce\xaa\xe1\xb6\xe9\xa6" "a" "\xb9\xcf",        /*  62 */
+	"\xab\xb0\xb3\xf9\xa4\xba\xb3\xa1\xb5\xb2\xba" "c" "\xb9\xcf",        /*  63 */
+	"\xb5" "L" "\xaa" "k" "\xbc" "g" "\xa4" "J" "\xb5" "w" ""
+	"\xba\xd0\xa1" "G" "\xb5" "w" "\xba\xd0\xa4" "w" "\xba\xa1",          /*  64 */
+	nullptr,                                                              /*  65 */
+	"\xa9\xf1\xa4" "J" "\xa5\xfa\xba\xd0\xa4\xf9",                        /*  66 */
+	"\xa9\xf1\xa4" "J" "\xb2\xc4" "%d" "\xb1" "i" ""
+	"\xa5\xfa\xba\xd0\xa4\xf9\xa8\xc3\xab\xf6\xa5\xf4\xa4" "@" ""
+	"\xc1\xe4",                                                           /*  67 */
+	"\xc3\xc0\xb3" "N",                                                   /*  68 */
+	"\xb0\xf5\xac" "F" "\xaa\xcc",                                        /*  69 */
+	"\xae" "c" "\xa7\xca\xa4" "H" "\xad\xfb",                             /*  70 */
+	"\xab\xb0\xb3\xf9\xa4\xa4\xaa\xba\xa5\xcd\xac\xa1",                   /*  71 */
+	"\xab\xb0\xb3\xf9\xa4\xce\xaa\xe1\xb6\xe9",                           /*  72 */
+	"\xac\xf6\xa8\xc6\xaa\xed",                                           /*  73 */
+	"\xaa\xfc\xaa" "i" "\xc3\xb9\xbc" "Q" "\xac" "u",                     /*  74 */
+	"\xab\xb0\xb3\xf9",                                                   /*  75 */
+	"\xac" "W" "\xb4" "Y",                                                /*  76 */
+	"\xb0" "g" "\xae" "c",                                                /*  77 */
+	"\xa9\xd4\xc5" "M" "\xae" "R" "\xbc" "Q" "\xac" "u",                  /*  78 */
+	"\xbe\xef\xa4" "l" "\xb7\xc5\xab\xc7",                                /*  79 */
+	"\xa4\xf4\xa6\xc0\xb0\xcf",                                           /*  80 */
+	"\xba\xf1\xbd\xae\xa4" "j" "\xb9" "D",                                /*  81 */
+	"\xa4" "j" "\xb0\xa8\xb4\\",                                          /*  82 */
+	"\xa4" "p" "\xb0\xa8\xb4\\",                                          /*  83 */
+	"\xaa\xe1\xb6\xe9",                                                   /*  84 */
+	"\xab" "e" "\xae" "x",                                                /*  85 */
+	"\xa4" "j" "\xb9" "B" "\xaa" "e",                                     /*  86 */
+	"\xab" "n" "\xaf\xf3\xa9" "W",                                        /*  87 */
+	"\xa5" "_" "\xaf\xf3\xa9" "W",                                        /*  88 */
+	"\xb0\xea\xa4\xfd\xaa\xba\xb5\xe6\xb6\xe9",                           /*  89 */
+	"\xbb" "R" "\xc6" "U",                                                /*  90 */
+	"\xae\xfc\xac" "v" "\xa4\xa7\xac" "u",                                /*  91 */
+	"\xa6" "u" "\xbd\xc3\xa4\xa7\xb4\xf2",                                /*  92 */
+	"\xc0" "@" "\xa4" "l",                                                /*  93 */
+	"\xb0\xc5\xa4" "M",                                                   /*  94 */
+	"\xaf\xc8",                                                           /*  95 */
+	"\xc3\xf6\xa9\xf3\xc3\xc0\xb3" "N" "\xaa\xba\xa4" "p" "\xa5" "U" ""
+	"\xa4" "l",                                                           /*  96 */
+	"\xa4" "p" "\xc6" "_" "\xb0\xcd" "1",                                 /*  97 */
+	"\xa7\xef\xc5\xdc\xb9" "L" "\xaa\xba\xaf\xc8",                        /*  98 */
+	"\xa7\xcb\xc5\xbc\xaa\xba\xaf\xc8",                                   /*  99 */
+	"\xb1" "q" "\xa4" "p" "\xbd" "c" "\xa4" "l" ""
+	"\xb8\xcc\xae\xb3\xa8\xec\xaa\xba\xaf\xc8",                           /* 100 */
+	"\xc3\xf6\xa9\xf3\xac\xd3\xab\xc7\xa6\xe5\xb2\xce\xaa\xba\xa4" "p" ""
+	"\xa5" "U" "\xa4" "l",                                                /* 101 */
+	"\xc2" "I" "\xbf" "U" "\xaa\xba\xc4\xfa\xc0\xeb",                     /* 102 */
+	"\xc4\xfa\xc0\xeb",                                                   /* 103 */
+	"\xc6" "_" "\xb0\xcd" " ",                                            /* 104 */
+	"\xaf\xf3\xb9\xcf\xa7\xa8",                                           /* 105 */
+	"\xaf\xf3\xb9\xcf\xa7\xa8",                                           /* 106 */
+	"\xb0\xb2\xaf\xf3\xb9\xcf",                                           /* 107 */
+	"\xbc\xd3\xb1\xe8",                                                   /* 108 */
+	"\xb3" "Q" "\xaf" "}" "\xc3" "a" "\xaa\xba\xaf\xf3\xb9\xcf",          /* 109 */
+	"\xa8\xea\xa4" "l",                                                   /* 110 */
+	"\xaa\xf7\xa6\xe2\xaa\xba\xa8\xea\xa4" "l",                           /* 111 */
+	"\xac\xf5\xa6\xe2\xaa\xba\xa8\xea\xa4" "l",                           /* 112 */
+	"\xac\xb4\xb5\xa7",                                                   /* 113 */
+	"\xaf\xc8",                                                           /* 114 */
+	"\xc3\xf6\xa9\xf3\xab\xd8\xbf" "v" "\xaa\xba\xa4" "p" "\xa5" "U" ""
+	"\xa4" "l",                                                           /* 115 */
+	"\xa4" "p" "\xc6" "_" "\xb0\xcd" "2",                                 /* 116 */
+	"Archer(useless!)",                                                   /* 117 */
+	"\xbc\xd6\xc3\xd0",                                                   /* 118 */
+	"\xbc\xb2\xb2" "y" "\xb1\xec",                                        /* 119 */
+	"\xb3\\\xa5" "i" "\xb5\xfd\xa9\xfa",                                  /* 120 */
+	"\xbe\xb1\xb3\xb9\xaa\xba\xa6" "A" "\xbb" "s" "\xab" "~",             /* 121 */
+	"\xa9\xf1\xbe\xb1\xb3\xb9\xaa\xba\xc3" "o" "\xc2" "d",                /* 122 */
+	"\xb3" "q" "\xa9\xb9\xaa\xfc\xaa" "i" "\xc3\xb9\xa4" "p" ""
+	"\xaa\xf9\xaa\xba\xc6" "_" "\xb0\xcd",                                /* 123 */
+	"\xad\xb9\xaa\xab",                                                   /* 124 */
+	"\xc3\xf6\xa9\xf3\xa9" "v" "\xb1\xd0\xaa\xba\xa4" "p" "\xa5" "U" ""
+	"\xa4" "l",                                                           /* 125 */
+	"\xb8" "O" "\xa4\xe5",                                                /* 126 */
+	"\xc3\xf6\xa9\xf3\xac" "F" "\xa9\xb2\xaa\xba\xa4" "p" "\xa5" "U" ""
+	"\xa4" "l",                                                           /* 127 */
+	"\xc3" "Z" "\xa4\xf2\xb5\xa7",                                        /* 128 */
+	"\xb3\xc6\xa7\xd1\xbf\xfd",                                           /* 129 */
+	"\xb1\xe6\xbb\xb7\xc3\xe8",                                           /* 130 */
+	"\xa8" "U" "\xa8\xb9\xb3" "]" "\xad" "p" "\xb9\xcf",                  /* 131 */
+	"\xa8" "U" "\xa8\xb9\xb3" "]" "\xad" "p" "\xb9\xcf",                  /* 132 */
+	"\xc3\xb7\xaf\xc1",                                                   /* 133 */
+	"\xc0" "J" "\xaa\xa9",                                                /* 134 */
+	"\xa4" "p" "\xc6" "_" "\xb0\xcd" "3",                                 /* 135 */
+	"\xa4" "p" "\xc6" "_" "\xb0\xcd" "4",                                 /* 136 */
+	"\xab" "K" "\xba\xe0",                                                /* 137 */
+	"\xab\xb0\xb3\xf9\xb3" "]" "\xad" "p" "\xb9\xcf",                     /* 138 */
+	"\xab\xb0\xb3\xf9\xb3" "]" "\xad" "p" "\xb9\xcf",                     /* 139 */
+	"\xbb\xd5\xbc\xd3\xaa\xba\xc6" "_" "\xb0\xcd",                        /* 140 */
+	"\xb4" "J" "\xa8\xa5",                                                /* 141 */
+	"\xb0" "g" "\xae" "c" "\xb3" "]" "\xad" "p" "\xb9\xcf",               /* 142 */
+	"\xa4" "u" "\xa8\xe3",                                                /* 143 */
+	"\xc3\xc4",                                                           /* 144 */
+	"\xba\xb6\xb7\xc0\xc4\xfa\xc0\xeb\xaa\xba\xb0\xc5\xa4" "l",           /* 145 */
+	"Act %d",                                                             /* 146 */
+	"Visit",                                                              /* 147 */
+	/* These ones are not in messages but it's simpler */
+	nullptr,                                                              /* 148/Epigraph */
+	nullptr,                                                              /* 149/Memo */
+	nullptr,                                                              /* 150/Bomb */
+};
+
+static char const *const versaillesZTpaintings[] = {
+	"\"The Animals entering the Ark\"\rGerolamo Bassano",                 /*  0: 41201 */
+	"\"The Supper at Emmaus\"\rJacopo Bassano",                           /*  1: 41202 */
+	"\"Mary Magdalen at the feet of the Christ",                          /*  2: 41203 */
+	"\"Leaving the Ark\"\rGerolamo Bassano",                              /*  3: 41204 */
+	"\"Striking the Rock\"\rJacopo Bassano",                              /*  4: 41205 */
+	"\"The Battle of Arbelles\"\rJoseph Parrocel",                        /*  5: 41301 */
+	"\"Alexander the Great, Vanquisher of Darisu at the battle of "
+	"Arbelles\"\rLe Bourguignon",                                         /*  6: 41302 */
+	"\"The Combat of Leuze\"\rJoseph Parrocel",                           /*  7: 42401 */
+	"\"Saint Cecilia with an angel holding musical notation\"\rIl "
+	"Domenichino",                                                        /*  8: 42901 */
+	"\"Don Francisco of Moncada\"\rVan Dyck",                             /*  9: 42902 */
+	"\"The young John the Baptist\"\rCarracci",                           /* 10: 42903 */
+	"\"Saint Matthew\"\rValentin",                                        /* 11: 42904 */
+	"\"Render unto Caesar\"\rValentin",                                   /* 12: 42905 */
+	"\"Saint Luke\"\rValentin",                                           /* 13: 42906 */
+	"\"The Mystical Marriage of Saint Catherine\"\r Alessandro Turchi",   /* 14: 42907 */
+	"\"The Meeting of the Drinkers\"\rNicolas Tournier",                  /* 15: 42908 */
+	"\"The Fortune-teller\"\rValentin",                                   /* 16: 42909 */
+	"\"King David playing the Harp\"\rIl Domenichino",                    /* 17: 42910 */
+	"\"Mary Magdalen\"\rIl Domenichino",                                  /* 18: 42911 */
+	"\"Self-portrait\"\rVan Dyck",                                        /* 19: 42912 */
+	"\"Saint John the Evangelist\"\r Valentin",                           /* 20: 42913 */
+	"\"Hagar being helped by an angel\"\rGiovanni Lanfranco",             /* 21: 42914 */
+	"\"Saint Mark\"\rValentin",                                           /* 22: 42915 */
+	"\"Meleager with the head of the boar of Calydon at his "
+	"feet\"\rJacques Rousseau",                                           /* 23: 43090 */ /* BUG: Switched */
+	"\"The King in Roman dress\"\rJean Warin",                            /* 24: 43091 */
+	"\"Atalanta\"\rJacques Rousseau",                                     /* 25: 43092 */
+	"\"Aeneas carrying Anchises\"\rSpada",                                /* 26: 43100 */
+	"\"David and Bethsheba\"\rVeronese",                                  /* 27: 43101 */
+	"\"The Flight into Egypt\"\rGuido Reni",                              /* 28: 43102 */
+	"\"Louis XIV on horseback\"\rPierre Mignard",                         /* 29: 43103 */
+	"\"Royal Magnificence and the Progress of the Beaux "
+	"Arts\"\rHouasse",                                                    /* 30: 43104 */
+	"\"The Sacrifice of Iphigeneia\"\rCharles de La Fosse",               /* 31: 43130 */
+	"\"Bust of Louis XIV\"\rsculpted by Bernini",                         /* 32: 43131 */
+	"\"Diana  discovers Endymion in the arms of Morpheus\"\rGabriel "
+	"Blanchard",                                                          /* 33: 43132 */
+	"\"Saint Peter and the Virgin Mary\"\rIl Guercino",                   /* 34: 43140 */
+	"\"The Disciples at Emmaus\"\rVeronese",                              /* 35: 43141 */
+	"\"The Holy Family\"\rVeronese",                                      /* 36: 43142 */
+	"\"Darius' family at the feet of Alexander\"\rCharles LeBrun",        /* 37: 43143 */
+	"\"Saint John the Baptist\"\rRaphael",                                /* 38: 43144 */
+	"\"Marie de Medici\"\rVan Dyck",                                      /* 39: 43150 */
+	"\"Hercules struggling with Achelous\"\rGuido Reni",                  /* 40: 43151 */
+	"\"The Centaur Nessus carrying away Deianeira\"\rGuido Reni",         /* 41: 43152 */
+	"\"Saint Francis of Assissi comforted after receiving the "
+	"stigmata\"\rSeghers",                                                /* 42: 43153 */
+	"\"Thomiris plunging Cyrus' head in blood\"\rRubens",                 /* 43: 43154 */
+	"\"Hercules Slaying the Hydra\"\rGuido Reni",                         /* 44: 43155 */
+	"\"Hercules in flames \"\rGuido Reni",                                /* 45: 43156 */
+	"\"Portrait of the Prince Palatine & his brother Prince "
+	"Robert\"\rVan Dyck",                                                 /* 46: 43157 */
+	"\"Christ being taken down from the cross\"\rCharles Lebrun",         /* 47: 45260 */
+};
+
+static const Subtitle versaillesZTsubtitles[] = {
+	{
+		"a0_vf.hns", {
+			{
+				75, "\xa4" "Z" "\xba\xb8\xc1\xc9\xab\xb0\xb3\xf9\xa1" "@" "\xb4" "N" ""
+				"\xb9\xb3\xa8\xc8\xa8\xaf\xae" "c" "\xb7\xb5\xa1" "@" "\xb1" "N" ""
+				"\xa6" "b" "\xae" "L" "\xa6\xdc\xae\xc9\xa1" "@" "\xb2" "l" ""
+				"\xa4\xf5\xa8" "R" "\xa4\xd1\xa1" "@" "\xa6" "i" ""
+				"\xac\xb0\xa5\xad\xa6" "a"
+			},
+			{180, ""},
+			{
+				210, "\xb0\xea\xa4\xfd\xbb" "{" "\xac\xb0\xb3" "o" "\xac" "O" "\xa4" "@" ""
+				"\xad\xd3\xba\xc6\xa4" "l" "\xaa\xba\xa4\xdb\xb7" "Q" "\xa1" "A" ""
+				"\xa9" "_" "\xab\xe4\xb2\xa7\xb7" "Q" "\xaa\xba\xb5\xb2\xaa" "G" ""
+				"\x85" "."
+			},
+			{
+				260, "\xb0\xa3\xab" "D" "\xa8\xb9\xa5\xd0\xa5\xce\xba\xc9\xa5" "L" ""
+				"\xa9\xd2\xa6\xb3\xaa\xba\xa4" "O" "\xb6" "q" "\xa1" "@" "\xa7" "_" ""
+				"\xab" "h" "\xb3\xa3\xb1" "N" "\xc2" "k" ""
+				"\xa9\xf3\xb5\xea\xaa\xc5\xa1" "@" "\xa6" "]" ""
+				"\xac\xb0\xae\xc9\xb6\xa1\xa5\xbf\xa6" "b" "\xac" "y" "\xb3" "u" ""
+				"\xa1" "@" "\xa7\xda\xa6" "V" "\xa6" "p" "\xac" "P" ""
+				"\xaf\xeb\xb0\xaa\xb6\xc6\xaa\xba\xb0\xea\xa4\xfd\xac" "D" ""
+				"\xbe\xd4\xa1" "@" "\xa5\xce\xb3\xf2\xc2\xb6\xa6" "b" "\xa5" "L" ""
+				"\xb6" "g" "\xb3\xf2\xaa\xba\xb2\xb3\xac" "P" "\xa1" "@" ""
+				"\xa7\xe4\xa5" "X" "\xc1\xbc\xc3" "D" "\xa9" "M" "\xad" "p" ""
+				"\xb9\xba\xa1" "@" "\xa6\xb3\xbc\xd0\xc3" "D" "\xa1" "A" ""
+				"\xa6\xb3\xc0" "Y" "\xba\xfc\xa1" "@" ""
+				"\xc1\xd9\xa6\xb3\xa5\xec\xaf\xc1\xaa\xba\xb4" "J" "\xa8\xa5\xa1" ""
+				"@" "\xa5\xad\xae\xa7\xa7\xda\xbf" "U" "\xbf" "N" "\xaa\xba\xaf" ""
+				"O" "\xa6" "L" "\xa1" "C" "\xa6\xb6\xa4\xf1\xaf" "S" "\xa9" "M" ""
+				"\xb3\xb1\xbf\xd1\xa1" "C"
+			},
+			{
+				450, "\xb3" "o" "\xaa" "F" "\xa6\xe8\xc5\xaa\xb0" "_" ""
+				"\xa8\xd3\xb9\xb3\xac" "O" "\xba\xc6\xa4" "l" "\xaa\xba\xad" "J" ""
+				"\xa8\xa5\xb6\xc3\xbb" "y" "\xa1" "I" "\xb2" "{" "\xa6" "b" ""
+				"\xa7\xda\xa5\xb2\xb6\xb7\xaa" "A" "\xa8\xcd\xb0\xea\xa4\xfd\xa1" ""
+				"A" "\xa9\xd2\xa5" "H" "\xa7\xda\xb5" "L" "\xaa" "k" "\xb3" "B" ""
+				"\xb2" "z" "\xb3" "o" "\xa5\xf3\xa8\xc6\xa1" "C" ""
+				"\xa9\xd4\xb6\xa9\xbc" "w" "\xa1" "A" "\xa7\xda\xad" "n" "\xa7" "A" ""
+				"\xad" "t" "\xb3" "d" "\xbd\xd5\xac" "d" "\xb3" "o" ""
+				"\xa5\xf3\xa8\xc6\xb1\xa1\xa1" "C" "\xa8\xad\xac\xb0\xb9\xec\xae" ""
+				"c" "\xaa\xba\xa8\xcd\xaa\xcc\xa1" "A" "\xa7" "A" "\xa5" "i" "\xa5" ""
+				"H" "\xa6\xdb\xa5\xd1\xa6" "a" "\xa6" "b" "\xae" "c" ""
+				"\xa4\xa4\xa8\xab\xb0\xca\xa1" "C"
+			},
+			{
+				536, "\xa7" "A" "\xa4" "F" "\xb8\xd1\xab\xb0\xb3\xf9\xa1" "A" "\xbb" "{" ""
+				"\xc3\xd1\xb8\xcc\xad\xb1\xaa\xba\xa4" "H" "\xa9" "M" ""
+				"\xa5\xa6\xaa\xba\xc2\xa7\xb8" "`" "\xa1" "C" "\xa6" "b" ""
+				"\xbd\xd5\xac" "d" "\xae\xc9\xa5\xb2\xb6\xb7\xa4\xa3\xc2" "_" ""
+				"\xa6" "a" "\xb0\xdd\xb0\xdd\xc3" "D" "\xa1" "A" "\xa8\xc3\xa6" "b" ""
+				"\xa7\xe4\xa8\xec\xa5\xf4\xa6\xf3\xa5" "i" ""
+				"\xba\xc3\xaa\xba\xa8\xc6\xb1\xa1\xae\xc9\xa6" "V" ""
+				"\xa7\xda\xb3\xf8\xa7" "i" "\xa1" "C"
+			},
+			{
+				622, "\xa6\xfd\xac" "O" "\xad" "n" "\xa4" "p" "\xa4\xdf\xa1" "I" ""
+				"\xa4\xa3\xad" "n" "\xb4\xb2\xa7" "G" "\xc1\xc1\xa8\xa5\xa1" "A" ""
+				"\xbb\xa1\xa6\xb3\xad\xd3\xba\xc6\xa4" "l" "\xa6" "b" ""
+				"\xab\xc2\xaf\xd9\xb0\xea\xa4\xfd\xa1" "I" "\xa5" "B" "\xa7" "A" ""
+				"\xb0\xca\xa7" "@" "\xad" "n" "\xa7\xd6\xa1" "A" "\xa6" "]" ""
+				"\xac\xb0\xa7" "A" "\xa5" "u" "\xa6\xb3\xa4" "@" ""
+				"\xa4\xd1\xaa\xba\xae\xc9\xb6\xa1" "...."
+			},
+			{690, "\xa4" "K" "\xc2" "I" "\xa5" "b" "\xa1" "C"},
+		}
+	}, /* a0_vf.hns */
+	{
+		"a1_vf.hns", {
+			{
+				150, "\xa4" "Z" "\xba\xb8\xc1\xc9\xa1\xd0\xae" "c" ""
+				"\xa7\xca\xba\xc3\xb6\xb3"
+			},
+			{225, ""},
+			{
+				358, "\xb0\xa1\xa4" "U" "\xa1" "A" "\xae\xc9\xb6\xa1\xa8\xec\xa4" "F" ""
+				"\xa1" "C"
+			},
+			{
+				388, "\xb7\xed\xb0\xea\xa4\xfd\xbf\xf4\xa8\xd3\xae\xc9\xa1" "A" ""
+				"\xad\xba\xae" "u" "\xc2\xe5\xa5\xcd\xb9" "F" "\xa5" "i" ""
+				"\xa9\xf8\xc0\xcb\xac" "d" "\xa5" "L" "\xaa\xba\xb0\xb7\xb1" "d" ""
+				"\xa1" "C"
+			},
+			{
+				440, "\xb0\xa1\xa4" "U" "\xba\xce\xb1" "o" "\xa5" "i" "\xa6" "n" "\xa1" ""
+				"H" "\xb7" "|" "\xc4\xb1\xb1" "o" "\xa4\xd3\xbc\xf6\xb6\xdc\xa1" ""
+				"H" "\xc1\xd9\xac" "O" "\xad" "n" "\xa6" "A" "\xab\xf6\xbc\xaf\xa4" ""
+				"@" "\xa4" "U" "\xa1" "H"
+			},
+			{500, "\xc1\xc2\xc1\xc2\xa1" "A" "\xb9" "F" "\xa5" "i" "\xa9\xf8\xa1" "C"},
+			{
+				510, "\xb9" "L" "\xa5" "h" "\xa8\xe2\xad\xd3\xa4\xeb\xa5" "H" ""
+				"\xa8\xd3\xa1" "A" "\xb0\xa1\xa4" "U" "\xaa\xba\xb0\xb7\xb1" "d" ""
+				"\xb1\xa1\xa7\xce\xb3\xa3\xab\xdc\xa8" "}" "\xa6" "n" "\xa1" "C"
+			},
+			{550, ""},
+			{
+				580, "\xb7\xed\xa8\xb9\xa5\xd0\xb2" "M" "\xac" "~" ""
+				"\xb0\xea\xa4\xfd\xaa\xba\xa4\xe2\xae\xc9\xa1" "A" ""
+				"\xac\xd3\xb1\xda\xaa\xba\xa4" "H" "\xa4" "@" "\xa6" "p" ""
+				"\xa9\xb9\xb1" "`" "\xaa\xba\xa6" "b" "\xa8" "C" ""
+				"\xa4\xd1\xa6\xad\xb1\xe1\xa9\xe8\xb9" "F" "\xa6\xb9\xa6" "a" ""
+				"\xa1" "C" "\xac\xd3\xa4\xd3\xa4" "l" "\xa1" "A" ""
+				"\xb0\xea\xa4\xfd\xaa\xba\xa5" "S" "\xa7\xcc\xa1" "A" "\xa5" "H" ""
+				"\xa4\xce\xbd" "q" "\xa6" "]" "\xa4\xbd\xc0\xef\xa1" "A" ""
+				"\xb3\xa3\xab" "e" "\xa8\xd3\xa5\xd8\xb8" "@" ""
+				"\xb0\xea\xa4\xfd\xb0" "_" "\xa8\xad\xa1" "C"
+			},
+			{713, ""},
+			{
+				750, "\xb6\xe2\xa1" "I" "\xab\xc4\xa4" "l" "\xa1" "A" "\xa7" "A" ""
+				"\xa4\xb5\xa4\xd1\xa6\xad\xa4" "W" "\xad" "n" ""
+				"\xa4\xb0\xbb\xf2\xae\xc9\xad\xd4\xa5" "X" "\xb5" "o" "\xa5" "h" ""
+				"\xc2" "y" "\xaf" "T" "\xa9" "O" "\xa1" "H"
+			},
+			{795, ""},
+		}
+	}, /* a1_vf.hns */
+	{
+		"a2_vf.hns", {
+			{
+				60, "\xa4\xa3\xa1" "A" "\xac\xd3\xa5" "S" "\xa1" "C" "\xa7" "A" ""
+				"\xaa\xba\xb2\xca\xb3\xa5\xa4\xe8\xaa" "k" ""
+				"\xa4\xa3\xaf\xe0\xab\xec\xb4" "_" "\xb0\xea\xa4\xba\xaa\xba\xa9" ""
+				"M" "\xa5\xad\xa1" "C"
+			},
+			{
+				74, "\xb7\xed\xb5" "M" "\xa1" "A" "\xb0\xea\xa4\xfd\xa4" "w" "\xb8" "g" ""
+				"\xb4\xa3\xa8\xec\xad" "n" ""
+				"\xac\xa3\xbb\xba\xa7\xf9\xa9\xd4\xb4\xb5\xa5\xfd\xa5\xcd\xab" "e" ""
+				"\xa5" "h" "\xa8\xa3\xa9\xd4\xa5\xb1\xb4\xb5\xa4\xbd\xc0\xef"
+			},
+			{
+				130, "\xa7\xda\xb8\xf2\xa7" "A" "\xab" "O" "\xb5\xfd\xa1" "A" "\xa5" "L" ""
+				"\xb5" "L" "\xaa" "k" ""
+				"\xa8\xa3\xa8\xec\xa9\xd4\xa5\xb1\xb4\xb5\xa4\xbd\xc0\xef\xa1" "C"
+			},
+			{160, ""},
+			{
+				200, "\xb0\xea\xa4\xfd\xb0" "_" "\xa7\xc9\xbf" "d" "\xac" "~" ""
+				"\xa4\xa7\xab\xe1\xa4\xce\xb4\xc2\xa6\xda\xb6" "i" ""
+				"\xbf\xd6\xa4\xa7\xab" "e" "\xa1" "A" "\xb2" "z" "\xbe" "v" "\xae" ""
+				"v" "\xb7" "|" "\xa5\xfd\xac\xb0\xb0\xea\xa4\xfd\xae\xde\xb2" "z" ""
+				"\xa1" "A" "\xc0\xb9\xa4" "W" "\xb5" "u" "\xb0\xb2\xbe" "v" "\xa1" ""
+				"C"
+			},
+			{307, ""},
+			{
+				360, "\xb5" "M" "\xab\xe1\xb0\xea\xa4\xfd\xab" "K" ""
+				"\xb7\xc7\xb3\xc6\xab" "e" "\xa9\xb9\xa4" "j" "\xc6" "U" "\xa1" "A" ""
+				"\xb6" "i" "\xa6\xe6\xb5\xdb\xb3" "T" "\xbb\xf6\xa6\xa1\xa1" "C"
+			},
+			{406, ""},
+			{
+				440, "\xa9" "^" "\xad\xe3\xaa\xba\xb4\xc2\xa6\xda\xad\xcc\xa5" "i" ""
+				"\xa5" "H" "\xb3\xad\xa6\xf1\xb0\xea\xa4\xfd\xa4" "@" "\xa6" "P" ""
+				"\xa8\xc9\xa5\xce\xa4" "p" "\xc2" "I" "\xa4\xdf\xa1" "C"
+			},
+			{
+				520, "\xa8" "C" "\xad\xd3\xa4" "H" ""
+				"\xb3\xa3\xa7\xc6\xb1\xe6\xb0\xea\xa4\xfd\xaf\xe0\xac\xdd\xa5" "L" ""
+				"\xa4" "@" "\xb2\xb4\xa1" "A" "\xb8\xdf\xb0\xdd\xa5" "L" ""
+				"\xaa\xba\xb0\xb7\xb1" "d" ""
+				"\xb1\xa1\xa7\xce\xa8\xc3\xb2\xe2\xc5\xa5\xa9\xce\xb4\xb2\xbc\xbd\xb7\xed\xa4\xd1\xaa\xba\xc1\xc1\xa8\xa5\xa1" ""
+				"C"
+			},
+			{
+				600, "\xb0\xea\xa4\xfd\xa6" "b" "\xa4\xbd\xb2\xb3\xaa\xba\xaa" "`" ""
+				"\xa5\xd8\xa4\xa7\xa4" "U" "\xa1" "A" "\xa7\xea\xba" "t" ""
+				"\xb5\xdb\xa5" "L" "\xa9\xb9\xb1" "`" ""
+				"\xaa\xba\xa8\xa4\xa6\xe2\xa1" "C" "\xa6\xb3\xa4" "H" ""
+				"\xc0\xb0\xa5" "L" "\xab" "c" "\xc5\xbd\xa1" "A" "\xac" "~" "\xc1" ""
+				"y" "\xa1" "A" "\xb5" "M" "\xab\xe1\xb5\xdb\xb8\xcb\xa1" "C"
+			},
+			{679, ""},
+			{
+				815, "\xb5\xdb\xa6" "n" "\xb8\xcb\xab\xe1\xa1" "A" ""
+				"\xb0\xea\xa4\xfd\xab" "K" "\xa6" "^" "\xa8\xec\xa6\xdb\xa4" "v" ""
+				"\xaa\xba\xb9\xec\xab\xc7\xa1" "A" "\xb0\xb5\xa4" "@" ""
+				"\xad\xd3\xc2\xb2\xb5" "u" "\xaa\xba\xa6\xad\xc3\xab\xa1" "C"
+			},
+			{860, ""},
+			{
+				948, "\xc3\xab\xa7" "i" "\xa4\xa7\xab\xe1\xa1" "A" ""
+				"\xb0\xea\xa4\xfd\xb7" "|" "\xc0" "H" "\xb5\xdb\xa9" "x" ""
+				"\xad\xfb\xa1" "A" "\xab" "e" "\xa9\xb9\xc4\xb3\xb7" "|" "\xc6" "U" ""
+				"\xa1" "A" "\xa6" "b" "\xa8\xba\xb8\xcc\xb0" "Q" ""
+				"\xbd\xd7\xb0\xea\xae" "a" "\xa8\xc6\xb0\xc8\xa1" "C"
+			},
+			{1027, ""},
+		}
+	}, /* a2_vf.hns */
+	{
+		"a3_vf.hns", {
+			{
+				30, "\xb5\xdb\xb3" "T" "\xbb\xf6\xa6\xa1\xb5\xb2\xa7\xf4\xab\xe1\xa1" ""
+				"A" "\xb0\xea\xa4\xfd\xab" "K" "\xab" "e" "\xa9\xb9\xc4\xb3\xb7" ""
+				"|" "\xc6" "U" "\xa1" "C" "\xbb" "P" "\xa9" "x" ""
+				"\xad\xfb\xad\xcc\xb3" "B" "\xb2" "z" "\xb0\xea\xae" "a" ""
+				"\xaa\xba\xa8\xc6\xb0\xc8\xa1" "C"
+			},
+			{
+				110, "\xac\xb0\xbd" "T" "\xab" "O" "\xbe\xf7\xb1" "K" "\xa1" "A" ""
+				"\xa9\xd2\xa6\xb3\xaa\xba\xaa\xf9\xb1" "N" "\xb3" "Q" ""
+				"\xa4\xcf\xc2\xea\xa1" "C" "\xa9" "x" "\xad\xfb\xbf" "c" ""
+				"\xa5\xcb\xab" "K" "\xb6" "}" "\xa9" "l" ""
+				"\xb7\xed\xa4\xd1\xaa\xba\xad\xab\xad" "n" "\xc4\xb3\xc3" "D" ""
+				"\xa1" "C"
+			},
+			{211, ""},
+			{280, "\xa6" "U" "\xa6\xec\xa1" "A" "\xbd\xd0\xa7\xa4\xa1" "I"},
+			{
+				290, "\xb0\xea\xa4\xfd\xb7" "|" "\xb6\xc9\xc5\xa5\xa8\xd3\xa6\xdb\xa6" ""
+				"U" "\xa4\xe8\xa4\xa3\xa6" "P" "\xaa\xba\xb7" "N" "\xa8\xa3\xa1" ""
+				"A" "\xb5" "M" "\xab\xe1\xb0\xb5\xa8" "M" "\xa9" "w" "\xa1" "C" ""
+				"\xa5" "L" "\xb3" "q" "\xb1" "`" "\xb7" "|" "\xb1\xb5\xa8\xfc\xa4" ""
+				"j" "\xa6" "h" "\xbc\xc6\xa4" "H" "\xaa\xba\xb7" "N" "\xa8\xa3\xa1" ""
+				"C"
+			},
+			{
+				360, "\xa6" "b" "\xb3" "o" "\xa6" "P" "\xae\xc9\xa1" "A" ""
+				"\xb2\xb3\xb4\xc2\xa6\xda\xa6" "b" "\xa4" "j" "\xc6" "U" ""
+				"\xa4\xa4\xb5\xa5\xad\xd4\xb0\xea\xa4\xfd\xb2" "{" "\xa8\xad\xa1" ""
+				"C"
+			},
+			{411, ""},
+			{
+				440, "\xa6" "U" "\xa6\xec\xa1" "A" "\xb0\xa1\xa4" "U" "\xbe" "r" ""
+				"\xa8\xec\xa1" "C"
+			},
+			{450, ""},
+			{
+				550, "\xb2" "{" "\xa6" "b" "\xac" "O" ""
+				"\xa4\xa4\xa4\xc8\xae\xc9\xa4\xc0\xa1" "C" "\xb0\xea\xa4\xfd\xa5" ""
+				"h" "\xb0\xd1\xa5" "[" "\xc0\xb1\xbc\xbb\xa1" "C" ""
+				"\xb4\xc2\xa6\xda\xa6" "b" "\xa5" "L" ""
+				"\xaa\xba\xab\xe1\xad\xb1\xb1\xc6\xa6\xa8\xa4" "@" "\xa6" "C" ""
+				"\xa1" "C" "\xb0\xea\xa4\xfd\xa6" "b" "\xa4\xfd\xa4" "l" "\xa9" "M" ""
+				"\xa4\xbd\xa5" "D" "\xaa\xba\xb3\xad\xa6" "P" "\xa4" "U" "\xa1" "A" ""
+				"\xac\xef\xb9" "L" "\xa4" "j" "\xc6" "U" "\xa1" "A" "\xab" "e" ""
+				"\xa9\xb9\xb1\xd0\xb0\xf3\xa1" "C"
+			},
+			{687, ""},
+			{
+				728, "\xa6" "p" "\xaa" "G" "\xb0\xa1\xa4" "U" "\xa4\xaf\xb7" "O" "\xa1" ""
+				"A" "\xc4" "@" "\xb7" "N" "\xac\xdd\xac\xdd\xb3" "o" ""
+				"\xa5\xf7\xbd\xd0\xc4" "@" "\xae\xd1\xa1" "A" "\xbd\xd0\xa8" "D" ""
+				"\xb0\xa1\xa4" "U" "\xac\xb0\xa7\xda\xa8\xba\xa6" "b" ""
+				"\xa4\xa3\xa4\xbd\xaa\xba\xbc" "f" "\xa7" "P" "\xa4\xa4\xa1" "A" ""
+				"\xa6\xa8\xac\xb0\xc4\xeb\xac\xb9\xaa\xcc\xaa\xba\xa8\xe0\xa4" "l" ""
+				"\xa6\xf9\xad\xde\xa1" "C"
+			},
+			{
+				805, "\xa7\xda\xad\xcc\xb7" "|" "\xaa" "`" "\xb7" "N" "\xb3" "o" ""
+				"\xa5\xf3\xa8\xc6\xa1" "A" "\xa5\xfd\xa5\xcd\xa1" "A" ""
+				"\xa7\xda\xad\xcc\xb7" "|" "\xaa" "`" "\xb7" "N"
+			},
+			{840, ""},
+			{
+				1060, "\xb0\xea\xa4\xfd\xa6" "b" "\xac\xd3\xae" "a" "\xaa\xf8\xb4" "Y" ""
+				"\xa4\xa4\xaf\xb8\xa9" "w" "\xa1" "A" "\xa4\xfd\xa4" "l" "\xa9" "M" ""
+				"\xa4\xbd\xa5" "D" "\xa8\xcc\xb6\xa5\xbc" "h" ""
+				"\xa5\xfd\xab\xe1\xaf\xb8\xa6" "b" "\xa5" "L" ""
+				"\xaa\xba\xab\xe1\xad\xb1\xa1" "C" "\xb0\xea\xa4\xfd\xc4" "Y" ""
+				"\xb8" "T" "\xa5\xe6\xbd\xcd\xa8\xc3\xad" "n" "\xa8" "D" "\xa5" "L" ""
+				"\xad\xcc\xb0" "@" "\xb7" "q" "\xa1" "C"
+			},
+			{1220, ""},
+		}
+	}, /* a3_vf.hns */
+	{
+		"a4_vf.hns", {
+			{
+				90, "\xa6" "b" "\xc0\xb1\xbc\xbb\xae\xc9\xa1" "A" "\xac\xd3\xae" "a" ""
+				"\xbc" "p" "\xa9\xd0\xaa\xba\xa9" "x" "\xad\xfb\xa1" "A" "\xaf" "N" ""
+				"\xa6\xd7\xa6" "K" "\xa1" "A" "\xc4\xd1\xa5" "]" "\xae" "v" ""
+				"\xb3\xc5\xa9" "M" "\xa5" "L" "\xad\xcc\xaa\xba\xa7" "U" ""
+				"\xa4\xe2\xa5\xbf\xa6\xa3\xb5\xdb\xb7\xc7\xb3\xc6\xc0\\\xc2" "I" ""
+				"\xa1" "C"
+			},
+			{
+				200, "\xb0\xea\xa4\xfd\xaa\xba\xad" "G" "\xa4" "f" "\xab\xdc\xa4" "j" ""
+				"\xa1" "A" "\xa6\xd3\xb0\xea\xa4\xfd\xa8" "S" "\xa6\xb3\xa6" "Y" ""
+				"\xa7\xb9\xaa\xba\xad\xb9\xaa\xab\xab" "h" "\xb7" "|" "\xaf" "d" ""
+				"\xb5\xb9\xa5" "L" "\xa4" "H" "\xad\xb9\xa5\xce\xa1" "A" ""
+				"\xa6\xd3\xa4" "@" "\xaf\xeb\xa4" "H" "\xa4" "]" "\xa4\xa3\xb7" "|" ""
+				"\xac\xdd\xa4\xa3\xb0" "_" "\xa6" "V" "\xbc" "p" ""
+				"\xa9\xd0\xc1\xca\xb6" "R" "\xb3\xd1\xbe" "l" "\xb5\xe6\xc0" "a" ""
+				"\xaa\xba\xa6\xe6\xac\xb0\xa1" "C"
+			},
+			{300, ""},
+			{
+				320, "\xa4\xbd\xb6" "}" "\xa5\xce\xc0\\\xac" "O" "\xa5\xf3\xa4" "j" ""
+				"\xa8\xc6\xa1" "A" ""
+				"\xa9\xd2\xa6\xb3\xaa\xba\xb4\xc2\xa6\xda\xb3\xa3\xb7" "|" ""
+				"\xbb\xb0\xa5" "h" "\xb0\xd1\xa5" "["
+			},
+			{
+				366, "\xa6" "U" "\xa6\xec\xa5\xfd\xa5\xcd\xa1" "A" "\xb0\xa1\xa4" "U" ""
+				"\xa5\xce\xc0\\\xa1" "C"
+			},
+			{393, ""},
+			{
+				610, "\xa5" "u" "\xa6\xb3\xac\xd3\xab\xc7\xaa\xba\xa4" "H" "\xa5" "i" ""
+				"\xa5" "H" "\xa9" "M" "\xb0\xea\xa4\xfd\xa6" "P" "\xa7\xa4\xa1" "A" ""
+				"\xa6\xd3\xa5" "B" "\xa5" "u" "\xa6\xb3\xa4" "k" ""
+				"\xa4\xbd\xc0\xef\xa5" "i" "\xa5" "H" "\xa7\xa4\xa6" "b" "\xa5" "L" ""
+				"\xaa\xba\xad\xb1\xab" "e" "\xa1" "C"
+			},
+			{685, ""},
+			{
+				705, "\xb6\xe2\xa1" "A" "\xab\xc4\xa4" "l" "\xa1" "A" "\xa7" "A" ""
+				"\xb7\xc7\xb3\xc6\xac\xb0\xa7\xda\xad\xcc\xaa\xed\xba" "t" "\xc3" ""
+				"M" "\xb3" "N" "\xb6\xdc\xa1" "H"
+			},
+			{747, ""},
+			{
+				760, "\xa6" "b" "\xa5\xce\xc0\\\xae\xc9\xa1" "A" "\xa6\xb3\xa4" "T" ""
+				"\xb9" "D" "\xb5" "{" "\xa7\xc7\xa1" "A" "\xa8" "C" "\xa4" "@" ""
+				"\xb9" "D" "\xb3\xa3\xa6\xb3\xa4\xbb\xb9" "D" "\xa4\xa3\xa6" "P" ""
+				"\xaa\xba\xb5\xe6\xc0" "a" "\xa1" "G" "\xb4\xf6\xa9" "M" "\xb6" "}" ""
+				"\xad" "G" "\xb5\xe6\xa1" "A" "\xaf" "N" "\xa6\xd7\xa9" "M" "\xc2" ""
+				"I" "\xa4\xdf"
+			},
+			{847, ""},
+		}
+	}, /* a4_vf.hns */
+	{
+		"a5_vf.hns", {
+			{13, "\xc0\\\xab\xe1\xa6\xb3\xa4\xf4\xaa" "G...." "\xa1" "A....."},
+			{36, ""},
+			{
+				90, "\xa4\xa7\xab\xe1\xb0\xea\xa4\xfd\xaa\xe1\xbc\xc6\xa4" "p" ""
+				"\xae\xc9\xaa\xba\xae\xc9\xb6\xa1\xa8\xd3\xb3" "B" "\xb2" "z" ""
+				"\xb0\xea\xae" "a" "\xa8\xc6\xb0\xc8\xa1" "C" "\xa6" "b" "\xb3" "o" ""
+				"\xac" "q" "\xae\xc9\xb6\xa1\xa4\xba\xa1" "A" "\xa5" "L" ""
+				"\xb3\xdf\xc5" "w" "\xa6" "b" "\xb0\xd2\xaf" "S" ""
+				"\xbb\xfa\xa4\xd2\xa4" "H" "\xaa\xba\xa9\xd0\xa4" "l" ""
+				"\xb8\xcc\xbf\xec\xa4\xbd\xa1" "A" ""
+				"\xa6\xb3\xa8\xc7\xae\xc9\xad\xd4\xb7" "|" "\xa6\xb3\xa9" "x" ""
+				"\xad\xfb\xb3\xad\xa6\xf1\xa1" "C"
+			},
+			{
+				200, "\xb3" "o" "\xad\xd3\xbb" "P" "\xa5" "L" "\xaf\xb5\xb1" "K" ""
+				"\xa6\xa8\xb1" "B" "\xa4" "k" "\xa4" "H" "\xaa\xba\xa9\xd0\xa4" "l" ""
+				"\xb8\xcc\xa1" "A" "\xa5" "L" "\xb7" "P" ""
+				"\xa8\xfc\xa8\xec\xa5\xad\xc0" "R" "\xa4\xce\xb7\xc5\xb7" "x" ""
+				"\xa1" "A" "\xb3" "o" "\xa5\xbf\xac" "O" "\xa5" "L" "\xa4" "u" ""
+				"\xa7" "@" "\xae\xc9\xa9\xd2\xbb\xdd\xad" "n" "\xaa\xba\xa1" "C"
+			},
+			{296, ""},
+			{
+				310, "\xb0\xea\xa4\xfd\xa5\xce\xa4" "T" "\xad\xd3\xa4" "p" ""
+				"\xae\xc9\xaa\xba\xae\xc9\xb6\xa1\xb8\xd4\xb2\xd3\xac" "d" ""
+				"\xac\xdd\xa6" "U" "\xb6\xb5\xa8\xc6\xb0\xc8"
+			},
+			{345, ""},
+			{
+				360, "\xb9\xef\xb4\xc2\xa6\xda\xa6\xd3\xa8\xa5\xa1" "A" "\xb3" "o" ""
+				"\xac" "O" "\xa4" "@" "\xa4\xd1\xb7\xed\xa4\xa4\xa5" "L" ""
+				"\xad\xcc\xa4\xa3\xb6\xb7\xb9\xb3\xb0\xea\xa4\xfd\xaa\xba\xbc" "v" ""
+				"\xa4" "l" "\xa4" "@" "\xbc\xcb\xa1" "A" "\xc0" "H" ""
+				"\xae\xc9\xb8\xf2\xb5\xdb\xb0\xea\xa4\xfd\xa8" "C" "\xa4" "@" ""
+				"\xa8" "B" "\xa6\xe6\xb0\xca\xaa\xba\xae\xc9\xa8\xe8\xa1" "C"
+			},
+			{
+				460, "\xa6\xb3\xa8\xc7\xa4" "H" "\xaa\xb1\xb5" "P" "\xa1" "C" "\xb5" "P" ""
+				"\xae\xe0\xa5" "i" "\xa5" "H" "\xb4\xa3\xa8\xd1\xa4" "@" ""
+				"\xa8\xc7\xa6\xac\xa4" "J" "\xa1" "A" "\xa6\xb3\xa8\xc7\xa4" "H" ""
+				"\xb7" "|" "\xb2" "@" "\xa4\xa3\xb5" "S" "\xbf\xdd\xa6" "a" "\xab" ""
+				"_" "\xb5\xdb\xa5\xa2\xc3" "d" "\xaa\xba\xa6" "M" "\xc0" "I" "\xa5" ""
+				"X" "\xa6\xd1\xa4" "d" "\xa1" "C"
+			},
+			{560, ""},
+			{
+				665, "\xa8\xe4\xa5" "L" "\xa4" "H" "\xab" "h" "\xb1" "q" "\xa8\xc6\xa4" ""
+				"@" "\xa8\xc7\xbb\xdd\xad" "n" ""
+				"\xa7\xde\xa5\xa9\xaa\xba\xac\xa1\xb0\xca\xa1" "A" "\xa6" "p" ""
+				"\xbc\xb2\xb2" "y" "\xb5\xa5\xa1" "C" "\xa6\xfd\xac" "O" "\xa4" "~" ""
+				"\xb5\xd8\xac" "v" "\xb7\xb8\xaa\xba\xb9\xef\xb8\xdc\xac" "O" ""
+				"\xa4" "Z" "\xba\xb8\xb6\xeb\xae" "c" ""
+				"\xa4\xa4\xb3\xcc\xa8\xfc\xb3\xdf\xb7" "R" "\xaa\xba\xae" "T" ""
+				"\xbc\xd6"
+			},
+			{766, ""},
+		}
+	}, /* a5_vf.hns */
+	{
+		"a6_vf.hns", {
+			{
+				45, "\xb1\xb5\xaa\xf1\xa4" "U" "\xa4\xc8\xa4\xad\xc2" "I" ""
+				"\xc4\xc1\xaa\xba\xae\xc9\xad\xd4\xa1" "A" "\xb5\xb2\xa7\xf4\xa4" ""
+				"@" "\xa4\xd1\xaa\xba\xa4" "u" "\xa7" "@" "\xa1" "A" ""
+				"\xb0\xea\xa4\xfd\xb7" "|" ""
+				"\xa8\xec\xaa\xe1\xb6\xe9\xb8\xcc\xb4\xb2\xa8" "B" ""
+				"\xa8\xc3\xb0\xd1\xc6" "[" "\xa6" "U" "\xad\xd3\xae" "x" "\xb0" "| "
+				""
+			},
+			{
+				90, "..." "\xa5" "L" "\xa5" "[" "\xa4" "J" "\xa6" "b" "\xa4" "j" "\xb2" ""
+				"z" "\xa5\xdb\xae" "x" "\xb0" "|" "\xb5\xa5\xad\xd4\xa5" "L" ""
+				"\xaa\xba\xb4\xc2\xa6\xda\xa1" "C"
+			},
+			{160, ""},
+			{
+				170, "\xa5" "u" "\xa6\xb3\xc0\xf2\xb1" "o" "\xaf" "S" ""
+				"\xb3\\\xaa\xba\xa4" "H" "\xa4" "~" "\xaf\xe0\xbb" "P" ""
+				"\xb0\xea\xa4\xfd\xa4" "@" "\xa6" "P" "\xb4\xb2\xa8" "B" "\xa1" "C"
+			},
+			{208, ""},
+			{
+				295, "\xa4" "H" "\xb8" "s" "\xac\xef\xb9" "L" "\xa7" "C" "\xaa\xf8\xb4" ""
+				"Y" "\xa1" "A" "\xa8\xab\xa6" "V" "\xae" "x" "\xb0" "|" "\xa1" "A" ""
+				"\xb5" "M" "\xab\xe1\xab" "e" ""
+				"\xa9\xb9\xa4\xf4\xa6\xc0\xaf\xf3\xa9" "W" "\xa1" "A" "\xa6" "b" ""
+				"\xa8\xba\xb8\xcc\xb0\xea\xa4\xfd\xb3\xdf\xc5" "w" "\xaa\xe1\xa4" ""
+				"@" "\xa8\xc7\xae\xc9\xb6\xa1\xaa" "Y" ""
+				"\xbd\xe0\xab\xb0\xb3\xf9\xaa\xba\xb4\xba\xc6" "[" "\xa1" "C"
+			},
+			{
+				430, "\xb1" "q" "\xbe\xef\xb6\xe9\xa8\xec\xac" "W" "\xb4" "Y" "\xa1" "A" ""
+				"\xb0\xea\xa4\xfd\xa5" "J" "\xb2\xd3\xb9\xee\xac\xdd\xa8" "C" ""
+				"\xb6\xb5\xa4" "u" "\xa7" "@" "\xb6" "i" ""
+				"\xa6\xe6\xa4\xa4\xaa\xba\xb1\xa1\xa7\xce\xa1" "C"
+			},
+			{492, ""},
+			{
+				945, "\xb0\xd1\xb3" "X" "\xa6" "b" "\xa4" "p" ""
+				"\xab\xc2\xa5\xa7\xb4\xb5\xb5\xb2\xa7\xf4\xa1" "C" ""
+				"\xb0\xea\xa4\xfd\xb1" "q" "\xb9" "D" "\xa9" "_" ""
+				"\xab\xb0\xa7\xe4\xa8\xd3\xa5\xad\xa9\xb3\xb2\xee\xaa\xba\xb2\xee\xa4\xd2\xa1" ""
+				"A" "\xa6" "b" "\xa4\xd1\xae\xf0\xa8" "}" "\xa6" "n" ""
+				"\xaa\xba\xae\xc9\xad\xd4\xa1" "A" "\xa5" "L" "\xad\xcc\xb4" "N" ""
+				"\xb7" "|" "\xb1" "a" "\xb5\xdb\xae" "c" "\xa7\xca\xaa\xba\xa4" "H" ""
+				"\xa6" "b" "\xb9" "B" "\xaa" "e" "\xa4" "W" "\xaf\xe8\xa6\xe6\xa1" ""
+				"C"
+			},
+		}
+	}, /* a6_vf.hns */
+	{
+		"a7_vf.hns", {
+			{
+				40, "\xa6" "b" "\xae" "L" "\xa4\xd1\xb1\xdf\xa4" "W" "\xa1" "A" ""
+				"\xb2\xb3\xa4" "H" "\xac\xd2\xaa\xbe\xad" "n" "\xa6" "b" ""
+				"\xaa\xe1\xb6\xe9\xaa\xba\xa4" "p" "\xbe\xf0\xc2" "O" ""
+				"\xb6\xa1\xa5\xce\xab" "K" "\xc0\\\xa8\xd3\xa8\xfa\xa5" "N" ""
+				"\xb1\xdf\xc0\\\xa1" "C"
+			},
+			{107, ""},
+			{
+				198, "\xb5" "M" "\xab\xe1\xa1" "A" "\xb7\xed\xa9" "]" ""
+				"\xb1\xdf\xa8\xd3\xc1" "{" "\xae\xc9\xa1" "A" ""
+				"\xa9\xd2\xa6\xb3\xa4" "H" "\xb3\xa3\xa6" "^" ""
+				"\xab\xb0\xb3\xf9\xb0\xd1\xa5" "[" "\xb0\xea\xa4\xfd\xaa\xba\xb4" ""
+				"N" "\xb9\xec\xbb\xf6\xa6\xa1\xa1" "C"
+			},
+			{245, ""},
+			{
+				355, "\xa4" "k" "\xa4" "h" "\xa4\xa3\xaf\xe0\xb0\xd1\xa5" "[" ""
+				"\xb0\xea\xa4\xfd\xaa\xba\xb4" "N" "\xb9\xec\xbb\xf6\xa6\xa1\xa1" ""
+				"A" "\xa4" "]" "\xa4\xa3\xb7" "|" "\xc0\xf2\xc1\xdc\xb0\xd1\xa5" ""
+				"[" "\xb0" "_" "\xa7\xc9\xa9" "M" "\xb5\xdb\xb3" "T" "\xc2\xa7\xa1" ""
+				"C" "\xb0\xea\xa4\xfd\xa5" "l" "\xb6\xb0\xa6" "o" "\xad\xcc\xab" ""
+				"e" "\xa9\xb9\xa4" "j" "\xc6" "U" "\xa1" "A" "\xa6" "V" "\xa6" "o" ""
+				"\xad\xcc\xb9" "D" "\xb1\xdf\xa6" "w" "\xa1" "C"
+			},
+			{442, ""},
+			{
+				454, "\xa4" "k" "\xa4" "h" "\xad\xcc\xa1" "A" "\xa7\xc6\xb1\xe6\xa6" "b" ""
+				"\xb3" "o" "\xa9" "]" "\xb1\xdf\xae\xc9\xa4\xc0\xa1" "A" "\xac" "O" ""
+				"\xbe" "A" "\xa6" "X" "\xa7" "A" ""
+				"\xad\xcc\xa5\xf0\xae\xa7\xaa\xba\xae\xc9\xb6\xa1\xa1" "C"
+			},
+			{512, ""},
+			{
+				647, "\xb5" "M" "\xab\xe1\xb4" "N" "\xb9\xec\xbb\xf6\xa6\xa1\xab" "K" ""
+				"\xa5\xbf\xa6\xa1\xb6" "}" "\xa9" "l" "\xa1" "C" "\xa6\xad\xa4" "W" ""
+				"\xb0\xd1\xa5" "[" "\xb5\xdb\xb3" "T" ""
+				"\xc2\xa7\xaa\xba\xb4\xc2\xa6\xda\xa5\xb2\xb5" "M" "\xb7" "|" ""
+				"\xa8\xd3\xb0\xd1\xa5" "[" "\xb4" "N" ""
+				"\xb9\xec\xbb\xf6\xa6\xa1\xa1" "C"
+			},
+			{722, ""},
+			{
+				733, "\xad" "n" "\xbd\xd0\xbd\xd6\xb0\xf5\xc0\xeb\xa9" "O" "\xa1" "A" ""
+				"\xb0\xa1\xa4" "U" "\xa1" "H"
+			},
+			{763, ""},
+			{
+				925, "\xb0\xea\xa4\xfd\xa8" "C" "\xa4\xd1\xaa\xba\xa6\xe6\xb0\xca\xac" ""
+				"O" "\xa4" "@" "\xba\xd8\xac\xb0\xb0\xaa\xa9" "|" ""
+				"\xaa\xba\xaa\xed\xb2" "{" "\xa1" "C" "\xa6" "b" "\xa5" "L" "\xa4" ""
+				"W" "\xa7\xc9\xae\xc9\xac\xb0\xa5" "L" ""
+				"\xae\xb3\xc4\xfa\xc0\xeb\xaa\xba\xc5" "v" "\xa7" "Q" "\xa1" "A" ""
+				"\xb7" "|" "\xbd\xe7\xb5\xb9\xa6" "a" "\xa6\xec\xaf" "S" ""
+				"\xae\xed\xaa\xba\xa4" "H" "\xa1" "A" "\xb3" "q" "\xb1" "`" "\xac" ""
+				"O" "\xa8\xd3\xb3" "X" "\xaa\xba\xa5" "~" "\xbb\xab"
+			},
+			{1048, ""},
+			{
+				1060, "\xa6" "]" "\xa6\xb9\xa5" "L" "\xb4" "N" "\xc0\xf2\xb1" "o" ""
+				"\xb3\xad\xa6\xf1\xb0\xea\xa4\xfd\xab" "e" "\xa9\xb9\xb9\xec\xae" ""
+				"c" "\xaa\xba\xc5" "v" "\xa7" "Q" "\xa1" "C"
+			},
+			{1100, ""},
+			{
+				1115, "\xa6\xfd\xac" "O" "\xa1" "A" "\xb4" "N" "\xa6" "b" "\xb3" "o" ""
+				"\xa4\xd1\xb1\xdf\xa4" "W...."
+			},
+			{1135, ""},
+			{
+				1188, "\xa4\xf5\xa1" "I" "\xa4\xf5\xa1" "I" "\xa9\xd4\xb6\xa9\xbc" "w" ""
+				"\xa1" "A" "\xb9" "L" "\xa8\xd3\xa1" "A" "\xaa\xfd\xa4\xee\xb3" "o" ""
+				"\xad\xd3\xba\xc6\xa4" "l" "\xa1" "I"
+			},
+			{
+				1230, " " "\xa6" "U" "\xa6\xec\xa1" "A" "\xa5" "v" "\xa5" "[" ""
+				"\xa9\xac\xb7\xe7\xa9\xd4\xab" "J" "\xc0\xef\xa6" "V" "\xa4" "j" ""
+				"\xae" "a" "\xb9" "D" "\xb1\xdf\xa6" "w" "\xa1" "C"
+			},
+		}
+	}, /* a7_vf.hns */
+	{
+		"a8_vf.hns", {
+			{
+				212, "\xa7" "Y" "\xa8\xcf\xac" "O" "\xa6" "b" "\xb9\xda\xa4\xa4\xa1" "A" ""
+				"\xbd\xd6\xaf\xe0\xb1\xb5\xa8\xfc\xa4" "@" "\xad\xd3\xba\xc6\xa4" ""
+				"l" "\xb3\xba\xb5" "M" "\xaf\xe0\xb0\xf7\xb7\xb4\xb1\xbc\xb3" "o" ""
+				"\xae" "y" "\xab\xb0\xb3\xf9\xa9" "O" "\xa1" "H" "\xa6" "A" ""
+				"\xb8\xd5\xa4" "@" "\xa6\xb8\xa7" "a" "\xa1" "I" "\xb2" "{" "\xa6" ""
+				"b" "\xa4\xa3\xb0\xb5\xa1" "A" "\xb4" "N" "\xa5\xc3\xbb\xb7\xa8" ""
+				"S" "\xa6\xb3\xbe\xf7\xb7" "|" "\xa4" "F" "\xa1" "C"
+			},
+			{320, ""},
+		}
+	}, /* a8_vf.hns */
+	{
+		"a9_vf.hns", {
+			{
+				30, "\xa9\xd4\xb6\xa9\xbc" "w" "\xa1" "A" "\xa7\xda\xa4" "w" "\xb8" "g" ""
+				"\xa6" "V" "\xb0\xea\xa4\xfd\xb3\xf8\xa7" "i" "\xa7" "A" ""
+				"\xbc\xf6\xa4\xdf\xb3" "B" "\xb2" "z" "\xb3" "o" ""
+				"\xa5\xf3\xa8\xc6\xaa\xba\xba" "A" "\xab\xd7\xa4" "F" "\xa1" "C" ""
+				"\xb0\xea\xa4\xfd\xad" "n" "\xa7\xda\xa6" "V" "\xa7" "A" ""
+				"\xaa\xed\xa5\xdc\xb7" "q" "\xb7" "N" "\xa1" "C"
+			},
+			{125, ""},
+			{
+				200, "\xa8\xb9\xa5\xd0\xa5\xfd\xa5\xcd\xa7" "i" "\xb6" "D" ""
+				"\xa7\xda\xad\xcc\xa9\xd2\xa6\xb3\xa7" "A" "\xb8" "g" ""
+				"\xbe\xfa\xb9" "L" "\xaa\xba\xa8\xc6\xa1" "C"
+			},
+			{
+				300, "\xa7\xda\xa5\xad\xc0" "R" "\xa6" "a" "\xac\xdd\xb5\xdb\xb3" "o" ""
+				"\xa4\xa3\xa5\xad\xa4" "Z" "\xaa\xba\xa4" "@" ""
+				"\xa4\xd1\xb5\xb2\xa7\xf4\xa1" "A" ""
+				"\xa5\xa6\xc0\xb3\xb8\xd3\xa9\xf1\xa6" "b" ""
+				"\xa4\xeb\xa5\xfa\xa4\xa7\xa4" "U" "\xa1" "A" ""
+				"\xa6\xd3\xa4\xa3\xac" "O" "\xa9\xf1\xa6" "b" ""
+				"\xb6\xa7\xa5\xfa\xa4\xa7\xa4" "U" "\xa1" "C"
+			},
+			{
+				400, "\xc1\xd9\xac" "O" "\xa6\xb3\xa4" "@" ""
+				"\xa8\xc7\xaf\xab\xaf\xb5\xa5\xbc\xb8\xd1\xa1" "C" "\xa6\xfd\xac" ""
+				"O" "\xa1" "A" "\xa5\xfd\xa5\xcd\xa1" "A" "\xb5" "L" "\xbd\xd7\xa7" ""
+				"A" "\xa8\xec\xa8\xba\xb8\xcc\xa1" "A" "\xa7" "A" "\xb3\xa3\xb0" ""
+				"t" "\xba\xd9\xac\xb0\xac" "O" "\xa7\xda\xad\xcc\xaa\xba\xaf" "S" ""
+				"\xa8\xcf\xa1" "C"
+			},
+			{515, ""},
+		}
+	}, /* a9_vf.hns */
+};
+
 #endif
diff --git a/dists/engine-data/cryomni3d.dat b/dists/engine-data/cryomni3d.dat
index ab05c86869..4e28d4d476 100644
Binary files a/dists/engine-data/cryomni3d.dat and b/dists/engine-data/cryomni3d.dat differ
diff --git a/engines/cryomni3d/datstream.cpp b/engines/cryomni3d/datstream.cpp
index e701d1d0d4..dd6e596365 100644
--- a/engines/cryomni3d/datstream.cpp
+++ b/engines/cryomni3d/datstream.cpp
@@ -129,6 +129,8 @@ uint16 DATSeekableStream::translateLanguage(Common::Language lang) {
 		return MKTAG16('i', 't');
 	case Common::PT_BRA:
 		return MKTAG16('b', 'r');
+	case Common::ZH_TWN:
+		return MKTAG16('z', 't');
 	default:
 		// Invalid language
 		return 0;
diff --git a/engines/cryomni3d/detection_tables.h b/engines/cryomni3d/detection_tables.h
index 69c6ac4db5..6002955e5a 100644
--- a/engines/cryomni3d/detection_tables.h
+++ b/engines/cryomni3d/detection_tables.h
@@ -415,6 +415,41 @@ static const CryOmni3DGameDescription gameDescriptions[] = {
 		GType_VERSAILLES,
 		GF_VERSAILLES_FONTS_NUMERIC | GF_VERSAILLES_AUDIOPADDING_YES | GF_VERSAILLES_LINK_STANDARD,
 	},
+
+	// Versailles 1685
+	// Chinese Windows compressed from DVD
+	// From lePhilousophe
+	{
+		{
+			"versailles",
+			"",
+			VERSAILLES_ENTRY_DEF("PROGRAM.Z", "37f3d691e90e17b78050d6a91f7e0377", 242583),
+			Common::ZH_TWN,
+			Common::kPlatformWindows,
+			ADGF_NO_FLAGS,
+			GUI_OPTIONS_VERSAILLES
+		},
+		GType_VERSAILLES,
+		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
+	},
+
+	// Versailles 1685
+	// Chinese Windows from DVD
+	// From lePhilousophe
+	{
+		{
+			"versailles",
+			"",
+			VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "5209e7c9b20612467af7e9745758ee72", 352256),
+			Common::ZH_TWN,
+			Common::kPlatformWindows,
+			ADGF_NO_FLAGS,
+			GUI_OPTIONS_VERSAILLES
+		},
+		GType_VERSAILLES,
+		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
+	},
+
 	{ AD_TABLE_END_MARKER, 0, 0 }
 };
 
diff --git a/engines/cryomni3d/versailles/documentation.cpp b/engines/cryomni3d/versailles/documentation.cpp
index e39fd5cb47..aaf2d456c7 100644
--- a/engines/cryomni3d/versailles/documentation.cpp
+++ b/engines/cryomni3d/versailles/documentation.cpp
@@ -1448,6 +1448,12 @@ void Versailles_Documentation::drawRecordData(Graphics::ManagedSurface &surface,
 		blockContent1 = Common::Rect(60, 80, 351, 345);
 		blockContent2 = Common::Rect(60, 345, 605, 437);
 	}
+	// Fix of overlapping areas for Chinese (as in original binary)
+	if (_engine->getLanguage() == Common::ZH_TWN && !_currentMapLayout) {
+		blockContent1.bottom += 30;
+		blockContent2.top += 30;
+	}
+
 	if (_currentInTimeline) {
 		background = "CHRONO1";
 		foreColor = 241;
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index c4e7b39db0..499b382aeb 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -277,6 +277,23 @@ void CryOmni3DEngine_Versailles::setupFonts() {
 	// Fonts loaded are not always the same: FR Mac and EN DOS don't use the same font for debug doc/unused
 	// The important is that the loaded one is present in all versions
 
+	if (getLanguage() == Common::ZH_TWN) {
+		fonts.push_back("tw13.CRF"); // 0: Doc titles
+		fonts.push_back("tw18.CRF"); // 1: Menu and T0 in credits
+		fonts.push_back("tw13.CRF"); // 2: T1 and T3 in credits
+		fonts.push_back("tw12.CRF"); // 3: Menu title, options messages boxes buttons
+		fonts.push_back("tw12.CRF"); // 4: T2 in credits, text in docs
+		fonts.push_back("tw12.CRF"); // 5: objects description in toolbar, options messages boxes text, T4 in credits
+		fonts.push_back("tw12.CRF"); // 6: T5 in credits, doc subtitle
+		fonts.push_back("tw12.CRF"); // 7: dialogs texts
+		fonts.push_back("tw12.CRF"); // 8: unused
+		fonts.push_back("tw12.CRF"); // 9: Warp messages texts
+		fonts.push_back("tw12.CRF"); // 10: debug
+
+		_fontManager.loadFonts(fonts, Common::kWindows950);
+		return;
+	}
+
 	// Code below is for SBCS encodings (ie. non CJK)
 	uint8 fontsSet = getFeatures() & GF_VERSAILLES_FONTS_MASK;
 	switch (fontsSet) {
@@ -361,7 +378,9 @@ void CryOmni3DEngine_Versailles::setupFonts() {
 void CryOmni3DEngine_Versailles::setupSprites() {
 	Common::File file;
 
-	if (!file.open("all_spr.bin")) {
+	Common::String fName = getLanguage() == Common::ZH_TWN ? "allsprtw.bin" : "all_spr.bin";
+
+	if (!file.open(fName)) {
 		error("Failed to open all_spr.bin file");
 	}
 	_sprites.loadSprites(file);
diff --git a/engines/cryomni3d/versailles/menus.cpp b/engines/cryomni3d/versailles/menus.cpp
index b474e5eae5..ada88fa317 100644
--- a/engines/cryomni3d/versailles/menus.cpp
+++ b/engines/cryomni3d/versailles/menus.cpp
@@ -59,6 +59,11 @@ void CryOmni3DEngine_Versailles::drawMenuTitle(Graphics::ManagedSurface *surface
 		titleY = 80;
 		subtitleX = 283;
 		subtitleY = 80;
+	} else if (getLanguage() == Common::ZH_TWN) {
+		titleX = 130;
+		titleY = 160;
+		subtitleX = 340;
+		subtitleY = 160;
 	} else {
 		titleX = 100;
 		titleY = 80;
@@ -77,7 +82,8 @@ void CryOmni3DEngine_Versailles::drawMenuTitle(Graphics::ManagedSurface *surface
 
 	if (getLanguage() == Common::FR_FRA ||
 	        getLanguage() == Common::ES_ESP ||
-	        getLanguage() == Common::PT_BRA) {
+	        getLanguage() == Common::PT_BRA ||
+	        getLanguage() == Common::ZH_TWN) {
 		surface->vLine(100, 146, 172, color);
 		surface->hLine(100, 172, 168, color); // minus 1 because hLine draws inclusive
 	}


Commit: b40d3ca55f7b2a42b4f3c49eefe77cf6543ee41c
    https://github.com/scummvm/scummvm/commit/b40d3ca55f7b2a42b4f3c49eefe77cf6543ee41c
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add TTF list support

This will be used for Korean and Japanese versions of Versailles

Changed paths:
    engines/cryomni3d/font_manager.cpp
    engines/cryomni3d/font_manager.h


diff --git a/engines/cryomni3d/font_manager.cpp b/engines/cryomni3d/font_manager.cpp
index 93178d345c..1243dbe0fc 100644
--- a/engines/cryomni3d/font_manager.cpp
+++ b/engines/cryomni3d/font_manager.cpp
@@ -24,6 +24,9 @@
 #include "common/file.h"
 #include "common/hash-ptr.h"
 #include "common/hash-str.h"
+#ifdef USE_FREETYPE2
+#include "graphics/fonts/ttf.h"
+#endif
 #include "graphics/managed_surface.h"
 
 #include "cryomni3d/font_manager.h"
@@ -90,6 +93,68 @@ void FontManager::loadFonts(const Common::Array<Common::String> &fontFiles,
 	}
 }
 
+void FontManager::loadTTFList(const Common::String &ttfList, Common::CodePage codepage) {
+#ifdef USE_FREETYPE2
+	assert(codepage != Common::kCodePageInvalid);
+	_codepage = codepage;
+	setupWrapParameters();
+
+	// Freetype2 is configured to use Unicode
+	_toUnicode = true;
+
+	_fonts.clear();
+
+	Common::File list;
+
+	if (!list.open(ttfList)) {
+		error("can't open file %s", ttfList.c_str());
+	}
+
+	Common::String line = list.readLine();
+	uint32 num = atoi(line.c_str());
+
+	_fonts.reserve(num);
+
+	for (uint i = 0; i < num; i++) {
+		line = list.readLine();
+		if (line.size() == 0) {
+			error("Invalid font list: missing line");
+		}
+
+		uint32 sharpFile = line.find("#");
+		if (sharpFile == Common::String::npos) {
+			error("Invalid font list: missing #");
+		}
+		uint32 sharpFlags = line.find("#", sharpFile + 1);
+		if (sharpFlags == Common::String::npos) {
+			error("Invalid font list: missing #");
+		}
+
+		Common::String fontFace(line.begin(), line.begin() + sharpFile);
+		Common::U32String uniFontFace = fontFace.decode(codepage);
+		Common::String fontFile(line.begin() + sharpFile + 1, line.begin() + sharpFlags);
+		Common::String sizeFlags(line.begin() + sharpFlags + 1, line.end());
+
+		uint32 size = atoi(sizeFlags.c_str());
+		bool bold = sizeFlags.contains('B');
+		bool italic = sizeFlags.contains('I');
+
+		Common::Array<Common::String> fontFiles;
+		fontFiles.push_back(fontFile);
+
+		// Use 96 dpi as it's the default under Windows
+		Graphics::Font *font = Graphics::findTTFace(fontFiles, uniFontFace, bold, italic, -size,
+		                       96, Graphics::kTTFRenderModeMonochrome);
+		if (!font) {
+			error("Can't find required face (line %u) in %s", i, fontFile.c_str());
+		}
+		_fonts.push_back(font);
+	}
+#else
+	error("TrueType support not compiled in");
+#endif
+}
+
 Common::U32String FontManager::toU32(const Common::String &str) const {
 	assert(_codepage != Common::kCodePageInvalid);
 
diff --git a/engines/cryomni3d/font_manager.h b/engines/cryomni3d/font_manager.h
index a71d5e8bcd..6e0b7c6615 100644
--- a/engines/cryomni3d/font_manager.h
+++ b/engines/cryomni3d/font_manager.h
@@ -43,6 +43,7 @@ public:
 	virtual ~FontManager();
 
 	void loadFonts(const Common::Array<Common::String> &fontFiles, Common::CodePage codepage);
+	void loadTTFList(const Common::String &listFile, Common::CodePage codepage);
 	void setCurrentFont(int currentFont);
 	uint getCurrentFont() { return _currentFontId; }
 	void setTransparentBackground(bool transparent) { _transparentBackground = transparent; }


Commit: cb4c1a72ba07380f9421ba246dffb2a5e8073387
    https://github.com/scummvm/scummvm/commit/cb4c1a72ba07380f9421ba246dffb2a5e8073387
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add Korean version of Versailles

Changed paths:
    devtools/create_cryomni3d/create_cryomni3d_dat.cpp
    devtools/create_cryomni3d/create_cryomni3d_dat.h
    devtools/create_cryomni3d/versailles.cpp
    devtools/create_cryomni3d/versailles.h
    dists/engine-data/cryomni3d.dat
    engines/cryomni3d/datstream.cpp
    engines/cryomni3d/detection_tables.h
    engines/cryomni3d/versailles/engine.cpp
    engines/cryomni3d/versailles/menus.cpp


diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
index 9f9f93d26e..6f862ab0e0 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
@@ -55,6 +55,7 @@ DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, DE)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, EN)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ES)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, IT)
+DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, KO)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ZT)
 
 static Parts gamesParts[] = {
@@ -64,6 +65,7 @@ static Parts gamesParts[] = {
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, EN),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, ES),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, IT),
+	GAME_PLATFORM_LANG_PART(Versailles, ALL, KO),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, ZT),
 };
 
diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.h b/devtools/create_cryomni3d/create_cryomni3d_dat.h
index 730c0958fb..113288d0f1 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.h
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.h
@@ -44,6 +44,7 @@ size_t writeGameHeader(FILE *f, uint32 gameId, uint16 version, uint16 lang, uint
 #define LANG_ES                       MKTAG16('e', 's')
 #define LANG_FR                       MKTAG16('f', 'r')
 #define LANG_IT                       MKTAG16('i', 't')
+#define LANG_KO                       MKTAG16('k', 'o')
 #define LANG_ZT                       MKTAG16('z', 't') // ZH_TWN
 
 #endif
diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp
index 94bd058c26..da4e61ce61 100644
--- a/devtools/create_cryomni3d/versailles.cpp
+++ b/devtools/create_cryomni3d/versailles.cpp
@@ -123,4 +123,5 @@ DEFINE_FUNCS(DE)
 DEFINE_FUNCS(EN)
 DEFINE_FUNCS(ES)
 DEFINE_FUNCS(IT)
+DEFINE_FUNCS_CJK(KO)
 DEFINE_FUNCS_CJK(ZT)
diff --git a/devtools/create_cryomni3d/versailles.h b/devtools/create_cryomni3d/versailles.h
index 683848e19f..30473eec3c 100644
--- a/devtools/create_cryomni3d/versailles.h
+++ b/devtools/create_cryomni3d/versailles.h
@@ -82,6 +82,13 @@ static char const *const versaillesBRlocalizedFilenames[] = {
 	"credits.BR",
 	"LEB1_BR.WAV",
 };
+static char const *const versaillesKOlocalizedFilenames[] = {
+	"DIALOG1.KR",
+	"tous_doc.KR",
+	"lien_doc.txt",
+	"credits.KR",
+	"LEB1_GB.WAV",
+};
 static char const *const versaillesZTlocalizedFilenames[] = {
 	"DIALOG1.TW",
 	"tous_doc.TW",
@@ -102,6 +109,8 @@ static char const versaillesESEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT"
 static char const versaillesESEpilPwd[] = "ELZORROYLAGRULLA";
 static char const versaillesITEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
 static char const versaillesITEpilPwd[] = "LEANATREEILCANE";
+static char const versaillesKOEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
+static char const versaillesKOEpilPwd[] = "FOXANDCRANE";
 static char const versaillesZTEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
 static char const versaillesZTEpilPwd[] = "FOXANDCRANE";
 
@@ -112,6 +121,7 @@ static char const versaillesDEBombPwd[] =
 static char const versaillesENBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 static char const versaillesESBombPwd[] = "NO ES PODER DE REYES EL ALCANZAR LA PERFECCION";
 static char const versaillesITBombPwd[] = "AI SOVRANI NON E DATO RAGGIUNGERE LA PERFEZIONE";
+static char const versaillesKOBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 static char const versaillesZTBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 
 #define VERSAILLES_MESSAGES_COUNT 146
@@ -1415,6 +1425,1119 @@ static char const *const versaillesITpaintings[] = {
 	"\"Cristo calato dalla Croce\"\rCharles Lebrun",                      /* 47: 45260 */
 };
 
+static char const *const versaillesKOmessages[] = {
+	"\xc1\xf6\xb1\xdd\xc0\xba" " " "\xc0\xcc" " " "\xb9\xae\xc0\xcc" " "
+	"" "\xbf\xad\xb8\xae\xc1\xf6" " " ""
+	"\xbe\xca\xbd\xc0\xb4\xcf\xb4\xd9" ".",                               /*   0 */
+	"\xb9\xae\xc0\xcc" " " "\xc0\xe1\xb0\xe5\xbd\xc0\xb4\xcf\xb4\xd9" ""
+	".",                                                                  /*   1 */
+	"\xb9\xae\xc0\xcc" " " "\xc0\xe1\xb0\xe5\xbd\xc0\xb4\xcf\xb4\xd9" ""
+	".",                                                                  /*   2 */
+	"\xbc\xad\xb6\xf8\xc0\xcc" " " ""
+	"\xba\xf1\xbe\xfa\xbd\xc0\xb4\xcf\xb4\xd9" ".",                       /*   3 */
+	"\xb5\xa4\xb0\xb3\xbf\xa1" " " "\xb4\xea\xc1\xf6" " " ""
+	"\xbe\xca\xbd\xc0\xb4\xcf\xb4\xd9" ".",                               /*   4 */
+	"\xc0\xcc" " " "\xb3\xaa\xb9\xab\xbf\xa3" " " "\xbe\xc6\xb9\xab" " "
+	"" "\xb0\xcd\xb5\xb5" " " "\xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9" ".",     /*   5 */
+	"\xbf\xc0\xb7\xbb\xc1\xf6\xb3\xaa\xb9\xab\xb0\xa1" " " ""
+	"\xbe\xc6\xb4\xd5\xb4\xcf\xb4\xd9" "!",                               /*   6 */
+	"\xb3\xca\xb9\xab" " " "\xbe\xee\xb5\xd3\xbd\xc0\xb4\xcf\xb4\xd9" ""
+	".",                                                                  /*   7 */
+	"\xbb\xf3\xc0\xda\xb0\xa1" " " ""
+	"\xc0\xe1\xb0\xe5\xbd\xc0\xb4\xcf\xb4\xd9" ". ",                      /*   8 */
+	"\xb9\xae\xc0\xbb" " " "\xbf\xad" " " "\xbc\xf6" " " ""
+	"\xc0\xd6\xbd\xc0\xb4\xcf\xb4\xd9" ".",                               /*   9 */
+	"\xc6\xf8\xc5\xba\xbf\xa1" " " "\xb4\xea\xc0\xbb" " " "\xbc\xf6" " "
+	"" "\xc0\xd6\xb4\xc2" " " "\xb0\xcd\xc0\xcc" " " ""
+	"\xc7\xca\xbf\xe4\xc7\xd5\xb4\xcf\xb4\xd9" ".",                       /*  10 */
+	"\xb2\xc9\xba\xb4\xc0\xcc" " " ""
+	"\xba\xf1\xbe\xfa\xbd\xc0\xb4\xcf\xb4\xd9" ".",                       /*  11 */
+	"\xc0\xcc\xc1\xa6" " " "\xc1\xf6\xb3\xaa" " " "\xb0\xa1\xb5\xb5" " "
+	"" "\xb5\xcb\xb4\xcf\xb4\xd9" ".",                                    /*  12 */
+	"\xb4\xf5" " " "\xbe\xcb\xbe\xc6\xb3\xbe" " " ""
+	"\xbd\xc3\xb0\xa3\xc0\xcc" " " "\xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9" ""
+	"!",                                                                  /*  13 */
+	"\xb1\xd7\xb8\xb2" " " "\xb0\xa8\xbb\xf3\xc7\xcf\xb1\xe2\xbf\xa3" ""
+	" " "\xb4\xca\xbd\xc0\xb4\xcf\xb4\xd9" "!",                           /*  14 */
+	"\xc0\xe1\xb1\xf1" "! " "\xc0\xc7\xc0\xfc\xb0\xfc\xbf\xa1\xb0\xd4" ""
+	" " "\xb4\xdc\xbc\xad\xb8\xa6" ".",                                   /*  15 */
+	"\xc1\xbe\xc0\xcc\xbf\xa1" " " "\xb4\xea\xc1\xf6" " " ""
+	"\xbe\xca\xbd\xc0\xb4\xcf\xb4\xd9" ".",                               /*  16 */
+	"\xbe\xe0\xb1\xb9\xc0\xb8\xb7\xce" ".",                               /*  17 */
+	"\xc1\xd6\xc0\xc7" ": " "\xb4\xe7\xbd\xc5\xc0\xba" " " "\xc0\xcc" ""
+	" " "\xb7\xb9\xba\xa7\xc0\xc7" " " "\xb3\xa1\xb1\xee\xc1\xf6" " " ""
+	"\xb5\xb5\xb4\xde\xc7\xd2" " " "\xbc\xf6" " " ""
+	"\xc0\xd6\xbd\xc0\xb4\xcf\xb4\xd9" ", " "\xc7\xcf\xc1\xf6\xb8\xb8" ""
+	" " "\xb0\xe8\xbc\xd3\xc7\xcf\xb1\xe2" " " ""
+	"\xc0\xa7\xc7\xd8\xbc\xad" " " "\xc7\xca\xbf\xe4\xc7\xd1" " " ""
+	"\xb8\xf0\xb5\xe7" " " "\xc7\xe0\xb5\xbf\xc0\xbb" " " ""
+	"\xbf\xcf\xbc\xf6\xc7\xcf\xc1\xf6" " " ""
+	"\xbe\xca\xbe\xd2\xbd\xc0\xb4\xcf\xb4\xd9" ". " "\xc1\xf6\xb1\xdd" ""
+	" " "\xc0\xcc" " " "\xb0\xd4\xc0\xd3\xc0\xbb" " " ""
+	"\xc0\xfa\xc0\xe5\xc7\xcf\xbd\xca\xbd\xc3\xbf\xc0" ".",               /*  18 */
+	" " "\xc1\xd6\xc0\xc7" ": " "\xb4\xe7\xbd\xc5\xc0\xba" " " ""
+	"\xc0\xcc" " " "\xb7\xb9\xba\xa7\xc0\xc7" " " ""
+	"\xb3\xa1\xb1\xee\xc1\xf6" " " "\xb5\xb5\xb4\xde\xc7\xd2" " " ""
+	"\xbc\xf6" " " "\xc0\xd6\xbd\xc0\xb4\xcf\xb4\xd9" ", " ""
+	"\xc7\xcf\xc1\xf6\xb8\xb8" " " "\xb0\xe8\xbc\xd3\xc7\xcf\xb1\xe2" ""
+	" " "\xc0\xa7\xc7\xd8\xbc\xad" " " "\xc7\xca\xbf\xe4\xc7\xd1" " " ""
+	"\xb8\xf0\xb5\xe7" " " "\xc7\xe0\xb5\xbf\xc0\xbb" " " ""
+	"\xbf\xcf\xbc\xf6\xc7\xcf\xc1\xf6" " " ""
+	"\xbe\xca\xbe\xd2\xc1\xf6\xb5\xb5" " " ""
+	"\xb8\xf0\xb8\xa8\xb4\xcf\xb4\xd9" ". " "\xc1\xf6\xb1\xdd" " " ""
+	"\xc0\xcc" " " "\xb0\xd4\xc0\xd3\xc0\xbb" " SAVE" ""
+	"\xc7\xcf\xbd\xca\xbd\xc3\xbf\xc0" ".",                               /*  19 */
+	"\xbb\xe7\xb4\xd9\xb8\xae\xb8\xa6" " " "\xb0\xa1\xc1\xf6\xb0\xed" ""
+	" " "\xbf\xf2\xc1\xf7\xc0\xcf" " " "\xbc\xf6" " " ""
+	"\xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9" "!",                               /*  20 */
+	"\xbe\xc6\xb9\xab\xb0\xcd\xb5\xb5" " " ""
+	"\xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9" ".",                               /*  21 */
+	"\xc0\xcc\xb8\xb8" "...",                                             /*  22 */
+	"\xba\xa3\xb8\xa3\xbb\xe7\xc0\xcc\xc0\xaf" ",",                       /*  23 */
+	"\xb7\xe7\xc0\xcc" " 14" "\xbc\xbc" " " "\xb1\xc3\xc0\xfc\xc0\xc7" ""
+	" " "\xc0\xbd\xb8\xf0",                                               /*  24 */
+	"\xb9\xae\xbc\xad" " " "\xbf\xb5\xbf\xaa\xc0\xbb" " " ""
+	"\xc2\xfc\xc1\xb6",                                                   /*  25 */
+	"           " "\xb0\xd4\xc0\xd3\xc0\xbb" " " "\xb0\xe8\xbc\xd3",      /*  26 */
+	"           " "\xbb\xf5\xb7\xce\xbf\xee" " " ""
+	"\xb0\xd4\xc0\xd3\xc0\xbb" " " "\xbd\xc3\xc0\xdb",                    /*  27 */
+	"           " "\xb0\xd4\xc0\xd3\xc0\xbb" " " "\xb7\xce\xb5\xe5",      /*  28 */
+	"           " "\xb0\xd4\xc0\xd3\xc0\xbb" " " "\xc0\xfa\xc0\xe5",      /*  29 */
+	"           " "\xc0\xda\xb8\xb7" " " "\xc7\xa5\xbd\xc3" ": " ""
+	"\xbf\xb9",                                                           /*  30 */
+	"           " "\xc0\xda\xb8\xb7" " " "\xc7\xa5\xbd\xc3" ": " ""
+	"\xbe\xc6\xb4\xcf\xbf\xc0",                                           /*  31 */
+	"           " "\xc0\xbd\xbe\xc7" ": " "\xbf\xb9",                     /*  32 */
+	"           " "\xc0\xbd\xbe\xc7" ": " "\xbe\xc6\xb4\xcf\xbf\xc0",     /*  33 */
+	"           " "\xc7\xd1" " " "\xc0\xbd\xbe\xc7\xc0\xbb" " HDD" ""
+	"\xbf\xa1" " " "\xc0\xfa\xc0\xe5" "(20 Mo)",                          /*  34 */
+	"           " "\xb8\xf0\xb5\xe7" " " "\xc0\xbd\xbe\xc7\xc0\xbb" " "
+	"HDD" "\xbf\xa1" " " "\xc0\xfa\xc0\xe5" "(92 Mo)",                    /*  35 */
+	"           " "\xbe\xc6\xb9\xab" " " "\xc0\xbd\xbe\xc7\xb5\xb5" " "
+	"HDD" "\xbf\xa1" " " "\xc0\xfa\xc0\xe5" " " "\xbe\xc8\xc7\xd4" " "
+	"(lecture CD)",                                                       /*  36 */
+	nullptr,                                                              /*  37 */
+	nullptr,                                                              /*  38 */
+	"\xba\xbc\xb7\xfd",                                                   /*  39 */
+	"\xb0\xd4\xc0\xd3" " " "\xc1\xdf\xb4\xdc",                            /*  40 */
+	"",                                                                   /*  41 */
+	"\xbc\xba\xc0\xbb" " " "\xc1\xb6\xbb\xe7",                            /*  42 */
+	"\xc5\xa9\xb7\xb9\xb5\xf7",                                           /*  43 */
+	"           " "\xc1\xb6\xbb\xe7\xb8\xa6" " " "\xb0\xe8\xbc\xd3",      /*  44 */
+	"           " "\xc1\xb6\xbb\xe7\xb8\xa6" " " "\xc0\xfa\xc0\xe5",      /*  45 */
+	"           " "\xc1\xb6\xbb\xe7\xb8\xa6" " " "\xb7\xce\xb5\xe5",      /*  46 */
+	nullptr,                                                              /*  47 */
+	"           Omni3D: " "\xc7\xa5\xc1\xd8",                             /*  48 */
+	"           Omni3D: " "\xb4\xc0\xb8\xae\xb0\xd4",                     /*  49 */
+	"           Omni3D: " "\xbe\xc6\xc1\xd6" " " ""
+	"\xb4\xc0\xb8\xae\xb0\xd4",                                           /*  50 */
+	"           Omni3D: " "\xba\xfc\xb8\xa3\xb0\xd4",                     /*  51 */
+	"           Omni3D: " "\xbe\xc6\xc1\xd6" " " ""
+	"\xba\xfc\xb8\xa3\xb0\xd4",                                           /*  52 */
+	"\xc8\xae\xc0\xce",                                                   /*  53 */
+	"\xc3\xeb\xbc\xd2",                                                   /*  54 */
+	"\xba\xf1\xbe\xee" " " "\xc0\xd6\xc0\xbd",                            /*  55 */
+	"\xc0\xcc\xb8\xa7" " " "\xbe\xf8\xc0\xbd",                            /*  56 */
+	"\xc1\xd6\xc0\xc7" ": " "\xc0\xcc" " " "\xb0\xd4\xc0\xd3\xc0\xba" ""
+	" " "\xc1\xdf\xb4\xdc\xb5\xc9" " " "\xb0\xcd\xc0\xd3" ".",            /*  57 */
+	"\xb5\xb9\xbe\xc6\xb0\xa8",                                           /*  58 */
+	"\xbc\xba",                                                           /*  59 */
+	"\xb8\xde\xc0\xce" " " "\xb8\xde\xb4\xba\xb7\xce" " " ""
+	"\xb5\xb9\xbe\xc6\xb0\xa8",                                           /*  60 */
+	"\xb9\xae\xbc\xad" " " "\xbf\xb5\xbf\xaa" " " "\xbf\xe4\xbe\xe0",     /*  61 */
+	"\xbc\xba\xb0\xfa" " " "\xc1\xa4\xbf\xf8" " " "\xc1\xf6\xb5\xb5",     /*  62 */
+	"\xbc\xba\xc0\xc7" " " "\xb3\xbb\xba\xce" " " ""
+	"\xbc\xb3\xb0\xe8\xb5\xb5",                                           /*  63 */
+	"HDD" "\xbf\xa1" " " "\xbe\xb2\xb4\xc2" " " "\xb0\xcd\xc0\xcc" " " ""
+	"\xba\xd2\xb0\xa1\xb4\xc9\xc7\xd4" ": " "\xbf\xa9\xba\xd0" " " ""
+	"\xba\xce\xc1\xb7",                                                   /*  64 */
+	nullptr,                                                              /*  65 */
+	"CD" "\xb8\xa6" " " "\xb3\xd6\xc0\xb8\xbd\xc3\xbf\xc0" " ",           /*  66 */
+	"%d " "\xb9\xf8\xc2\xb0" " CD" "\xb8\xa6" " " "\xb3\xd6\xb0\xed" " "
+	"" "\xbe\xc6\xb9\xab" " " "\xc5\xb0\xb3\xaa" " " ""
+	"\xb4\xa9\xb8\xa3\xbd\xc3\xbf\xc0",                                   /*  67 */
+	"\xbf\xb9\xbc\xfa",                                                   /*  68 */
+	"\xc5\xeb\xc4\xa1",                                                   /*  69 */
+	"\xb1\xc3\xc1\xa4",                                                   /*  70 */
+	"\xbc\xba\xbf\xa1\xbc\xad\xc0\xc7" " " "\xbb\xfd\xc8\xb0",            /*  71 */
+	"\xbc\xba\xb0\xfa" " " "\xc1\xa4\xbf\xf8",                            /*  72 */
+	"\xbf\xac\xb4\xeb\xb1\xe2",                                           /*  73 */
+	"\xbe\xc6\xc6\xfa\xb7\xce" " " "\xba\xd0\xbc\xf6",                    /*  74 */
+	"\xbc\xba",                                                           /*  75 */
+	"\xc4\xdd\xb7\xce\xb3\xaa\xb5\xe5",                                   /*  76 */
+	"\xb9\xcc\xb7\xce",                                                   /*  77 */
+	"\xb6\xf3\xc5\xe4\xb3\xaa",                                           /*  78 */
+	"\xb0\xa8\xb1\xd6\xbf\xf8",                                           /*  79 */
+	"\xb9\xb0\xc0\xc7" " " "\xc8\xad\xb4\xdc",                            /*  80 */
+	"\xb5\xb5\xb9\xda\xb4\xeb",                                           /*  81 */
+	"\xb4\xeb" " " "\xc1\xb6\xb7\xc3\xc0\xe5",                            /*  82 */
+	"\xbc\xd2" " " "\xc1\xb6\xb7\xc3\xc0\xe5",                            /*  83 */
+	"\xc1\xa4\xbf\xf8",                                                   /*  84 */
+	"\xbe\xd5" " " "\xb6\xe3",                                            /*  85 */
+	"\xb4\xeb\xbf\xee\xc7\xcf",                                           /*  86 */
+	"\xb3\xb2\xc2\xca" " " "\xc8\xad\xb4\xdc",                            /*  87 */
+	"\xba\xcf\xc2\xca" " " "\xc8\xad\xb4\xdc",                            /*  88 */
+	"\xb1\xb9\xbf\xd5\xc0\xc7" " " "\xbe\xdf\xc3\xa4\xb9\xe7",            /*  89 */
+	"\xb9\xab\xb5\xb5\xbd\xc7",                                           /*  90 */
+	"\xb3\xdc\xc6\xaa" " " "\xba\xd0\xbc\xf6",                            /*  91 */
+	"\xbd\xba\xc0\xa7\xbd\xba\xbf\xeb\xba\xb4\xc0\xc7" " " ""
+	"\xc8\xa3\xbc\xf6",                                                   /*  92 */
+	"\xb9\xd9\xb4\xc3" "(" "\xbe\xb5\xb8\xf0\xbe\xf8\xc0\xbd" "!)",       /*  93 */
+	"\xb0\xa1\xc0\xa7",                                                   /*  94 */
+	"\xc1\xbe\xc0\xcc",                                                   /*  95 */
+	"\xbf\xb9\xbc\xfa\xbf\xa1" " " "\xb0\xfc\xc7\xd1" " " ""
+	"\xb9\xae\xbc\xad",                                                   /*  96 */
+	"\xc0\xdb\xc0\xba" " " "\xbf\xad\xbc\xe8" " 1",                       /*  97 */
+	"\xba\xaf\xc7\xfc\xb5\xc8" " " "\xc1\xbe\xc0\xcc",                    /*  98 */
+	"\xc2\xf8\xbb\xf6\xc7\xd1" " " "\xc1\xbe\xc0\xcc",                    /*  99 */
+	"\xbb\xf3\xc0\xda\xc0\xc7" " " "\xc1\xbe\xc0\xcc",                    /* 100 */
+	"\xc8\xb2\xbd\xc7" " " "\xb0\xa1\xb0\xe8\xbf\xa1" " " ""
+	"\xb0\xfc\xc7\xd1" " " "\xb9\xae\xbc\xad",                            /* 101 */
+	"\xb9\xe0\xc7\xf4\xc1\xf8" " " "\xc3\xca",                            /* 102 */
+	"\xc3\xca",                                                           /* 103 */
+	"\xbf\xad\xbc\xe8",                                                   /* 104 */
+	"\xbd\xba\xc4\xc9\xc4\xa1" " " "\xb9\xad\xc0\xbd",                    /* 105 */
+	"\xbd\xba\xc4\xc9\xc4\xa1" " " "\xb9\xad\xc0\xbd",                    /* 106 */
+	"\xc0\xa7\xc1\xb6" " " "\xbd\xba\xc4\xc9\xc4\xa1",                    /* 107 */
+	"\xbb\xe7\xb4\xd9\xb8\xae",                                           /* 108 */
+	"\xc6\xc4\xb1\xab\xb5\xc8" " " "\xbd\xba\xc4\xc9\xc4\xa1",            /* 109 */
+	"\xba\xd7",                                                           /* 110 */
+	"\xc8\xb2\xb1\xdd\xbb\xf6" " " "\xba\xd7",                            /* 111 */
+	"\xba\xd3\xc0\xba\xbb\xf6" " " "\xba\xd7",                            /* 112 */
+	"\xb8\xf1\xc5\xba" " " "\xbf\xac\xc7\xca",                            /* 113 */
+	"\xc1\xbe\xc0\xcc",                                                   /* 114 */
+	"\xb0\xc7\xc3\xe0\xbf\xa1" " " "\xb0\xfc\xc7\xd1" " " ""
+	"\xb9\xae\xbc\xad",                                                   /* 115 */
+	"\xc0\xdb\xc0\xba" " " "\xbf\xad\xbc\xe8" " 2",                       /* 116 */
+	"\xbb\xe7\xbc\xf6" "(" "\xbe\xb5\xb8\xf0\xbe\xf8\xc0\xbd" "!)",       /* 117 */
+	"\xc0\xbd\xbe\xc7" " " "\xbe\xc7\xba\xb8",                            /* 118 */
+	"\xb4\xe7\xb1\xb8" " " "\xc5\xa5",                                    /* 119 */
+	"\xc7\xe3\xb0\xa1",                                                   /* 120 */
+	"\xb8\xde\xb4\xde" " " "\xba\xb9\xc1\xa6",                            /* 121 */
+	"\xb8\xde\xb4\xde\xc0\xcc" " " "\xc0\xd6\xb4\xc2" " " ""
+	"\xbc\xad\xb6\xf8",                                                   /* 122 */
+	"\xbe\xc6\xc6\xfa\xb7\xce" " " "\xc0\xdb\xc0\xba" " " ""
+	"\xb9\xae\xc0\xc7" " " "\xbf\xad\xbc\xe8",                            /* 123 */
+	"\xc0\xbd\xbd\xc4",                                                   /* 124 */
+	"\xc1\xbe\xb1\xb3\xbf\xa1" " " "\xb0\xfc\xc7\xd1" " " ""
+	"\xb9\xae\xbc\xad",                                                   /* 125 */
+	"\xbc\xf6\xbc\xf6\xb2\xb2\xb3\xa2",                                   /* 126 */
+	"\xc5\xeb\xc4\xa1\xbf\xa1" " " "\xb0\xfc\xc7\xd1" " " ""
+	"\xb9\xae\xbc\xad",                                                   /* 127 */
+	"\xb1\xea\xc6\xe6",                                                   /* 128 */
+	"\xb8\xde\xb8\xf0",                                                   /* 129 */
+	"\xb8\xc1\xbf\xf8\xb0\xe6",                                           /* 130 */
+	"\xba\xb8\xb9\xe6" " " "\xbc\xb3\xb0\xe8\xb5\xb5",                    /* 131 */
+	"\xba\xb8\xb9\xe6" " " "\xbc\xb3\xb0\xe8\xb5\xb5",                    /* 132 */
+	"\xb2\xf6",                                                           /* 133 */
+	"\xc1\xb6\xc6\xc7",                                                   /* 134 */
+	"\xc0\xdb\xc0\xba" " " "\xbf\xad\xbc\xe8" " 3",                       /* 135 */
+	"\xc0\xdb\xc0\xba" " " "\xbf\xad\xbc\xe8" " 4",                       /* 136 */
+	"\xba\xf1\xb8\xc1\xb7\xcf",                                           /* 137 */
+	"\xbc\xba\xc0\xc7" " " "\xbc\xb3\xb0\xe8\xb5\xb5",                    /* 138 */
+	"\xbc\xba\xc0\xc7" " " "\xbc\xb3\xb0\xe8\xb5\xb5",                    /* 139 */
+	"\xb4\xd9\xb6\xf4\xb9\xe6" " " "\xbf\xad\xbc\xe8",                    /* 140 */
+	"\xbf\xec\xc8\xad",                                                   /* 141 */
+	"\xb9\xcc\xb7\xce\xc0\xc7" " " "\xbc\xb3\xb0\xe8\xb5\xb5",            /* 142 */
+	"\xb5\xb5\xb1\xb8",                                                   /* 143 */
+	"\xbe\xe0",                                                           /* 144 */
+	"\xc3\xd0\xba\xd2" " " "\xb2\xf4\xb4\xc2" " " "\xb1\xe2\xb1\xb8",     /* 145 */
+	"\xc1\xa6" "%d" "\xc0\xe5",                                           /* 146 */
+	"\xc1\xb6\xbb\xe7\xb8\xa6",                                           /* 147 */
+	/* These ones are not in messages but it's simpler */
+	"\xbf\xa9\xbf\xec\xbf\xcd \xb5\xce\xb7\xe7\xb9\xcc",                  /* 148/Epigraph */
+	nullptr,                                                              /* 149/Memo */
+	"\xbf\xcf\xba\xae\xc7\xd4\xbf\xa1 \xc0\xcc\xb8\xa3\xb4\xc2 "
+	"\xb0\xcd\xc0\xba \xb1\xb9\xbf\xd5\xc0\xc7 "
+	"\xb1\xc7\xb7\xc2\xbf\xa1 \xc0\xd6\xc1\xf6 \xbe\xca\xb4\xd9",         /* 150/Bomb */
+};
+
+static char const *const versaillesKOpaintings[] = {
+	"\"" "\xb3\xeb\xbe\xc6\xc0\xc7" " " "\xb9\xe6\xc1\xd6\xb7\xce" " " ""
+	"\xb5\xe9\xbe\xee\xbf\xc0\xb4\xc2" " " ""
+	"\xb5\xbf\xb9\xb0\xb5\xe9\"\r\xc1\xa6\xb7\xd1\xb6\xf3\xb8\xf0" " " ""
+	"\xb9\xd9\xbb\xe7\xb3\xeb",                                           /*  0: 41201 */
+	"\"" "\xbf\xa5\xb8\xb6\xbf\xec\xbd\xba\xc0\xc7" " " ""
+	"\xc0\xfa\xb3\xe1\xbd\xc4\xbb\xe7\"\r\xc0\xda\xc4\xda\xc6\xf7" " " ""
+	"\xb9\xd9\xbb\xe7\xb3\xeb",                                           /*  1: 41202 */
+	"\"" "\xb1\xd7\xb8\xae\xbd\xba\xb5\xb5\xc0\xc7" " " ""
+	"\xb9\xdf\xb9\xd8\xbf\xa1" " " "\xc0\xd6\xb4\xc2" " " ""
+	"\xb8\xb7\xb4\xde\xb6\xf3" " " "\xb8\xb6\xb8\xae\xbe\xc6\"\r",        /*  2: 41203 */
+	"\"" "\xb3\xeb\xbe\xc6\xc0\xc7" " " "\xb9\xe6\xc1\xd6\xb8\xa6" " " ""
+	"\xb6\xb0\xb3\xaa\xb8\xe7\"\r\xc1\xa6\xb7\xd1\xb6\xf3\xb8\xf0" " " ""
+	"\xb9\xd9\xbb\xe7\xb3\xeb",                                           /*  3: 41204 */
+	"\"" "\xb9\xd9\xc0\xa7\xb8\xa6" " " ""
+	"\xb1\xfa\xb8\xe7\"\r\xc0\xda\xc4\xda\xc6\xf7" " " ""
+	"\xb9\xd9\xbb\xe7\xb3\xeb",                                           /*  4: 41205 */
+	"\"" "\xbe\xc6\xb8\xa3\xba\xa7" "(Arbelles)" "\xc0\xc7" " " ""
+	"\xc0\xfc\xc5\xf5\"\r\xc1\xb6\xbc\xc1" " " ""
+	"\xc6\xc4\xb7\xce\xbc\xbf",                                           /*  5: 41301 */
+	"\"" "\xbe\xcb\xb7\xba\xbb\xea\xb4\xf5" " " "\xb4\xeb\xbf\xd5" ", " ""
+	"\xbe\xc6\xb8\xa3\xba\xa7\xc0\xc7" " " ""
+	"\xc0\xfc\xc5\xf5\xbf\xa1\xbc\xad" " " ""
+	"\xb4\xd9\xb8\xae\xbf\xec\xbd\xba\xbf\xa1" " " "\xb4\xeb\xc7\xd1" ""
+	" " "\xbd\xc2\xb8\xae\"\r\xb8\xa3" " " ""
+	"\xba\xce\xb8\xa3\xb1\xcd\xb3\xf3",                                   /*  6: 41302 */
+	"\"" "\xb7\xe7\xc0\xcc\xc1\xee" "(Leuze)" "\xc0\xc7" " " ""
+	"\xc0\xfc\xc5\xf5\"\r\xc1\xb6\xbc\xc1" " " ""
+	"\xc6\xc4\xb7\xce\xbc\xbf",                                           /*  7: 42401 */
+	"\"" "\xb1\xe2\xba\xb8\xb9\xfd\xc0\xbb" " " ""
+	"\xb0\xa1\xc1\xf6\xb0\xed" " " "\xc0\xd6\xb4\xc2" " " ""
+	"\xc3\xb5\xbb\xe7\xbf\xcd" " " "\xc7\xd4\xb2\xb2" " " ""
+	"\xc0\xd6\xb4\xc2" " " "\xbc\xba" " " ""
+	"\xbc\xbc\xbd\xc7\xb8\xae\xbe\xc6\"\r" " " "\xc0\xcf" " " ""
+	"\xb5\xb5\xb8\xde\xb4\xcf\xc4\xa1\xb3\xeb",                           /*  8: 42901 */
+	"\"" "\xb8\xf9\xc4\xab\xb4\xd9\xc0\xc7" " " "\xb5\xbf" " " ""
+	"\xc7\xc1\xb6\xf5\xbd\xc3\xbd\xba\xc4\xda\"\r\xb9\xdd" " " ""
+	"\xb4\xd9\xc0\xcc\xc5\xa9",                                           /*  9: 42902 */
+	"\"" "\xc0\xfe\xc0\xba" " " "\xbc\xbc\xb7\xca" " " ""
+	"\xbf\xe4\xc7\xd1\"\r\xc4\xab\xb6\xf3\xc4\xa1",                       /* 10: 42903 */
+	"\"" "\xbc\xba" " " ""
+	"\xb8\xb6\xc5\xc2\"\r\xb9\xdf\xb7\xbb\xc5\xb8\xc0\xce",               /* 11: 42904 */
+	"\"" "\xc4\xc9\xbb\xe7\xb8\xa3\xbf\xa1\xb0\xd4" " " ""
+	"\xb3\xd1\xb0\xdc\xc1\xd6\xb8\xe7\"\r\xb9\xdf\xb7\xbb\xc5\xb8\xc0\xce",/* 12: 42905 */
+	"\"" "\xbc\xba" " " ""
+	"\xb4\xa9\xb0\xa1\"\r\xb9\xdf\xb7\xbb\xc5\xb8\xc0\xce",               /* 13: 42906 */
+	"\"" "\xbc\xba" " " "\xb1\xee\xb6\xdf\xb8\xb0\xc0\xc7" " " ""
+	"\xbd\xc5\xba\xf1\xb7\xce\xbf\xee" " " ""
+	"\xb0\xe1\xc8\xa5\"\r\xbe\xcb\xb7\xb9\xbb\xea\xb5\xe5\xb7\xce" " " ""
+	"\xc5\xf5\xb8\xa3\xc4\xa1",                                           /* 14: 42907 */
+	"\"" "\xb8\xb6\xbd\xc3\xb4\xc2" " " ""
+	"\xbb\xe7\xb6\xf7\xb5\xe9\xc0\xc7" " " ""
+	"\xb8\xf0\xc0\xd3\"\r\xb4\xcf\xc4\xdd\xb6\xf3\xbd\xba" " " ""
+	"\xb6\xd1\xb8\xa3\xb4\xcf\xbf\xa1",                                   /* 15: 42908 */
+	"\"" "\xc1\xa1\xc0\xe5\xc0\xcc\"\r\xb9\xdf\xb7\xbb\xc5\xb8\xc0\xce",  /* 16: 42909 */
+	"\"" "\xc7\xcf\xc7\xc1\xb8\xa6" " " ""
+	"\xbf\xac\xc1\xd6\xc7\xcf\xb4\xc2" " " ""
+	"\xb4\xd9\xc0\xad\xbf\xd5\"\r\xc0\xcf" " " ""
+	"\xb5\xb5\xb8\xde\xb4\xcf\xc4\xa1\xb3\xeb",                           /* 17: 42910 */
+	"\"" "\xb8\xb7\xb4\xde\xb6\xf3" " " ""
+	"\xb8\xb6\xb8\xae\xbe\xc6\"\r\xc0\xcf" " " ""
+	"\xb5\xb5\xb8\xde\xb4\xcf\xc4\xa1\xb3\xeb",                           /* 18: 42911 */
+	"\"" "\xc0\xda\xc8\xad\xbb\xf3\"\r\xb9\xdd" " " ""
+	"\xb4\xd9\xc0\xcc\xc5\xa9",                                           /* 19: 42912 */
+	"\"" "\xc0\xfc\xb5\xb5\xc0\xda" " " "\xbc\xba" " " ""
+	"\xbf\xe4\xc7\xd1\"\r\xb9\xdf\xb7\xbb\xc5\xb8\xc0\xce",               /* 20: 42913 */
+	"\"" "\xc3\xb5\xbb\xe7\xc0\xc7" " " "\xb5\xb5\xbf\xf2\xc0\xbb" " " ""
+	"\xb9\xde\xb4\xc2" " " ""
+	"\xc7\xcf\xb0\xa5\"\r\xc1\xf6\xbf\xc0\xb9\xd9\xb4\xcf" " " ""
+	"\xb6\xfb\xc7\xc1\xb6\xfb\xc4\xda",                                   /* 21: 42914 */
+	"\"" "\xbc\xba" " " ""
+	"\xb8\xb6\xb0\xa1\"\r\xb9\xdf\xb7\xbb\xc5\xb8\xc0\xce",               /* 22: 42915 */
+	"\"" "\xb9\xdf" "  " "\xbe\xc6\xb7\xa1\xbf\xa1" " " ""
+	"\xc4\xae\xb8\xae\xb5\xbf\xc0\xc7" " " "\xb8\xe4\xb5\xc5\xc1\xf6" ""
+	" " "\xb8\xd3\xb8\xae\xb8\xa6" " " "\xb3\xf5\xc0\xba" " " ""
+	"\xb8\xe1\xb7\xb9\xbe\xc6\xb1\xd7\xb7\xce\xbd\xba\"\r\xc0\xda\xb2\xf4" ""
+	" " "\xb7\xe7\xbc\xd2",                                               /* 23: 43090 */ /* BUG: Switched */
+	"\"" "\xb7\xce\xb8\xb6\xc0\xc7" " " "\xbf\xca\xc0\xbb" " " ""
+	"\xc0\xd4\xc0\xbb" " " "\xbf\xd5\"\r\xc0\xe5" " " ""
+	"\xbf\xcd\xb8\xb0" " ",                                               /* 24: 43091 */
+	"\"" "\xbe\xc6\xc5\xbb\xb6\xf5\xc5\xb8\"\r\xc0\xda\xb2\xf4" " " ""
+	"\xb7\xe7\xbc\xd2",                                                   /* 25: 43092 */
+	"\"" "\xbe\xc8\xc5\xb0\xbc\xbc\xbd\xba\xb8\xa6" " " ""
+	"\xb5\xa5\xb7\xc1\xb0\xa1\xb4\xc2" " " ""
+	"\xbe\xc6\xbf\xa1\xb3\xd7\xc0\xcc\xbe\xc6\xbd\xba\"\r\xbd\xba\xc6\xc4\xb4\xd9",/* 26: 43100 */
+	"\"" "\xb4\xd9\xc0\xad\xb0\xfa" " " ""
+	"\xba\xa3\xb6\xdf\xbc\xbc\xb9\xd9\"\r\xb1\xb8\xc0\xcc\xb5\xb5" " " ""
+	"\xb7\xb9\xb4\xcf",                                                   /* 27: 43101 */
+	"\"" "\xc0\xcc\xc1\xfd\xc6\xae\xb7\xce\xc0\xc7" " " ""
+	"\xb5\xb5\xc1\xd6\"\r\xb1\xb8\xc0\xcc\xb5\xb5" " " ""
+	"\xb7\xb9\xb4\xcf",                                                   /* 28: 43102 */
+	"\"" "\xb8\xbb\xc0\xbb" " " "\xc5\xb8\xb0\xed" " " ""
+	"\xc0\xd6\xb4\xc2" " " "\xb7\xe7\xc0\xcc" " 14" ""
+	"\xbc\xbc\"\r\xc7\xc7\xbf\xa1\xb8\xa3" " " ""
+	"\xb9\xcc\xb3\xc4\xb5\xe5",                                           /* 29: 43103 */
+	"\"" "\xb1\xb9\xbf\xd5\xc0\xc7" " " ""
+	"\xc0\xe5\xb4\xeb\xc7\xd4\xb0\xfa" " " "\xb9\xcc\xbc\xfa" "(" ""
+	"\xc7\xd0\xb1\xb3" ")" "\xc0\xc7" " " ""
+	"\xb9\xdf\xc0\xfc\"\r\xc8\xc4\xbe\xc6\xbd\xba",                       /* 30: 43104 */
+	"\"" "\xc0\xcc\xc7\xc7\xb0\xd4\xb4\xcf\xbe\xc6\xc0\xc7" " " ""
+	"\xc8\xf1\xbb\xfd\"\r\xbb\xfe\xb8\xa6" " " "\xb5\xe9" " " ""
+	"\xb6\xf3" " " "\xc6\xf7\xbd\xba",                                    /* 31: 43130 */
+	"\"" "\xb7\xe7\xc0\xcc" " 14" "\xbc\xbc\xc0\xc7" " " ""
+	"\xc8\xe4\xbb\xf3\"\r\xba\xa3\xb8\xa3\xb4\xcf\xb4\xcf",               /* 32: 43131 */
+	"\"" "\xb4\xd9\xc0\xcc\xbe\xc6\xb3\xaa\xb0\xa1" " " ""
+	"\xc0\xe1\xb5\xe9\xbe\xee\xc0\xd6\xb4\xc2" " " ""
+	"\xbf\xa3\xb5\xf0\xb9\xcc\xbf\xc2" "(" "\xb4\xde\xc0\xc7" " " ""
+	"\xbf\xa9\xbd\xc5" " Selene" "\xc0\xc7" " " ""
+	"\xbb\xe7\xb6\xfb\xc0\xbb" " " "\xb9\xde\xb4\xc2" " " ""
+	"\xbe\xe7\xc4\xa1\xb1\xe2" " " "\xb9\xcc\xbc\xd2\xb3\xe2" ")" ""
+	"\xc0\xbb" " " ""
+	"\xb9\xdf\xb0\xdf\xc7\xcf\xb4\xd9\"\r\xb0\xa1\xba\xea\xb8\xae\xbf\xa4" ""
+	" " "\xba\xed\xb6\xfb\xc2\xf7",                                       /* 33: 43132 */
+	"\"" "\xbc\xba" " " "\xba\xa3\xb5\xe5\xb7\xce\xbf\xcd" " " ""
+	"\xb5\xbf\xc1\xa4\xb3\xe0" " " ""
+	"\xb8\xb6\xb8\xae\xbe\xc6\"\r\xc0\xcf" " " ""
+	"\xb1\xb8\xbf\xa1\xb8\xa3\xbd\xc3\xb3\xeb",                           /* 34: 43140 */
+	"\"" "\xbf\xa5\xb8\xb6\xbf\xec\xbd\xba\xbf\xa1\xbc\xad\xc0\xc7" " " ""
+	"\xbb\xe7\xb5\xb5\xb5\xe9\"\r\xba\xa3\xb7\xce\xb3\xd7\xc1\xee",       /* 35: 43141 */
+	"\"" ""
+	"\xbd\xc5\xbc\xba\xb0\xa1\xc1\xb7\"\r\xba\xa3\xb7\xce\xb3\xd7\xc1\xee",/* 36: 43142 */
+	"\"" "\xbe\xcb\xb7\xba\xbb\xea\xb4\xf5\xc0\xc7" " " ""
+	"\xb9\xdf\xb9\xd8\xbf\xa1" " " "\xc0\xd6\xb4\xc2" " " ""
+	"\xb4\xd9\xb8\xae\xbf\xec\xbd\xba" " " ""
+	"\xb0\xa1\xc1\xb7\"\r\xbb\xfe\xb8\xa6" " " "\xb8\xa3" " " ""
+	"\xba\xea\xb7\xf8",                                                   /* 37: 43143 */
+	"\"" "\xbc\xbc\xb7\xca" " " ""
+	"\xbf\xe4\xc7\xd1\"\r\xb6\xf3\xc6\xc4\xbf\xa4",                       /* 38: 43144 */
+	"\"" "\xb8\xb6\xb8\xae" " " "\xb5\xe5" " " ""
+	"\xb8\xde\xb5\xf0\xc4\xa1\"\r\xb9\xdd" " " ""
+	"\xb4\xd9\xc0\xcc\xc5\xa9",                                           /* 39: 43150 */
+	"\"" "\xbe\xc6\xc4\xcc\xb7\xce\xbf\xec\xbd\xba\xbf\xcd" " " ""
+	"\xbd\xce\xbf\xec\xb4\xc2" " " ""
+	"\xc7\xec\xb8\xa3\xc5\xa7\xb7\xb9\xbd\xba\"\r\xb1\xb8\xc0\xcc\xb5\xb5" ""
+	" " "\xb7\xb9\xb4\xcf",                                               /* 40: 43151 */
+	"\"" "\xb5\xa5\xc0\xcc\xbe\xc6\xb3\xd7\xc0\xcc\xbe\xc6" "(" ""
+	"\xc7\xec\xb8\xa3\xc5\xa7\xb7\xb9\xbd\xba\xc0\xc7" " " ""
+	"\xbe\xc6\xb3\xbb" ")" "\xb8\xa6" " " ""
+	"\xbb\xaf\xbe\xc6\xb0\xa1\xb4\xc2" " " ""
+	"\xc4\xcb\xc5\xb8\xbf\xec\xb7\xce\xbd\xba" " " ""
+	"\xb3\xd7\xbc\xad\xbd\xba\"\r\xb1\xb8\xc0\xcc\xb5\xb5" " " ""
+	"\xb7\xb9\xb4\xcf",                                                   /* 41: 43152 */
+	"\"" "\xbc\xba\xc8\xe7" "(" "\xe1\xa1\xfd\xdd" ")" "\xc0\xbb" " " ""
+	"\xb9\xde\xc0\xba" " " "\xc8\xc4" " " "\xc0\xa7\xbe\xc8\xc0\xbb" " "
+	"" "\xb4\xc0\xb3\xa2\xb4\xc2" " " ""
+	"\xbe\xc6\xbd\xc3\xbd\xc3\xc0\xc7" " " "\xbc\xba" " " ""
+	"\xc7\xc1\xb6\xf5\xbd\xc3\xbd\xba\xc4\xda\"\r\xc1\xa6\xb0\xa1\xbd\xba",/* 42: 43153 */
+	"\"" "\xc4\xfb\xb7\xce\xbd\xba\xc0\xc7" " " ""
+	"\xb8\xd3\xb8\xae\xb8\xa6" " " "\xc7\xc7\xb7\xce" " " ""
+	"\xb9\xb0\xb5\xe9\xc0\xcc\xb4\xc2" " " ""
+	"\xc5\xe4\xb9\xcc\xb8\xae\xbd\xba\"\r\xb7\xe7\xba\xa5\xbd\xba",       /* 43: 43154 */
+	"\"" "\xc8\xf7\xb5\xe5\xb6\xf3\xb8\xa6" " " ""
+	"\xc1\xd7\xc0\xcc\xb4\xc2" " " ""
+	"\xc7\xec\xb8\xa3\xc5\xa7\xb7\xb9\xbd\xba\"\r\xb1\xb8\xc0\xcc\xb5\xb5" ""
+	" " "\xb7\xb9\xb4\xcf",                                               /* 44: 43155 */
+	"\"" "\xc8\xef\xba\xd0\xc7\xd1" " " ""
+	"\xc7\xec\xb8\xa3\xc5\xa7\xb7\xb9\xbd\xba\"\r\xb1\xb8\xc0\xcc\xb5\xb5" ""
+	" " "\xb7\xb9\xb4\xcf" " ",                                           /* 45: 43156 */
+	"\"" "\xbb\xa1\xb6\xfb\xb6\xaf" " " "\xbf\xd5\xc0\xda\xbf\xcd" " " ""
+	"\xb1\xd7\xc0\xc7" " " "\xc7\xfc\xc1\xa6\xc0\xce" " " ""
+	"\xb7\xce\xba\xa3\xb8\xa3" " " "\xbf\xd5\xc1\xb6\xc0\xc7" " " ""
+	"\xc3\xca\xbb\xf3\xc8\xad\"\r\xb9\xdd" " " ""
+	"\xb4\xd9\xc0\xcc\xc5\xa9",                                           /* 46: 43157 */
+	"\"" "\xbd\xca\xc0\xda\xb0\xa1\xbf\xa1" " " ""
+	"\xb8\xf8\xb9\xdb\xc7\xf4" " " "\xc0\xd6\xb4\xc2" " " ""
+	"\xb1\xd7\xb8\xae\xbd\xba\xb5\xb5\"\r\xbb\xfe\xb8\xa6" " " ""
+	"\xb8\xa3" " " "\xba\xea\xb7\xf8" " ",                                /* 47: 45260 */
+};
+
+static const Subtitle versaillesKOsubtitles[] = {
+	{
+		"a0_vf.hns", {
+			{
+				75, "\xc5\xc2\xbe\xe7\xc0\xcc" " " "\xc0\xcf\xb3\xe2" " " ""
+				"\xc1\xdf\xbf\xa1\xbc\xad" " " "\xb0\xa1\xc0\xe5" " " ""
+				"\xb3\xf4\xc0\xcc" " " "\xb6\xb9\xc0\xbb" " " "\xb6\xa7"
+			},
+			{
+				95, "\xbe\xcb\xbd\xc5" " " "\xb1\xc3\xc0\xfc\xb0\xfa" " " ""
+				"\xb0\xb0\xc0\xba"
+			},
+			{115, "\xba\xa3\xb8\xa3\xbb\xe7\xc0\xcc\xc0\xaf" " " "\xbc\xba\xc0\xba"},
+			{
+				130, "\xc7\xcf\xb4\xc3\xbf\xa1\xbc\xad" " " ""
+				"\xba\xd2\xb2\xc9\xc3\xb3\xb7\xb3" "  " ""
+				"\xc5\xb8\xbf\xc0\xb8\xa3\xb0\xed"
+			},
+			{
+				150, "\xbe\xc6\xb9\xab\xb0\xcd\xb5\xb5" " " "\xb3\xb2\xc1\xf6" " " ""
+				"\xbe\xca\xc0\xb8\xb8\xae\xb6\xf3" "."
+			},
+			{180, ""},
+			{
+				210, "\xb1\xb9\xbf\xd5\xb2\xb2\xbc\xad\xb4\xc2" " " "\xbe\xee\xb6\xb2" ""
+				" " "\xb9\xcc\xc4\xa3" " " "\xc0\xda\xc0\xc7" " " ""
+				"\xc1\xfe\xc0\xcc\xb6\xf3\xb0\xed" " " ""
+				"\xbb\xfd\xb0\xa2\xc7\xcf\xbd\xc5\xb4\xd9" ". " ""
+				"\xc0\xaf\xc4\xa1\xc7\xd1" " " "\xbb\xf3\xbb\xf3\xc0\xc7" " " ""
+				"\xb0\xe1\xb0\xfa\xb6\xf3\xb0\xed" "...."
+			},
+			{
+				250, "\xb8\xf0\xb5\xe7" " " "\xb9\xab\xb8\xae\xb5\xe9\xb0\xfa" " " ""
+				"\xc7\xd4\xb2\xb2"
+			},
+			{
+				270, "\xba\xc0\xb6\xa5\xc0\xbb" " " ""
+				"\xc7\xd8\xb9\xe6\xbd\xc3\xc5\xb0\xb7\xc1\xb4\xc2" " " ""
+				"\xbd\xc3\xb5\xb5\xb4\xc2" " "
+			},
+			{
+				290, "\xb0\xe1\xb1\xb9" " " "\xbd\xc7\xc6\xd0\xc7\xd2" " " ""
+				"\xb0\xcd\xc0\xcc\xb4\xd9"
+			},
+			{
+				310, "\xbd\xc3\xb0\xa3\xc0\xcc" " " "\xb4\xd9" " " ""
+				"\xb5\xc7\xbe\xfa\xb1\xe2\xbf\xa1"
+			},
+			{
+				325, "\xb1\xd7\xb8\xae\xb0\xed" " " "\xb3\xaa\xb4\xc2" " " ""
+				"\xba\xb0\xc3\xb3\xb7\xb3" " " "\xba\xfb\xb3\xaa\xb4\xc2" " " ""
+				"\xbf\xd5\xbf\xa1\xb0\xd4" " " "\xb9\xdd\xc7\xd7\xc7\xd1\xb4\xd9"
+			},
+			{
+				350, "\xbf\xd5\xc0\xc7" " " "\xc1\xd6\xc0\xa7\xb8\xa6" " " ""
+				"\xb5\xb5\xb4\xc2" " " "\xc7\xe0\xbc\xba\xb0\xfa"
+			},
+			{
+				370, "\xc1\xa6\xb8\xf1\xb0\xfa" " " "\xc7\xa5\xc1\xa6\xb5\xe9" " " ""
+				"\xb1\xd7\xb8\xae\xb0\xed"
+			},
+			{
+				390, "\xba\xd2\xc5\xb8\xb4\xc2" " " "\xc8\xb6\xba\xd2" " " ""
+				"\xbe\xc6\xb7\xa1" " " "\xb3\xaa\xc5\xb8\xb3\xaa\xb4\xc2"
+			},
+			{
+				410, "\xc0\xcc\xbc\xd9\xc0\xc7" " " "\xbe\xcf\xc8\xa3\xb8\xa6" " " ""
+				"\xb0\xae\xb0\xed\xbc\xad"
+			},
+			{
+				430, "\xb3\xaa\xb4\xc2" " " "\xbc\xf6\xbc\xf6\xb2\xb2\xb3\xa2\xbf\xcd" ""
+				" " "\xc0\xbd\xb8\xf0\xb8\xa6" " " ""
+				"\xc3\xa3\xbe\xc6\xb0\xa1\xb3\xeb\xb6\xf3"
+			},
+			{
+				450, "\xc0\xcc\xb0\xc7" " " "\xb8\xb6\xc4\xa1" " " ""
+				"\xbf\xef\xba\xce\xc2\xa2\xb4\xc2" " " "\xbe\xee\xb6\xb2" " " ""
+				"\xc0\xbd\xb8\xf0\xc3\xb3\xb7\xb3" " " ""
+				"\xb5\xe9\xb8\xae\xb4\xc2\xb1\xba" "! " "\xb1\xb9\xbf\xd5\xc0\xbb" ""
+				" " "\xb8\xf0\xbc\xc5\xbe\xdf" " " "\xc7\xcf\xb1\xe2" " " ""
+				"\xb6\xa7\xb9\xae\xbf\xa1" " " "\xb3\xad" " " "\xc0\xcc" " " ""
+				"\xc0\xcf\xc0\xbb" " " "\xc1\xb6\xbb\xe7\xc7\xd2" " " "\xbc\xf6" " "
+				"" "\xbe\xf8\xb3\xd7" ". " "\xb6\xf3\xb6\xfb\xb5\xe5" ", " ""
+				"\xbb\xe7\xb0\xc7\xc0\xbb" " " "\xb8\xc3\xbe\xc6\xc1\xd6\xb0\xd4" ""
+				". " "\xc4\xa7\xbd\xc7\xc0\xc7" " " ""
+				"\xbd\xc3\xc1\xbe\xc0\xb8\xb7\xce\xbc\xad" ", " ""
+				"\xb9\xe6\xc7\xd8\xb9\xde\xc1\xf6" " " "\xbe\xca\xb0\xed" " " ""
+				"\xbe\xee\xb5\xf0\xb5\xe7\xc1\xf6" " " "\xb0\xa5" " " "\xbc\xf6" " "
+				"" "\xc0\xd6\xb3\xd7" "."
+			},
+			{
+				536, "\xc0\xda\xb3\xd9" " " "\xbc\xba" ", " "\xbb\xe7\xb6\xf7\xb5\xe9" ""
+				", " "\xb1\xd7\xb8\xae\xb0\xed" " " "\xb0\xfc\xbd\xc0\xbf\xa1" " " ""
+				"\xb4\xeb\xc7\xd8" " " "\xc0\xdf" " " "\xbe\xcb\xb0\xed" " " ""
+				"\xc0\xd6\xc1\xf6" ". " "\xb0\xe8\xbc\xd3" " " ""
+				"\xc1\xfa\xb9\xae\xc0\xbb" " " "\xc7\xcf\xb0\xed" " " ""
+				"\xbc\xf6\xbb\xf3\xc7\xd1" " " "\xb0\xcd\xc0\xcc" " " ""
+				"\xb9\xdf\xb0\xdf\xb5\xc7\xb0\xc5\xb5\xe7" " " ""
+				"\xb3\xaa\xbf\xa1\xb0\xd4" " " "\xba\xb8\xb0\xed\xc7\xcf\xb0\xd4" ""
+				"."
+			},
+			{
+				622, "\xc7\xcf\xc1\xf6\xb8\xb8" " " "\xc1\xb6\xbd\xc9\xc7\xcf\xb0\xd4" ""
+				"! " "\xbe\xee\xb6\xb2" " " "\xb9\xcc\xc4\xa3" " " ""
+				"\xc0\xdb\xc0\xda\xb0\xa1" " " "\xb1\xb9\xbf\xd5\xc0\xbb" " " ""
+				"\xbd\xc3\xc7\xd8\xc7\xcf\xb7\xc1\xc7\xd1\xb4\xd9\xb0\xed" " " ""
+				"\xbc\xd2\xb9\xae\xc0\xbb" " " ""
+				"\xc6\xdb\xb6\xdf\xb8\xae\xc1\xf6\xb4\xc2" " " "\xb8\xbb\xb0\xd4" ""
+				"! " "\xbc\xad\xb5\xce\xb8\xa3\xb0\xd4" ", " "\xb4\xdc" " " ""
+				"\xc7\xcf\xb7\xe7\xc0\xc7" " " "\xbd\xc3\xb0\xa3" " " ""
+				"\xb9\xdb\xbf\xa1\xb4\xc2" " " "\xbe\xf8\xbe\xee" "."
+			},
+			{690, "8" "\xbd\xc3" " " "\xb9\xdd\xc0\xcc\xb1\xba" "."},
+		}
+	}, /* a0_vf.hns */
+	{
+		"a1_vf.hns", {
+			{
+				358, "\xc6\xf3\xc7\xcf" ", " "\xbd\xc3\xb0\xa3\xc0\xcc" " " ""
+				"\xb5\xc7\xbe\xfa\xbd\xc0\xb4\xcf\xb4\xd9" "."
+			},
+			{
+				388, "\xb1\xb9\xbf\xd5\xc0\xcc" " " "\xc0\xe1\xbf\xa1\xbc\xad" " " ""
+				"\xb1\xfa\xc0\xda" ", " "\xc1\xd6\xc4\xa1\xc0\xc7\xc0\xce" " " ""
+				"\xb4\xd9\xb2\xa4\xc0\xcc" " " "\xb1\xd7\xc0\xc7" " " ""
+				"\xbe\xc8\xba\xce\xb8\xa6" " " "\xb9\xaf\xb4\xc2\xb4\xd9" "."
+			},
+			{
+				440, "\xc6\xf3\xc7\xcf\xb2\xb2\xbc\xb1" " " "\xc0\xdf" " " ""
+				"\xc1\xd6\xb9\xab\xbc\xcc\xbd\xc0\xb4\xcf\xb1\xee" "? " ""
+				"\xb3\xca\xb9\xab" " " "\xb4\xfe\xc1\xf6\xb4\xc2" " " ""
+				"\xbe\xca\xbe\xd2\xbd\xc0\xb4\xcf\xb1\xee" "? " ""
+				"\xb8\xb6\xbb\xe7\xc1\xf6\xb8\xa6" " " ""
+				"\xb9\xde\xc0\xb8\xbd\xc3\xb0\xda\xbd\xc0\xb4\xcf\xb1\xee" "?"
+			},
+			{500, "\xb0\xed\xb8\xbf\xb1\xba" ", " "\xb4\xd9\xb2\xb7" "."},
+			{
+				510, "\xc6\xf3\xc7\xcf\xb2\xb2\xbc\xb1" " " "\xc1\xf6\xb3\xad" " " ""
+				"\xb5\xce" " " "\xb4\xde\xb0\xa3" " " "\xbe\xc6\xc1\xd6" " " ""
+				"\xb0\xc7\xb0\xad\xc7\xcf\xbd\xca\xb4\xcf\xb4\xd9" "."
+			},
+			{550, ""},
+			{
+				580, "\xba\xc0\xb6\xa5\xc0\xcc" " " "\xb1\xb9\xbf\xd5\xc0\xc7" " " ""
+				"\xbc\xd5\xc0\xbb" " " "\xbe\xc4\xb4\xc2" " " "\xb5\xbf\xbe\xc8" ""
+				", " "\xb8\xc5\xc0\xcf" " " "\xbe\xc6\xc4\xa7" " " ""
+				"\xb1\xd7\xb7\xa8\xb4\xf8" " " "\xb0\xcd\xc3\xb3\xb7\xb3" " " ""
+				"\xb0\xa1\xc1\xb7\xc0\xcc" " " "\xb5\xb5\xc2\xf8\xc7\xd1\xb4\xd9" ""
+				". " "\xb9\xab\xbd\xc3\xc0\xaf" ", " "\xb1\xb9\xbf\xd5\xc0\xc7" " " ""
+				"\xb5\xbf\xbb\xfd" ", " "\xb8\xf9\xbc\xbc\xb4\xba" ", " ""
+				"\xb5\xb5\xc6\xd8" ", " "\xb8\xc7\xb4\xc0" " " ""
+				"\xb0\xf8\xc0\xdb\xc0\xcc" " " "\xb1\xb9\xbf\xd5\xc0\xbb" " " ""
+				"\xbe\xcb\xc7\xf6\xc7\xcf\xb1\xe2" " " "\xc0\xa7\xc7\xd8" " " ""
+				"\xb5\xb5\xc2\xf8\xc7\xdf\xb4\xd9" "."
+			},
+			{713, ""},
+			{
+				750, "\xc0\xda" ", " "\xb3\xbb" " " "\xbe\xc6\xb5\xe9\xbe\xc6" ", " ""
+				"\xbf\xc0\xb4\xc3" " " "\xbe\xc6\xc4\xa7\xbf\xa1\xb4\xc2" " " ""
+				"\xbe\xf0\xc1\xa6" " " "\xc0\xcc\xb8\xae" " " ""
+				"\xbb\xe7\xb3\xc9\xc0\xbb" " " "\xc7\xcf\xb7\xaf" " " ""
+				"\xb3\xaa\xbc\xb9\xb4\xc0\xb3\xc4" "?"
+			},
+			{795, ""},
+		}
+	}, /* a1_vf.hns */
+	{
+		"a2_vf.hns", {
+			{
+				60, "\xbe\xc6\xb4\xd5\xb4\xcf\xb4\xd9" ". " "\xb4\xe7\xbd\xc5\xc0\xc7" ""
+				" " "\xc0\xdc\xc0\xce\xc7\xd1" " " "\xb9\xe6\xb9\xfd\xc0\xba" " " ""
+				"\xbf\xd5\xb1\xb9\xc0\xc7" " " "\xc6\xf2\xc8\xad\xb8\xa6" " " ""
+				"\xba\xb8\xc1\xb8\xc7\xd2" " " "\xbc\xf6" " " ""
+				"\xbe\xf8\xc0\xbb\xb0\xcc\xb4\xcf\xb4\xd9" "."
+			},
+			{
+				74, "\xb4\xd9\xb8\xa5" " " "\xc0\xcc\xb5\xe9\xc0\xba" " " ""
+				"\xc8\xae\xbd\xc5\xc7\xcf\xb0\xed" " " "\xc0\xd6\xc1\xf6\xbf\xe4" ""
+				", " "\xb1\xb9\xbf\xd5\xb2\xb2\xbc\xad" " " ""
+				"\xb5\xda\xb6\xf3\xb8\xa6" " " "\xc6\xf7\xb8\xa3\xbd\xba" " " ""
+				"\xb0\xf8\xc0\xdb\xbf\xa1\xb0\xd4" " " ""
+				"\xba\xb8\xb3\xbb\xb6\xf3\xb0\xed" " " ""
+				"\xb8\xbb\xbe\xb8\xc7\xcf\xbc\xcc\xb4\xd9\xb4\xc2" " " ""
+				"\xb0\xcd\xc0\xbb" "..."
+			},
+			{
+				130, "\xbe\xc6\xb8\xb6\xb5\xb5" ", " "\xb1\xd7\xb4\xc2" " " "\xb1\xd7" ""
+				" " "\xb0\xf8\xc0\xdb\xc0\xc7" " " "\xb0\xb3\xc1\xbe\xc0\xbb" " " ""
+				"\xbe\xf2\xbe\xee\xb3\xbe" " " "\xbc\xf6" " " ""
+				"\xbe\xf8\xc0\xbb\xb0\xcc\xb4\xcf\xb4\xd9" "."
+			},
+			{160, ""},
+			{
+				200, "\xb1\xb9\xbf\xd5\xc0\xc7" " " "\xbe\xc6\xc4\xa7" " " ""
+				"\xbf\xb9\xbd\xc4\xc0\xba" " " ""
+				"\xbc\xbc\xc1\xa4\xbd\xc4\xc0\xb8\xb7\xce" " " "\xb3\xa1\xc0\xbb" ""
+				" " "\xb8\xce\xb4\xc2\xb4\xd9" ". " "\xc3\xb9" " " ""
+				"\xb9\xe6\xb9\xae\xb0\xb4" " " "\xc1\xdf" " " ""
+				"\xc7\xe3\xb6\xf4\xb5\xc8" " " "\xbd\xc5\xc7\xcf\xb5\xe9" " " ""
+				"\xbe\xd5\xbf\xa1\xbc\xad" ", " "\xc0\xcc\xb9\xdf\xbb\xe7\xb4\xc2" ""
+				" " "\xb1\xb9\xbf\xd5\xc0\xc7" " " ""
+				"\xb8\xf6\xb4\xdc\xc0\xe5\xc0\xbb" " " "\xc7\xcf\xb0\xed" " " ""
+				"\xb0\xa1\xb9\xdf\xc0\xbb" " " "\xbe\xba\xbf\xee\xb4\xd9" "."
+			},
+			{307, ""},
+			{
+				360, "\xb1\xd7\xb7\xaf\xb8\xe9" " " "\xbf\xb9\xba\xb9" " " ""
+				"\xc0\xc7\xbd\xc4\xc0\xbb" " " "\xc0\xa7\xc7\xd8" " " ""
+				"\xb1\xb9\xbf\xd5\xc0\xcc" " " "\xbb\xec\xb7\xd5\xc0\xb8\xb7\xce" ""
+				" " "\xb3\xaa\xb0\xa1\xb5\xb5\xb7\xcf" " " ""
+				"\xc1\xd8\xba\xf1\xb5\xc8\xb4\xd9" "."
+			},
+			{406, ""},
+			{
+				440, "\xbd\xc2\xc0\xce\xb5\xc8" " " "\xbd\xc5\xc7\xcf\xb0\xa1" " " ""
+				"\xb1\xb9\xbf\xd5\xc0\xcc" " " "\xbe\xc6\xc4\xa7" " " ""
+				"\xbd\xc4\xbb\xe7\xb8\xa6" " " "\xc7\xcf\xb4\xc2" " " ""
+				"\xb5\xbf\xbe\xc8" " " "\xc7\xd4\xb2\xb2" " " "\xc7\xd1\xb4\xd9" ""
+				"."
+			},
+			{
+				520, "\xb0\xa2\xc0\xda" " " "\xb1\xb9\xbf\xd5\xc0\xcc" " " ""
+				"\xc3\xc4\xb4\xd9\xba\xc1" " " "\xc1\xd6\xb1\xe2\xb8\xa6" " " ""
+				"\xb9\xd9\xb6\xf3\xb0\xed" " " "\xc0\xd6\xc0\xb8\xb8\xe7" ", " ""
+				"\xb1\xb9\xbf\xd5\xb2\xb2" " " "\xbe\xc8\xba\xce\xb8\xa6" " " ""
+				"\xbf\xa9\xc2\xe3\xb0\xed" ", " "\xb0\xa2\xc1\xbe" " " ""
+				"\xbc\xd2\xb9\xae\xc0\xbb" " " ""
+				"\xc6\xdb\xb6\xdf\xb8\xae\xb0\xc5\xb3\xaa" " " ""
+				"\xb5\xe8\xb4\xc2\xb4\xd9" "."
+			},
+			{
+				600, "\xbd\xc3\xc1\xbe\xb5\xe9\xc0\xcc" " " "\xb1\xb9\xbf\xd5\xc0\xc7" ""
+				" " "\xb8\xe9\xb5\xb5\xb8\xa6" " " "\xc7\xd8\xc1\xd6\xb0\xed" " " ""
+				"\xbc\xd5\xc0\xbb" " " "\xbe\xc4\xbe\xee" " " "\xc1\xd6\xb0\xed" " "
+				"" "\xbf\xca\xc0\xbb" " " "\xc0\xd4\xc7\xf4" " " "\xc1\xd8\xb4\xd9" ""
+				". " "\xc0\xcc\xb7\xb1" " " "\xb1\xb9\xbf\xd5\xc0\xc7" " " ""
+				"\xc0\xcf\xbb\xf3\xc0\xba" " " "\xbb\xe7\xb6\xf7\xb5\xe9" " " ""
+				"\xbe\xd5\xbf\xa1\xbc\xad" " " "\xc1\xf8\xc7\xe0\xb5\xc8\xb4\xd9" ""
+				".."
+			},
+			{679, ""},
+			{
+				815, "\xbf\xca\xc0\xbb" " " "\xc0\xd4\xc0\xba" " " "\xc8\xc4" ", " ""
+				"\xb1\xb9\xbf\xd5\xc0\xba" " " "\xc4\xa7\xbd\xc7\xb7\xce" " " ""
+				"\xb5\xb9\xbe\xc6\xb0\xa1" " " "\xb0\xa3\xb4\xdc\xc7\xd1" " " ""
+				"\xbe\xc6\xc4\xa7" " " "\xb1\xe2\xb5\xb5\xb8\xa6" " " ""
+				"\xb5\xe5\xb8\xb0\xb4\xd9" "."
+			},
+			{860, ""},
+			{
+				948, "\xb1\xe2\xb5\xb5\xb8\xa6" " " "\xb5\xe5\xb8\xb0" " " "\xc8\xc4" ""
+				", " "\xbd\xc5\xc7\xcf\xb5\xe9\xb0\xfa" " " "\xc7\xd4\xb2\xb2" " " ""
+				"\xb1\xb9\xbf\xd5\xc0\xba" " " "\xc8\xb8\xc0\xc7\xbd\xc7\xb7\xce" ""
+				" " "\xb0\xa1\xbc\xad" " " "\xbf\xd5\xb1\xb9\xbf\xa1" " " ""
+				"\xb0\xfc\xc7\xd1" " " "\xc0\xcf\xc0\xbb" " " ""
+				"\xb3\xed\xc0\xc7\xc7\xd1\xb4\xd9" "."
+			},
+			{1027, ""},
+		}
+	}, /* a2_vf.hns */
+	{
+		"a3_vf.hns", {
+			{
+				30, "\xbf\xb9\xba\xb9" " " "\xc0\xc7\xbd\xc4\xc0\xcc" " " ""
+				"\xb3\xa1\xb3\xad" " " "\xc8\xc4" ", " "\xb1\xb9\xbf\xd5\xc0\xba" ""
+				" " "\xc8\xb8\xc0\xc7\xbd\xc7\xb7\xce" " " "\xb0\xa1\xbc\xad" " " ""
+				"\xbd\xc5\xc7\xcf\xb5\xe9\xb0\xfa" " " "\xc7\xd4\xb0\xd4" " " ""
+				"\xb1\xb9\xbb\xe7\xb8\xa6" " " "\xb4\xd9\xb7\xe7\xbe\xfa\xb4\xd9" ""
+				".  " "\xba\xf1\xb9\xd0\xc0\xbb" " " ""
+				"\xc0\xaf\xc1\xf6\xc7\xcf\xb1\xe2" " " "\xc0\xa7\xc7\xd8" " " ""
+				"\xc3\xe2\xc0\xd4\xc0\xcc" " " ""
+				"\xb1\xdd\xc1\xf6\xb5\xc7\xbe\xfa\xb4\xd9" "."
+			},
+			{
+				110, "\xbd\xc5\xc7\xcf" " " "\xc1\xdf" " " "\xb0\xa1\xc0\xe5" " " ""
+				"\xc1\xdf\xbf\xe4\xc7\xd1" " " "\xc0\xce\xb9\xb0\xc0\xce" " " ""
+				"\xb7\xe7\xba\xce\xbe\xc6" " " "\xc8\xc4\xc0\xdb\xc0\xcc" " " ""
+				"\xc7\xcf\xb7\xe7\xc0\xc7" " " "\xc0\xc7\xc1\xa6\xb8\xa6" " " ""
+				"\xb0\xf8\xc1\xf6\xc7\xdf\xb4\xd9" "."
+			},
+			{211, ""},
+			{280, "\xb8\xf0\xb5\xce" " " "\xbe\xc9\xc0\xb8\xbd\xc3\xbf\xc0" "!"},
+			{
+				290, "\xb1\xb9\xbf\xd5\xc0\xba" " " "\xbf\xa9\xb7\xaf" " " ""
+				"\xc0\xc7\xb0\xdf\xc0\xbb" " " "\xb5\xe8\xb0\xed" ", " ""
+				"\xb0\xe1\xc1\xa4\xc0\xbb" " " "\xb3\xbb\xb7\xc8\xb4\xd9" ". " ""
+				"\xc7\xd7\xbb\xf3" " " "\xb1\xd7\xb4\xc2" " " ""
+				"\xb1\xc7\xc0\xa7\xb8\xa6" " " "\xc0\xd2\xc1\xf6" " " ""
+				"\xbe\xca\xbe\xd2\xb4\xd9" "."
+			},
+			{
+				360, "\xb1\xd7\xb5\xbf\xbe\xc8" " " "\xc1\xb6\xbd\xc5\xb5\xe9\xc0\xba" ""
+				" " "\xb1\xb9\xbf\xd5\xc0\xcc" " " "\xc8\xa6\xbf\xa1" " " ""
+				"\xb8\xf0\xbd\xc0\xc0\xbb" " " ""
+				"\xb5\xe5\xb7\xaf\xb3\xbb\xb1\xe2\xb8\xa6" " " ""
+				"\xb1\xe2\xb4\xd9\xb7\xc8\xb4\xd9" "."
+			},
+			{411, ""},
+			{
+				440, "\xbf\xa9\xb7\xaf\xba\xd0" ", " "\xb1\xb9\xbf\xd5\xb2\xb2\xbc\xad" ""
+				" " "\xbf\xc0\xbc\xcc\xbd\xc0\xb4\xcf\xb4\xd9" "."
+			},
+			{450, ""},
+			{
+				550, "\xc1\xa4\xbf\xc0\xb0\xa1" " " "\xb5\xc7\xbe\xfa\xb4\xd9" ".  " ""
+				"\xb1\xb9\xbf\xd5\xc0\xba" " " "\xb9\xcc\xbb\xe7\xbf\xa1" " " ""
+				"\xc2\xfc\xbc\xae\xc7\xd1\xb4\xd9" ". " "\xc1\xb6\xbd\xc5\xc0\xba" ""
+				" " "\xb1\xd7" " " "\xb5\xda\xb8\xa6" " " ""
+				"\xb5\xfb\xb8\xa5\xb4\xd9" ".  " "\xb1\xb9\xbf\xd5\xc0\xba" " " ""
+				"\xbf\xd5\xc0\xda\xbf\xcd" " " "\xb0\xf8\xc1\xd6\xbf\xcd" " " ""
+				"\xc7\xd4\xb2\xb2" " '" "\xc0\xa7\xb4\xeb\xc7\xd1" " " "\xb9\xe6" ""
+				"'" "\xc0\xbb" " " "\xb0\xa1\xb7\xce\xc1\xfa\xb7\xaf" " " ""
+				"\xbf\xb9\xb9\xe8\xb4\xe7\xc0\xb8\xb7\xce" " " ""
+				"\xc7\xe2\xc7\xd1\xb4\xd9" "."
+			},
+			{687, ""},
+			{
+				728, "\xba\xce\xb5\xf0" " " "\xc0\xcc" " " "\xc5\xba\xbf\xf8\xc0\xbb" " "
+				"" "\xb5\xe9\xbe\xee\xc1\xd6\xbd\xca\xbd\xc3\xbf\xc0" ", " ""
+				"\xc6\xf3\xc7\xcf" ". " "\xc0\xdc\xc0\xce\xc7\xd1" " " ""
+				"\xbc\xd2\xbc\xdb\xc0\xc7" " " "\xc8\xf1\xbb\xfd\xb9\xb0\xc0\xcc" ""
+				" " "\xb5\xc8" " " "\xb3\xaa\xc0\xc7" " " ""
+				"\xc1\xb6\xc4\xab\xb8\xa6" " " "\xb4\xeb\xbd\xc5\xc7\xd8" " " ""
+				"\xb1\xb9\xbf\xd5\xb2\xb2" " " ""
+				"\xb0\xa3\xc3\xbb\xc7\xd5\xb4\xcf\xb4\xd9" "."
+			},
+			{805, "\xbe\xcb\xb0\xda\xb4\xd9" ", " "\xbe\xcb\xb0\xda\xb4\xd9" "...."},
+			{840, ""},
+			{
+				1060, "\xb1\xb9\xbf\xd5\xc0\xba" " " "\xc8\xb2\xbd\xc7" " " ""
+				"\xb0\xb6\xb7\xaf\xb8\xae\xbf\xa1" " " ""
+				"\xc2\xfc\xbc\xae\xc7\xdf\xb0\xed" ", " "\xbf\xd5\xc0\xda\xbf\xcd" ""
+				" " "\xb0\xf8\xc1\xd6\xb0\xa1" " " "\xb1\xd7" " " ""
+				"\xb5\xda\xb8\xa6" " " "\xc0\xa7\xb0\xe8" " " ""
+				"\xc1\xfa\xbc\xad\xbf\xa1" " " "\xb5\xfb\xb6\xf3" " " ""
+				"\xc0\xda\xb8\xae\xc7\xdf\xb4\xd9" ". " "\xb1\xb9\xbf\xd5\xc0\xba" ""
+				" " "\xc0\xcc\xbe\xdf\xb1\xe2\xc7\xcf\xb4\xc2" " " ""
+				"\xb0\xcd\xc0\xbb" " " "\xb1\xdd\xc7\xdf\xb0\xed" " " ""
+				"\xb0\xe6\xb0\xc7\xc7\xcf\xb5\xb5\xb7\xcf" " " ""
+				"\xbf\xe4\xb1\xb8\xc7\xdf\xb4\xd9" "."
+			},
+			{1220, ""},
+		}
+	}, /* a3_vf.hns */
+	{
+		"a4_vf.hns", {
+			{
+				90, "\xb9\xcc\xbb\xe7" " " "\xb5\xbf\xbe\xc8" ",  " "\xc8\xb2\xbd\xc7" ""
+				" " "\xbd\xc4\xb4\xe7\xc0\xc7" " " "\xb0\xfc\xb8\xae\xc0\xda" ", " ""
+				"\xb0\xed\xb1\xe2" " " "\xb1\xc1\xb4\xc2" " " "\xbb\xe7\xb6\xf7" ""
+				", " "\xbb\xa7" " " "\xb1\xc1\xb4\xc2" " " ""
+				"\xbb\xe7\xb6\xf7\xb0\xfa" " " "\xb1\xd7" " " ""
+				"\xba\xb8\xc1\xb6\xb5\xe9\xc0\xba" " " "\xb8\xb8\xc2\xf9\xc0\xbb" ""
+				" " "\xc1\xd8\xba\xf1\xc7\xcf\xb4\xc0\xb6\xf3" " " ""
+				"\xba\xd0\xc1\xd6\xc7\xdf\xb4\xd9" "."
+			},
+			{
+				200, "\xc0\xfc\xbc\xb3\xc0\xfb\xc0\xce" " " "\xbd\xc4\xbf\xe5\xc0\xbb" ""
+				" " "\xb0\xa1\xc1\xf6\xb0\xed" " " "\xc0\xd6\xb4\xc2" " " ""
+				"\xb1\xba\xc1\xd6\xb0\xa1" " " "\xbc\xd5\xb4\xeb\xc1\xf6" " " ""
+				"\xbe\xca\xc0\xba" " " "\xc0\xbd\xbd\xc4\xc0\xba" " " ""
+				"\xb4\xd9\xb8\xa5" " " "\xc0\xcc\xb5\xe9\xc0\xcc" " " ""
+				"\xb8\xd4\xb0\xd4" " " "\xb5\xc9" " " "\xb0\xcd\xc0\xcc\xb0\xed" ""
+				", " "\xba\xb8\xc5\xeb" " " "\xbb\xe7\xb6\xf7\xb5\xe9\xc0\xba" " " ""
+				"\xb1\xd7" " " "\xbd\xc4\xb4\xe7\xc0\xb8\xb7\xce\xba\xce\xc5\xcd" ""
+				" " "\xb3\xb2\xc0\xba" " " "\xb0\xcd\xc0\xbb" " " ""
+				"\xb1\xb8\xc0\xd4\xc7\xcf\xb4\xc2" " " "\xb0\xcd\xc0\xbb" " " ""
+				"\xb2\xa8\xb8\xae\xc1\xf6" " " "\xbe\xca\xbe\xd2\xb4\xd9" "."
+			},
+			{300, ""},
+			{
+				320, "\xb8\xb9\xc0\xba" " " "\xbb\xe7\xb6\xf7\xb5\xe9\xc0\xcc" " " ""
+				"\xc2\xfc\xbc\xae\xc7\xd1" " " "\xb8\xb8\xc2\xf9\xc0\xba" " " ""
+				"\xb8\xf0\xb5\xe7" " " "\xc1\xb6\xbd\xc5\xb5\xe9\xc0\xcc" " " ""
+				"\xbc\xad\xb5\xd1\xb7\xaf" " " "\xc2\xfc\xbc\xae\xc7\xcf\xb4\xc2" ""
+				" " "\xb8\xda\xc1\xf8" " " ""
+				"\xc0\xe5\xb0\xfc\xc0\xcc\xbe\xfa\xb4\xd9" "."
+			},
+			{
+				366, "\xbf\xa9\xb7\xaf\xba\xd0" ", " "\xb1\xb9\xbf\xd5\xb2\xb2\xbc\xad" ""
+				" " "\xbd\xc4\xbb\xe7\xc1\xdf\xc0\xcc\xbd\xca\xb4\xcf\xb4\xd9" "."
+			},
+			{393, ""},
+			{
+				610, "\xbf\xc0\xc1\xf7" " " "\xc8\xb2\xbd\xc7" " " ""
+				"\xb0\xa1\xc1\xb7\xb5\xe9\xb8\xb8\xc0\xcc" " " ""
+				"\xb1\xb9\xbf\xd5\xc0\xc7" " " "\xc5\xd7\xc0\xcc\xba\xed\xbf\xa1" ""
+				" " "\xbe\xc9\xc0\xbb" " " "\xbc\xf6" " " ""
+				"\xc0\xd6\xbe\xfa\xb0\xed" ", " "\xb0\xf8\xc0\xdb" " " ""
+				"\xba\xce\xc0\xce\xb5\xe9\xb8\xb8\xc0\xcc" " " "\xb1\xd7" " " ""
+				"\xbe\xd5\xbf\xa1" " " "\xbe\xc9\xc0\xbb" " " "\xbc\xf6" " " ""
+				"\xc0\xd6\xbe\xfa\xb4\xd9" "."
+			},
+			{685, ""},
+			{
+				705, "\xc0\xda" ", " "\xb3\xbb" " " "\xbe\xc6\xb5\xe9\xbe\xc6" ", " ""
+				"\xbf\xec\xb8\xae\xb8\xa6" " " "\xc0\xa7\xc7\xd1" " " ""
+				"\xc0\xdc\xc4\xa1\xb8\xa6" " " "\xc0\xdf" " " ""
+				"\xc1\xd8\xba\xf1\xc7\xcf\xb0\xed" " " "\xc0\xd6\xb4\xc0\xb3\xc4" ""
+				"?"
+			},
+			{747, ""},
+			{
+				760, "\xb8\xb8\xc2\xf9" " " "\xb5\xbf\xbe\xc8" ", " ""
+				"\xbc\xbc\xb0\xa1\xc1\xf6" " " "\xc4\xda\xbd\xba\xb0\xa1" " " ""
+				"\xb0\xa2\xb0\xa2" " " "\xbf\xa9\xbc\xb8" " " ""
+				"\xc1\xa2\xbd\xc3\xbf\xa1" " " "\xb4\xe3\xb0\xdc\xc1\xae" " " ""
+				"\xc1\xa6\xb0\xf8\xb5\xc7\xbe\xfa\xb4\xd9" ": " ""
+				"\xbd\xba\xc7\xc1\xbf\xcd" " " "\xc1\xa6" "1" "\xc4\xda\xbd\xba" ""
+				", " "\xb1\xb8\xbf\xee" " " "\xb0\xed\xb1\xe2\xbf\xcd" " " ""
+				"\xb5\xf0\xc0\xfa\xc6\xae" "..."
+			},
+			{847, ""},
+		}
+	}, /* a4_vf.hns */
+	{
+		"a5_vf.hns", {
+			{
+				13, "\xb8\xb8\xc2\xf9" " " "\xc8\xc4\xbf\xa1\xb4\xc2" " " ""
+				"\xb0\xfa\xc0\xcf\xc0\xcc" ",..."
+			},
+			{36, ""},
+			{
+				90, "..." "\xb1\xd7\xb7\xb1" " " "\xc8\xc4" " " ""
+				"\xb1\xb9\xbf\xd5\xc0\xba" " " "\xb1\xb9\xbb\xe7\xbf\xa1" " " ""
+				"\xb8\xee" " " "\xbd\xc3\xb0\xa3\xb5\xbf\xbe\xc8" " " ""
+				"\xc0\xfc\xb3\xe4\xc7\xdf\xb4\xd9" ". " "\xc0\xcc\xc1\xee\xc0\xbd" ""
+				" " "\xb8\xcd\xb6\xdf\xb3\xf3" " " ""
+				"\xc8\xc4\xc0\xdb\xba\xce\xc0\xce\xc0\xc7" " " ""
+				"\xb9\xe6\xbf\xa1\xbc\xad" " " "\xc1\xf7\xb9\xab\xb8\xa6" " " ""
+				"\xbc\xf6\xc7\xe0\xc7\xcf\xb4\xc2" " " "\xb0\xcd\xc0\xbb" " " ""
+				"\xc1\xc1\xbe\xc6\xc7\xdf\xb0\xed" ", " "\xc1\xbe\xc1\xbe" " " ""
+				"\xbd\xc5\xc7\xcf\xb5\xe9\xb0\xfa" " " "\xc7\xd4\xb2\xb2\xc0\xce" ""
+				" " "\xc3\xa4" " " "\xbc\xf6\xc7\xe0\xc7\xdf\xb4\xd9" "."
+			},
+			{
+				200, "\xb1\xd7\xb0\xa1" " " "\xba\xf1\xb9\xd0\xbd\xba\xb7\xb4\xb0\xd4" ""
+				" " "\xb0\xe1\xc8\xa5\xc7\xd1" " " "\xb1\xd7\xb3\xe0\xc0\xc7" " " ""
+				"\xb0\xc5\xc3\xb3\xbf\xa1\xbc\xad" " " ""
+				"\xc0\xda\xbd\xc5\xbf\xa1\xb0\xd4" " " "\xc7\xca\xbf\xe4\xc7\xd1" ""
+				" " "\xc6\xf2\xc8\xad\xbf\xcd" " " ""
+				"\xc6\xf2\xbf\xc2\xc7\xd4\xc0\xbb" " " "\xbe\xf2\xc0\xbb" " " ""
+				"\xbc\xf6" " " "\xc0\xd6\xbe\xfa\xb4\xd9" "."
+			},
+			{296, ""},
+			{
+				310, "\xbc\xbc" " " "\xbd\xc3\xb0\xa3" " " "\xb5\xbf\xbe\xc8" " " ""
+				"\xb1\xb9\xbf\xd5\xc0\xba" " " "\xbc\xad\xb7\xf9\xb8\xa6" " " ""
+				"\xbc\xbc\xb9\xd0\xc7\xcf\xb0\xd4" " " ""
+				"\xb0\xcb\xc5\xe4\xc7\xdf\xb4\xd9" "...."
+			},
+			{345, ""},
+			{
+				360, "\xc4\xab\xb5\xe5\xb3\xee\xc0\xcc\xb4\xc2" " " ""
+				"\xbd\xc5\xc7\xcf\xb5\xe9\xbf\xa1\xb0\xd4" " " ""
+				"\xc0\xd6\xbe\xee\xbc\xad" ", " "\xb1\xba\xc1\xd6\xb8\xa6" " " ""
+				"\xb5\xfb\xb6\xf3\xb4\xd9\xb4\xcf\xc1\xf6" " " ""
+				"\xbe\xca\xbe\xc6\xb5\xb5" " " "\xb5\xc7\xb4\xc2" " " ""
+				"\xb5\xe5\xb9\xae" " " "\xbc\xf8\xb0\xa3" " " "\xc1\xdf" " " ""
+				"\xc7\xcf\xb3\xaa\xbf\xb4\xb4\xd9" ". " "\xbe\xee\xb6\xb2" " " ""
+				"\xc0\xcc\xb4\xc2" " " "\xbe\xc6\xc1\xd6" " " ""
+				"\xbf\xad\xc1\xa4\xc0\xfb\xc0\xb8\xb7\xce" " " ""
+				"\xc4\xab\xb5\xe5\xb3\xee\xc0\xcc\xb8\xa6" " " "\xc7\xdf\xb4\xd9" ""
+				"."
+			},
+			{
+				460, "\xc4\xab\xb5\xe5" " " "\xc5\xd7\xc0\xcc\xba\xed\xc0\xba" " " ""
+				"\xc1\xa6\xb9\xfd" " " "\xbc\xf6\xc0\xd4\xc0\xbb" " " ""
+				"\xc1\xd6\xb1\xe2\xb5\xb5" " " "\xc7\xcf\xb4\xc2\xb5\xa5" ", " ""
+				"\xbe\xee\xb6\xb2" " " "\xc0\xcc\xb4\xc2" " " ""
+				"\xbc\xd3\xc0\xd3\xbc\xf6\xb8\xa6" " " "\xbd\xe1\xbc\xad" " " ""
+				"\xc8\xb2\xbd\xc7\xc0\xbb" " " ""
+				"\xba\xd2\xb8\xed\xbf\xb9\xbd\xba\xb7\xb4\xb0\xd4" " " ""
+				"\xc7\xcf\xb4\xc2" " " "\xb0\xcd\xb5\xb5" " " ""
+				"\xc1\xd6\xc0\xfa\xc7\xcf\xc1\xf6" " " "\xbe\xca\xbe\xd2\xb4\xd9" ""
+				"."
+			},
+			{560, ""},
+			{
+				665, "\xb4\xd9\xb8\xa5" " " "\xc0\xcc\xb5\xe9\xc0\xba" " " ""
+				"\xb4\xe7\xb1\xb8\xbf\xcd" " " "\xb0\xb0\xc0\xcc" " " ""
+				"\xb1\xe2\xbc\xfa\xc0\xcc" " " "\xc7\xca\xbf\xe4\xc7\xd1" " " ""
+				"\xb0\xd4\xc0\xd3\xc0\xbb" " " "\xc7\xcf\xb1\xe2\xb5\xb5" " " ""
+				"\xc7\xcf\xc1\xf6\xb8\xb8" ", " "\xb0\xdd\xc1\xb6\xb3\xf4\xc0\xba" ""
+				" " "\xb4\xeb\xc8\xad\xbe\xdf\xb8\xbb\xb7\xce" " " ""
+				"\xba\xa3\xb8\xa3\xbb\xe7\xc0\xcc\xc0\xaf\xbf\xa1\xbc\xad" " " ""
+				"\xb0\xa1\xc0\xe5" " " "\xb3\xf4\xc0\xcc" " " ""
+				"\xc0\xce\xc1\xa4\xb9\xde\xb4\xc2" " " "\xb1\xe2\xbb\xdd" " " ""
+				"\xc1\xdf" " " "\xc7\xcf\xb3\xaa\xc0\xcc\xb4\xd9" "."
+			},
+			{766, ""},
+		}
+	}, /* a5_vf.hns */
+	{
+		"a6_vf.hns", {
+			{
+				45, "\xbf\xc0\xc8\xc4" " " "\xb4\xd9\xbc\xb8\xbd\xc3\xb0\xa1" " " ""
+				"\xb4\xd9\xb0\xa1\xbf\xc0\xc0\xda" ", " "\xc1\xf7\xb9\xab\xb8\xa6" ""
+				" " "\xb8\xb6\xc4\xa3" " " "\xb1\xb9\xbf\xd5\xc0\xba" " " ""
+				"\xc1\xa4\xbf\xf8\xbf\xa1\xbc\xad" " " ""
+				"\xbb\xea\xc3\xa5\xc7\xcf\xb0\xed" " " "\xb0\xc7\xb9\xb0\xc0\xbb" ""
+				" " "\xb5\xd1\xb7\xaf\xba\xbb\xb4\xd9" "."
+			},
+			{
+				90, "... " "\xb4\xeb\xb8\xae\xbc\xae" " " ""
+				"\xbe\xc8\xb6\xe3\xbf\xa1\xbc\xad" " " ""
+				"\xb1\xe2\xb4\xd9\xb8\xae\xb0\xed" " " "\xc0\xd6\xb4\xf8" " " ""
+				"\xbd\xc5\xc7\xcf\xb5\xe9\xb0\xfa" " " "\xc7\xd4\xb2\xb2" " " ""
+				"\xc7\xdf\xb4\xd9" "."
+			},
+			{160, ""},
+			{
+				170, "\xb8\xee\xb8\xee" " " "\xc6\xaf\xba\xb0\xc7\xd1" " " ""
+				"\xc0\xcc\xb5\xe9\xb8\xb8\xc0\xcc" " " "\xb1\xb9\xbf\xd5\xb0\xfa" ""
+				" " "\xc7\xd4\xb2\xb2" " " "\xc7\xd2" " " "\xbc\xf6" " " ""
+				"\xc0\xd6\xbe\xfa\xb4\xd9" "."
+			},
+			{208, ""},
+			{
+				295, "\xb1\xd7\xb5\xe9\xc0\xba" " " "\xbe\xc6\xb7\xa1\xc3\xfe\xc0\xc7" ""
+				" " "\xb0\xb6\xb7\xaf\xb8\xae\xb8\xa6" " " "\xc1\xf6\xb3\xaa" " " ""
+				"\xc5\xd7\xb6\xf3\xbd\xba\xb7\xce" " " "\xb1\xd7\xb8\xae\xb0\xed" ""
+				" " "\xb9\xb0\xc0\xc7" " " "\xc8\xad\xb4\xdc\xc0\xb8\xb7\xce" " " ""
+				"\xb3\xaa\xbe\xc6\xb0\xac\xb4\xd9" ". " "\xb1\xb9\xbf\xd5\xc0\xba" ""
+				" " "\xb1\xd7\xb0\xf7\xbf\xa1\xbc\xad" " " "\xbc\xba\xc0\xc7" " " ""
+				"\xbf\xdc\xb0\xfc\xc0\xbb" " " "\xb0\xa8\xbb\xf3\xc7\xcf\xb4\xc2" ""
+				" " "\xb0\xcd\xc0\xbb" " " "\xc1\xc1\xbe\xc6\xc7\xdf\xb4\xd9" "."
+			},
+			{
+				430, "\xb0\xa8\xb1\xd6\xbf\xf8\xc0\xb8\xb7\xce\xba\xce\xc5\xcd" " " ""
+				"\xc4\xdd\xb7\xce\xb3\xaa\xb5\xe5\xb1\xee\xc1\xf6" ", " ""
+				"\xb1\xb9\xbf\xd5\xc0\xba" " " "\xc1\xf8\xc7\xe0\xc1\xdf\xc0\xce" ""
+				" " "\xbf\xa9\xb7\xaf" " " "\xc0\xdb\xc7\xb0\xc0\xbb" " " ""
+				"\xc2\xf7\xb7\xca\xc2\xf7\xb7\xca" " " ""
+				"\xbc\xbc\xb9\xd0\xc7\xcf\xb0\xd4" " " ""
+				"\xbb\xec\xc7\xc7\xbe\xfa\xb4\xd9" "."
+			},
+			{492, ""},
+			{
+				945, "\xc0\xcc" " " "\xc7\xe0\xc2\xf7\xb4\xc2" " " "\xbc\xd2" " " ""
+				"\xba\xa3\xb4\xcf\xbd\xba\xbf\xa1\xbc\xad" " " "\xb3\xa1\xc0\xcc" ""
+				" " "\xb3\xad\xb4\xd9" ". " "\xb1\xb9\xbf\xd5\xc0\xba" " " ""
+				"\xc3\xd1\xb5\xb6\xc0\xc7" " " ""
+				"\xb5\xb5\xbd\xc3\xb7\xce\xba\xce\xc5\xcd" " " "\xbf\xc2" " " ""
+				"\xb0\xc5\xb7\xed\xb9\xe8\xb8\xa6" " " "\xb0\xa1\xc1\xf6\xb0\xed" ""
+				" " "\xc0\xd6\xb4\xc2\xb5\xa5" ", " "\xc1\xc1\xc0\xba" " " ""
+				"\xb3\xaf\xbe\xbe\xbf\xa1\xb4\xc2" " " "\xbf\xee\xc7\xcf\xc0\xc7" ""
+				" " "\xb8\xbc\xc0\xba" " " "\xb9\xb0\xc0\xa7\xb7\xce" ", " ""
+				"\xbd\xc5\xc7\xcf\xb5\xe9\xb0\xfa" " " "\xc7\xd4\xb2\xb2" " " ""
+				"\xc0\xcc" " " "\xb9\xe8\xb8\xa6" " " "\xc5\xb8\xb0\xed" " " ""
+				"\xb3\xaa\xbf\xc2\xb4\xd9" "."
+			},
+		}
+	}, /* a6_vf.hns */
+	{
+		"a7_vf.hns", {
+			{
+				40, "\xc0\xdf" " " "\xbf\xad\xb7\xc1\xc1\xf8" " " "\xb4\xeb\xb7\xce" ""
+				", " "\xbf\xa9\xb8\xa7" " " "\xc0\xfa\xb3\xe1\xbf\xa1\xb4\xc2" " " ""
+				"\xb1\xb9\xbf\xd5\xc0\xba" " " "\xb0\xf8\xbf\xf8\xc0\xc7" " " ""
+				"\xbd\xa3" " " "\xbc\xd3\xbf\xa1" " " "\xb8\xb6\xb7\xc3\xb5\xc8" " "
+				"" "\xb0\xa3\xb4\xdc\xc7\xd1" " " "\xbd\xc4\xbb\xe7\xb7\xce" " " ""
+				"\xc0\xfa\xb3\xe1\xc0\xbb" " " "\xb4\xeb\xbd\xc5\xc7\xd1\xb4\xd9"
+			},
+			{107, ""},
+			{
+				198, "\xb9\xe3\xc0\xcc" " " "\xb1\xed\xbe\xee\xc1\xf6\xb0\xed" ", " ""
+				"\xb1\xb9\xbf\xd5\xc0\xcc" " " "\xc4\xa7\xbd\xc7\xbf\xa1" " " ""
+				"\xb5\xe9\xb8\xe9" " " "\xb8\xf0\xb5\xe7" " " "\xc0\xcc\xb0\xa1" " "
+				"" "\xbc\xba\xc0\xb8\xb7\xce" " " ""
+				"\xb5\xb9\xbe\xc6\xb0\xa3\xb4\xd9" "."
+			},
+			{245, ""},
+			{
+				355, "\xba\xce\xc0\xce\xb5\xe9\xc0\xba" " " "\xb1\xb9\xbf\xd5\xc0\xcc" ""
+				" " "\xbe\xc6\xc4\xa7" " " "\xbf\xb9\xba\xb9" " " ""
+				"\xc0\xc7\xbd\xc4\xbf\xa1" " " "\xc3\xca\xb4\xeb\xb9\xde\xc1\xf6" ""
+				" " "\xb8\xf8\xc7\xdf\xb0\xed" ", " "\xc0\xfa\xb3\xe1" " " ""
+				"\xc4\xa7\xbd\xc7\xbf\xa1" " " "\xb5\xe5\xb4\xc2" " " ""
+				"\xc0\xc7\xbd\xc4\xbf\xa1\xb5\xb5" " " ""
+				"\xc3\xca\xb4\xeb\xb9\xde\xc1\xf6" " " ""
+				"\xb8\xf8\xc7\xcf\xbf\xb4\xb4\xd9" ". " "\xb1\xb9\xbf\xd5\xc0\xba" ""
+				" " "\xb1\xd7\xb5\xe9\xbf\xa1\xb0\xd4" " " ""
+				"\xbb\xec\xb7\xd5\xbf\xa1\xbc\xad" " " ""
+				"\xc0\xfa\xb3\xe1\xc0\xce\xbb\xe7\xb8\xa6" " " ""
+				"\xc7\xcf\xb5\xb5\xb7\xcf" " " "\xc7\xcf\xbf\xb4\xb4\xd9" "."
+			},
+			{442, ""},
+			{
+				454, "\xc0\xcc" " " "\xc7\xcf\xc1\xf6\xc0\xc7" " " "\xb1\xe4" " " ""
+				"\xb9\xe3\xc0\xcc" " " "\xba\xce\xc0\xce\xb5\xe9\xc0\xc7" " " ""
+				"\xc8\xde\xbd\xc4\xc0\xbb" " " "\xc0\xa7\xc7\xd8" " " ""
+				"\xc3\xe6\xba\xd0\xc7\xcf\xb1\xe2\xb8\xa6" " " ""
+				"\xba\xf4\xb0\xda\xbd\xc0\xb4\xcf\xb4\xd9" "."
+			},
+			{512, ""},
+			{
+				647, "\xb1\xd7\xb8\xae\xb0\xed" " " "\xc4\xa7\xbd\xc7\xb7\xce" " " ""
+				"\xb5\xe5\xb4\xc2" " " "\xc0\xc7\xbd\xc4\xc0\xcc" " " ""
+				"\xbd\xc3\xc0\xdb\xb5\xc8\xb4\xd9" ". " "\xbe\xc6\xc4\xa7" " " ""
+				"\xbf\xb9\xba\xb9" " " "\xc0\xc7\xbd\xc4\xbf\xa1" " " ""
+				"\xc2\xfc\xbc\xae\xc7\xd1" " " "\xbd\xc5\xc7\xcf\xb5\xe9\xc0\xba" ""
+				" " "\xc0\xcc\xb0\xf7\xbf\xa1\xb5\xb5" " " ""
+				"\xc2\xfc\xbc\xae\xc7\xcf\xb1\xe2\xb7\xce" " " ""
+				"\xb5\xc7\xbe\xee\xc0\xd6\xb4\xd9" "."
+			},
+			{722, ""},
+			{
+				733, "\xb4\xa9\xb1\xb8\xbf\xa1\xb0\xd4" " " "\xc3\xd0\xb4\xeb\xb8\xa6" ""
+				" " "\xb5\xe9\xb0\xd4" " " "\xc7\xd2\xb1\xee\xbf\xe4" ", " ""
+				"\xc6\xf3\xc7\xcf" "?"
+			},
+			{763, ""},
+			{
+				925, "\xb1\xb9\xbf\xd5\xc0\xba" " " "\xc0\xcf\xbb\xf3\xc0\xc7" " " ""
+				"\xc7\xe0\xc0\xa7\xb8\xa6" " " "\xb0\xed\xb1\xcd\xc7\xd1" " " ""
+				"\xc7\xe0\xc0\xa7\xb7\xce" " " "\xb9\xd9\xb2\xd9\xbe\xee" " " ""
+				"\xb3\xf5\xbe\xd2\xb4\xd9" ". " "\xc4\xa7\xbd\xc7\xb1\xee\xc1\xf6" ""
+				" " "\xc3\xd0\xb4\xeb\xb8\xa6" " " "\xb5\xe9\xb0\xed" " " ""
+				"\xb0\xa5" " " "\xbc\xf6" " " "\xc0\xd6\xb4\xc2" " " ""
+				"\xb1\xc7\xb8\xae\xb4\xc2" " " "\xc0\xaf\xb8\xed" " " ""
+				"\xc0\xce\xbb\xe7\xbf\xa1\xb0\xd4" " " ""
+				"\xc1\xd6\xbe\xee\xc1\xb3\xb0\xed" ", " "\xc1\xbe\xc1\xbe" " " ""
+				"\xb9\xe6\xb9\xae\xc7\xd1" " " ""
+				"\xbf\xdc\xb1\xb9\xc0\xce\xbf\xa1\xb0\xd4\xb5\xb5" " " ""
+				"\xc1\xd6\xbe\xee\xc1\xb3\xb4\xd9" "..."
+			},
+			{1048, ""},
+			{
+				1060, "..." "\xb1\xd7\xb4\xc2" " " "\xc4\xa7\xbd\xc7\xb1\xee\xc1\xf6" " " ""
+				"\xb1\xb9\xbf\xd5\xb0\xfa" " " "\xc7\xd4\xb2\xb2" " " "\xb0\xa5" " "
+				"" "\xbc\xf6" " " "\xc0\xd6\xb4\xc2" " " "\xb1\xc7\xb8\xae\xb8\xa6" ""
+				" " "\xbe\xf2\xb0\xd4" " " "\xb5\xc8" " " ""
+				"\xb0\xcd\xc0\xcc\xb4\xd9" "."
+			},
+			{1100, ""},
+			{
+				1115, "\xb1\xd7\xb7\xaf\xb3\xaa" " " "\xbf\xc0\xb4\xc3" " " ""
+				"\xbe\xc6\xc4\xa7" "...."
+			},
+			{1135, ""},
+			{
+				1188, "\xb9\xdd\xbf\xaa\xc0\xcc\xb4\xd9" "! " ""
+				"\xb9\xdd\xbf\xaa\xc0\xcc\xbe\xdf" "! " "\xc0\xcc\xb8\xae" " " ""
+				"\xbf\xc0\xb0\xd4" ", " "\xb6\xf3\xb6\xfb\xb5\xe5" ", " "\xc0\xcc" ""
+				" " "\xb9\xcc\xc4\xa3" " " "\xc0\xda\xb8\xa6" " " ""
+				"\xb8\xb7\xb0\xd4" "!"
+			},
+			{
+				1230, "\xbf\xa9\xb7\xaf\xba\xd0" ", " ""
+				"\xbd\xba\xb1\xee\xba\xfc\xb7\xbc\xb6\xf3" " " ""
+				"\xc8\xc4\xc0\xdb\xc0\xcc" " " ""
+				"\xc0\xfa\xb3\xe1\xc0\xce\xbb\xe7\xb8\xa6" " " ""
+				"\xb5\xe5\xb8\xb3\xb4\xcf\xb4\xd9" "."
+			},
+		}
+	}, /* a7_vf.hns */
+	{
+		"a8_vf.hns", {
+			{
+				212, "\xb9\xcc\xc4\xa5\xb4\xeb\xb7\xce" " " "\xb9\xcc\xc4\xa3" " " ""
+				"\xc0\xda\xb0\xa1" " " "\xc0\xcc" " " "\xbc\xba\xc0\xbb" " " ""
+				"\xc6\xc4\xb1\xab\xc7\xcf\xb8\xae\xb6\xf3\xb0\xed" " " ""
+				"\xb4\xa9\xb0\xa1" " " "\xb2\xde\xbf\xa1\xb3\xaa" " " ""
+				"\xbb\xfd\xb0\xa2\xc7\xdf\xb0\xda\xb4\xc2\xb0\xa1" "? " ""
+				"\xb4\xe7\xbd\xc5\xc0\xba" " " "\xb4\xd9\xbd\xc3" " " ""
+				"\xbd\xc3\xc0\xdb\xc7\xd8\xbe\xdf" " " "\xc7\xd1\xb4\xd9" ". " ""
+				"\xc1\xf6\xb1\xdd" " " "\xb4\xe7\xc0\xe5" "."
+			},
+			{320, ""},
+		}
+	}, /* a8_vf.hns */
+	{
+		"a9_vf.hns", {
+			{
+				30, "\xc0\xcc" " " "\xc0\xcf\xbf\xa1" " " "\xb4\xeb\xc7\xd1" " " ""
+				"\xc0\xda\xb3\xd7\xc0\xc7" " " "\xbf\xad\xc1\xa4\xc0\xbb" " " ""
+				"\xb1\xb9\xbf\xd5\xb2\xb2" " " "\xb8\xbb\xbe\xb8" " " ""
+				"\xb5\xe5\xb7\xc8\xb3\xd7" ", " "\xb6\xf3\xb6\xfb\xb5\xe5" ". " ""
+				"\xb1\xb9\xbf\xd5\xb2\xb2\xbc\xad\xb4\xc2" " " ""
+				"\xc0\xda\xb3\xd7\xb8\xa6" " " "\xb3\xf4\xc0\xcc" " " ""
+				"\xc6\xf2\xb0\xa1\xc7\xcf\xb0\xed" " " ""
+				"\xbd\xcd\xbe\xee\xc7\xcf\xbd\xc3\xb3\xd7" "."
+			},
+			{125, ""},
+			{
+				200, "\xba\xc0\xb6\xa5\xc0\xba" " " "\xc0\xda\xb3\xd7\xb0\xa1" " " ""
+				"\xb0\xfc\xb0\xe8\xc7\xdf\xb4\xf8" " " "\xc0\xcf\xbf\xa1" " " ""
+				"\xb0\xfc\xc7\xd8" " " "\xbf\xec\xb8\xae\xbf\xa1\xb0\xd4" " " ""
+				"\xb8\xf0\xb5\xe7" " " "\xb0\xcd\xc0\xbb" " " ""
+				"\xb8\xbb\xc7\xdf\xb3\xd7" "."
+			},
+			{
+				300, "\xbf\xc0\xb4\xc3" " " "\xc0\xcf\xc0\xbb" " " ""
+				"\xba\xb8\xb8\xe9\xbc\xad" " " "\xb8\xf0\xb5\xe7" " " ""
+				"\xb3\xeb\xbf\xa9\xbf\xf2\xc0\xcc" " " ""
+				"\xbb\xe7\xb6\xf3\xc1\xb3\xb3\xd7" ". " "\xbf\xc0\xb4\xc3" " " ""
+				"\xc0\xcf\xc0\xba" " " "\xb9\xe0\xc7\xf4\xc1\xf6\xb1\xe2" " " ""
+				"\xba\xb8\xb4\xd9\xb4\xc2" " " "\xbe\xee\xb5\xd2\xbc\xd3\xbf\xa1" ""
+				" " "\xb9\xaf\xc7\xf4\xc1\xae\xbe\xdf\xb8\xb8" " " ""
+				"\xc7\xcf\xb0\xda\xc1\xf6" "."
+			},
+			{
+				400, "\xb8\xee\xb8\xee" " " "\xc0\xcc\xbb\xf3\xc7\xd1" " " ""
+				"\xc1\xa1\xc0\xcc" " " "\xb3\xb2\xbe\xc6\xc0\xd6\xb1\xe2\xb4\xc2" ""
+				" " "\xc7\xcf\xb3\xd7" ". " "\xc7\xcf\xc1\xf6\xb8\xb8" ", " ""
+				"\xc0\xda\xb3\xd7\xb0\xa1" " " "\xbe\xee\xb5\xf4" " " ""
+				"\xb0\xa1\xb5\xe7\xc1\xf6" ", " "\xbf\xec\xb8\xae\xc0\xc7" " " ""
+				"\xb4\xeb\xbb\xe7\xb7\xce" " " "\xb4\xeb\xc1\xa2\xb9\xde\xc0\xbb" ""
+				" " "\xb8\xb8\xc7\xd1" " " "\xc3\xe6\xba\xd0\xc7\xd1" " " ""
+				"\xc0\xda\xb0\xdd\xc0\xba" " " "\xc0\xd6\xb3\xd7" "."
+			},
+			{515, ""},
+		}
+	}, /* a9_vf.hns */
+};
+
 static char const *const versaillesZTmessages[] = {
 	"\xa5\xd8\xab" "e" "\xb8" "T" "\xa4\xee\xb6" "}" "\xb1\xd2\xb3" "o" ""
 	"\xae\xb0\xaa\xf9\xa1" "C",                                           /*   0 */
diff --git a/dists/engine-data/cryomni3d.dat b/dists/engine-data/cryomni3d.dat
index 4e28d4d476..918926b11e 100644
Binary files a/dists/engine-data/cryomni3d.dat and b/dists/engine-data/cryomni3d.dat differ
diff --git a/engines/cryomni3d/datstream.cpp b/engines/cryomni3d/datstream.cpp
index dd6e596365..3b6bda9b16 100644
--- a/engines/cryomni3d/datstream.cpp
+++ b/engines/cryomni3d/datstream.cpp
@@ -127,6 +127,8 @@ uint16 DATSeekableStream::translateLanguage(Common::Language lang) {
 		return MKTAG16('f', 'r');
 	case Common::IT_ITA:
 		return MKTAG16('i', 't');
+	case Common::KO_KOR:
+		return MKTAG16('k', 'o');
 	case Common::PT_BRA:
 		return MKTAG16('b', 'r');
 	case Common::ZH_TWN:
diff --git a/engines/cryomni3d/detection_tables.h b/engines/cryomni3d/detection_tables.h
index 6002955e5a..c67d4602a4 100644
--- a/engines/cryomni3d/detection_tables.h
+++ b/engines/cryomni3d/detection_tables.h
@@ -450,6 +450,40 @@ static const CryOmni3DGameDescription gameDescriptions[] = {
 		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
 	},
 
+	// Versailles 1685
+	// Korean Windows compressed from DVD
+	// From lePhilousophe
+	{
+		{
+			"versailles",
+			"",
+			VERSAILLES_ENTRY_DEF("PROGRAM.Z", "ffb7599d042fb71f22ab4d76a2e0147f", 244155),
+			Common::KO_KOR,
+			Common::kPlatformWindows,
+			ADGF_NO_FLAGS,
+			GUI_OPTIONS_VERSAILLES
+		},
+		GType_VERSAILLES,
+		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
+	},
+
+	// Versailles 1685
+	// Korean Windows from DVD
+	// From lePhilousophe
+	{
+		{
+			"versailles",
+			"",
+			VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "549c588e05df8d42b531ffc9b2796303", 355840),
+			Common::KO_KOR,
+			Common::kPlatformWindows,
+			ADGF_NO_FLAGS,
+			GUI_OPTIONS_VERSAILLES
+		},
+		GType_VERSAILLES,
+		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
+	},
+
 	{ AD_TABLE_END_MARKER, 0, 0 }
 };
 
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index 499b382aeb..b4a11b17e1 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -292,6 +292,9 @@ void CryOmni3DEngine_Versailles::setupFonts() {
 
 		_fontManager.loadFonts(fonts, Common::kWindows950);
 		return;
+	} else if (getLanguage() == Common::KO_KOR) {
+		_fontManager.loadTTFList("FONTS_KR.LST", Common::kWindows949);
+		return;
 	}
 
 	// Code below is for SBCS encodings (ie. non CJK)
diff --git a/engines/cryomni3d/versailles/menus.cpp b/engines/cryomni3d/versailles/menus.cpp
index ada88fa317..94b2aac69d 100644
--- a/engines/cryomni3d/versailles/menus.cpp
+++ b/engines/cryomni3d/versailles/menus.cpp
@@ -49,6 +49,7 @@ void CryOmni3DEngine_Versailles::drawMenuTitle(Graphics::ManagedSurface *surface
 	int titleX, titleY, subtitleX, subtitleY;
 	if (getLanguage() == Common::FR_FRA ||
 	        getLanguage() == Common::ES_ESP ||
+	        getLanguage() == Common::KO_KOR ||
 	        getLanguage() == Common::PT_BRA) {
 		titleX = 144;
 		titleY = 160;
@@ -82,6 +83,7 @@ void CryOmni3DEngine_Versailles::drawMenuTitle(Graphics::ManagedSurface *surface
 
 	if (getLanguage() == Common::FR_FRA ||
 	        getLanguage() == Common::ES_ESP ||
+	        getLanguage() == Common::KO_KOR ||
 	        getLanguage() == Common::PT_BRA ||
 	        getLanguage() == Common::ZH_TWN) {
 		surface->vLine(100, 146, 172, color);


Commit: 39f6d8e7ed55e95e29f83bf85e0b018b3af20d46
    https://github.com/scummvm/scummvm/commit/39f6d8e7ed55e95e29f83bf85e0b018b3af20d46
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Add Japanese version of Versailles

Changed paths:
    devtools/create_cryomni3d/create_cryomni3d_dat.cpp
    devtools/create_cryomni3d/create_cryomni3d_dat.h
    devtools/create_cryomni3d/versailles.cpp
    devtools/create_cryomni3d/versailles.h
    dists/engine-data/cryomni3d.dat
    engines/cryomni3d/datstream.cpp
    engines/cryomni3d/detection_tables.h
    engines/cryomni3d/versailles/data.cpp
    engines/cryomni3d/versailles/engine.cpp
    engines/cryomni3d/versailles/menus.cpp


diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
index 6f862ab0e0..c25c9c2241 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.cpp
@@ -55,6 +55,7 @@ DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, DE)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, EN)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ES)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, IT)
+DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, JA)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, KO)
 DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ZT)
 
@@ -65,6 +66,7 @@ static Parts gamesParts[] = {
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, EN),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, ES),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, IT),
+	GAME_PLATFORM_LANG_PART(Versailles, ALL, JA),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, KO),
 	GAME_PLATFORM_LANG_PART(Versailles, ALL, ZT),
 };
diff --git a/devtools/create_cryomni3d/create_cryomni3d_dat.h b/devtools/create_cryomni3d/create_cryomni3d_dat.h
index 113288d0f1..47f77fb7d8 100644
--- a/devtools/create_cryomni3d/create_cryomni3d_dat.h
+++ b/devtools/create_cryomni3d/create_cryomni3d_dat.h
@@ -44,6 +44,7 @@ size_t writeGameHeader(FILE *f, uint32 gameId, uint16 version, uint16 lang, uint
 #define LANG_ES                       MKTAG16('e', 's')
 #define LANG_FR                       MKTAG16('f', 'r')
 #define LANG_IT                       MKTAG16('i', 't')
+#define LANG_JA                       MKTAG16('j', 'a')
 #define LANG_KO                       MKTAG16('k', 'o')
 #define LANG_ZT                       MKTAG16('z', 't') // ZH_TWN
 
diff --git a/devtools/create_cryomni3d/versailles.cpp b/devtools/create_cryomni3d/versailles.cpp
index da4e61ce61..f476b8a2d1 100644
--- a/devtools/create_cryomni3d/versailles.cpp
+++ b/devtools/create_cryomni3d/versailles.cpp
@@ -102,6 +102,10 @@ size_t writeVersaillesSubtitles16(FILE *fp, Subtitle const *subtitles, uint16 el
         size += writeString16(f, versailles ## lang ## EpilMsg); \
         size += writeString16(f, versailles ## lang ## EpilPwd); \
         \
+        if ((LANG_ ## lang == LANG_JA)) { \
+            assert(VERSAILLES_JA_BOMB_ALPHABET_SIZE + 1 == sizeof(versaillesJABombAlphabet)); \
+            size += writeString16(f, versaillesJABombAlphabet); \
+        } \
         size += writeString16(f, versailles ## lang ## BombPwd); \
         \
         assert(VERSAILLES_MESSAGES_COUNT_CJK == ARRAYSIZE(versailles ## lang ## messages)); \
@@ -123,5 +127,6 @@ DEFINE_FUNCS(DE)
 DEFINE_FUNCS(EN)
 DEFINE_FUNCS(ES)
 DEFINE_FUNCS(IT)
+DEFINE_FUNCS_CJK(JA)
 DEFINE_FUNCS_CJK(KO)
 DEFINE_FUNCS_CJK(ZT)
diff --git a/devtools/create_cryomni3d/versailles.h b/devtools/create_cryomni3d/versailles.h
index 30473eec3c..46bee5a7c5 100644
--- a/devtools/create_cryomni3d/versailles.h
+++ b/devtools/create_cryomni3d/versailles.h
@@ -82,6 +82,13 @@ static char const *const versaillesBRlocalizedFilenames[] = {
 	"credits.BR",
 	"LEB1_BR.WAV",
 };
+static char const *const versaillesJAlocalizedFilenames[] = {
+	"DIALOG1.JP",
+	"tous_doc.JP",
+	"lien_doc.txt",
+	"credits.JP",
+	"LEB1_GB.WAV",
+};
 static char const *const versaillesKOlocalizedFilenames[] = {
 	"DIALOG1.KR",
 	"tous_doc.KR",
@@ -109,6 +116,8 @@ static char const versaillesESEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT"
 static char const versaillesESEpilPwd[] = "ELZORROYLAGRULLA";
 static char const versaillesITEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
 static char const versaillesITEpilPwd[] = "LEANATREEILCANE";
+static char const versaillesJAEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
+static char const versaillesJAEpilPwd[] = "FOXANDCRANE";
 static char const versaillesKOEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
 static char const versaillesKOEpilPwd[] = "FOXANDCRANE";
 static char const versaillesZTEpilMsg[] = "FELIXFORTUNADIVINUMEXPLORATUMACTUIIT";
@@ -121,9 +130,120 @@ static char const versaillesDEBombPwd[] =
 static char const versaillesENBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 static char const versaillesESBombPwd[] = "NO ES PODER DE REYES EL ALCANZAR LA PERFECCION";
 static char const versaillesITBombPwd[] = "AI SOVRANI NON E DATO RAGGIUNGERE LA PERFEZIONE";
+static char const versaillesJABombPwd[] = "\203V\203A\203K\203\212\203m\203_\203\223\203J\203C"
+        "\203j\203C\203^\203c\203^\203m\203K\203R\203N\203I\203E\203^\203`\203j\203`\203J\203\211\203K"
+        "\203A\203\213\203R\203g\203j\203i\203\211\203i\203C\203m\203_";
+
 static char const versaillesKOBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 static char const versaillesZTBombPwd[] = "IT IS NOT IN THE POWER OF KINGS TO ATTAIN PERFECTION";
 
+#define VERSAILLES_JA_BOMB_ALPHABET_SIZE 2490
+static char const versaillesJABombAlphabet[] =
+    "\202\323\202\255\202\353\202\244\202\306\221\274\202\314\222\271\202\275\202\277\210\253\202\242"
+    "\202\323\202\255\202\353\202\244\202\252\222\213\212\324\201A\222\271\202\275\202\277\202\360"
+    "\212l\202\350\202\311\217o\202\251\202\257\222\271\202\275\202\277\202\315\217W\202\334"
+    "\202\301\202\304\211\236\220\355\217X\202\255\202\267\202\254\202\270\224\374\202\265\202\267"
+    "\202\254\202\270\223\313\202\301\202\302\202\253\201A\220\330\202\350\227\364\202\253\201A"
+    "\215\217\202\361\202\305\202\277\202\254\202\351\227Y\214{\202\306\203_\203C\203A"
+    "\203\202\203\223\203h\227Y\214{\202\252\201A\345v\222\216\202\360\222T\202\265"
+    "\202\304\222n\226\312\202\360\214@\202\301\202\304\202\242\202\351\202\306\203_\203C"
+    "\203A\203\202\203\223\203h\202\360\214@\202\350\223\226\202\304\202\275\227Y\214{"
+    "\202\252\214\276\202\244\202\311\202\315\201A\202\261\202\361\202\310\220\316\202\261\202\353"
+    "\202\252\211\275\202\314\226\360\202\311\202\275\202\302\201H\224a\202\314\202\331\202\244"
+    "\202\252\202\334\202\276\202\334\202\265\202\310\202\314\202\311\224L\202\306\203l\203Y"
+    "\203~\224L\202\252\216\200\202\361\202\276\202\323\202\350\202\360\202\265\202\304\203l"
+    "\203Y\203~\202\360\202\275\202\255\202\263\202\361\225\337\202\334\202\246\202\275\202\340"
+    "\202\301\202\306\225\337\202\334\202\246\202\346\202\244\202\306\201A\217\254\224\236\225\262"
+    "\202\311\202\334\202\335\202\352\202\304\211B\202\352\202\304\202\242\202\351\202\306\224N"
+    "\212\361\202\350\203l\203Y\203~\202\252\225@\202\360\202\255\202\361\202\255\202\361"
+    "\224L\202\346\202\350\217\254\224\236\225\262\202\314\202\331\202\244\202\252\202\250\202\242"
+    "\202\265\202\273\202\244\202\276\227\263\202\306\202\342\202\267\202\350\227\263\202\252\202\342"
+    "\202\267\202\350\202\360\202\251\202\266\202\301\202\304\202\242\202\351\202\306\202\342\202\267"
+    "\202\350\202\252\220\324\226\332\202\314\227\263\202\311\220q\202\313\202\275\202\310\202\272"
+    "\214\343\220\346\202\340\215l\202\246\202\270\201A\341\222\341\233\202\360\213N\202\261"
+    "\202\265\202\304\226l\202\360\202\251\202\266\202\351\202\314\201H\214\253\202\242\202\240"
+    "\202\310\202\275\202\314\216\225\202\252\202\310\202\255\202\310\202\301\202\304\202\265\202\334"
+    "\202\244\202\346\202\253\202\302\202\313\202\306\222\337\202\253\202\302\202\313\202\252\222\337"
+    "\202\360\220H\216\226\202\311\217\265\202\242\202\304\225\275\202\327\202\301\202\275\202\242"
+    "\216M\202\311\223\374\202\352\202\304\217o\202\265\202\275\216\251\225\252\202\315\202\346"
+    "\202\276\202\352\202\360\202\275\202\347\202\265\202\310\202\252\202\347\216M\202\360\202\330"
+    "\202\353\202\330\202\353\232{\202\314\222\267\202\242\222\337\202\315\202\275\202\276\202\267"
+    "\202\267\202\351\202\276\202\257\201B\222\337\202\306\202\253\202\302\202\313\202\261\202\361"
+    "\202\307\202\315\222\337\202\252\202\253\202\302\202\313\202\360\217\265\202\242\202\304\215\327"
+    "\222\267\202\242\202\302\202\332\202\311\223\374\202\352\202\304\217o\202\265\202\275\222\337"
+    "\202\315\202\250\225\240\210\352\224t\220H\202\327\202\275\202\350\210\371\202\361\202\276"
+    "\202\350\202\251\202\255\202\265\202\304\225\234\217Q\202\315\220\213\202\260\202\347\202\352"
+    "\202\275\201B\216\223\214{\202\306\203q\203\210\203R\202\275\202\277\202\306\202\361"
+    "\202\321\202\252\227\326\202\360\202\251\202\242\202\304\224\362\202\361\202\305\202\242\202\351"
+    "\202\314\202\360\214\251\202\302\202\257\202\275\216\223\214{\202\240\202\355\202\304\202\304"
+    "\203q\203\210\203R\202\275\202\277\202\360\214{\217\254\211\256\202\326\202\265\202\251"
+    "\202\265\216\251\225\252\202\252\220H\202\327\202\347\202\352\202\304\202\240\202\355\202\352"
+    "\202\310\203q\203\210\203R\202\275\202\277\202\315\212O\202\326\202\340\217o\202\347"
+    "\202\352\202\270\201A\225\302\202\266\202\261\202\337\202\347\202\352\202\275\202\334\202\334"
+    "\230V\202\242\202\304\202\242\202\255\201B\230T\202\306\222\337\230T\202\252\215\234"
+    "\202\360\202\314\202\335\202\261\202\361\202\305\201A\202\314\202\307\202\311\216h\202\263"
+    "\202\301\202\304\222\311\202\255\202\304\202\275\202\334\202\347\202\310\202\242\202\273\202\261"
+    "\202\305\222\337\202\311\201A\202\250\212\350\202\242\202\276\202\251\202\347\202\261\202\314"
+    "\215\234\202\360\202\306\202\301\202\304\202\277\202\345\202\244\202\276\202\242\201A\202\273"
+    "\202\314\202\251\202\355\202\350\215\234\202\360\202\306\202\301\202\304\202\340\202\347\202\301"
+    "\202\304\202\340\214N\202\314\202\261\202\306\202\360\220H\202\327\202\275\202\350\202\265"
+    "\202\310\202\242\202\251\202\347\230T\202\315\201A\202\273\202\244\214\276\202\242\202\310"
+    "\202\252\202\347\202\340\202\323\202\255\202\352\202\301\226\312\221\351\202\306\217\254\222\271"
+    "\202\275\202\277\221\351\202\252\217\254\222\271\202\275\202\277\202\360\220H\216\226\202\311"
+    "\217\265\202\242\202\275\222a\220\266\223\372\202\314\202\250\217j\202\242\202\360\202\267"
+    "\202\351\202\251\202\347\221\201\202\255\227\210\202\304\211\272\202\263\202\242\217\254\222\271"
+    "\202\275\202\277\202\252\217W\202\334\202\301\202\304\217j\202\242\202\314\220\310\202\311"
+    "\202\302\202\255\202\306\221\351\202\315\202\267\202\256\202\263\202\334\217P\202\242\202\251"
+    "\202\251\202\350\201A\202\262\202\277\202\273\202\244\202\311\202\240\202\350\202\302\202\242"
+    "\202\275\202\251\202\246\202\351\202\306\203W\203\205\203s\203^\201[\211\244\227l"
+    "\202\276\202\346\201A\202\306\203W\203\205\203s\203^\201[\202\252\202\255\202\352"
+    "\202\275\212\333\221\276\202\315\221\345\202\265\202\275\225\250\202\266\202\341\202\310\202\251"
+    "\202\301\202\275\202\306\202\251\202\246\202\351\202\275\202\277\202\315\203K\201[\203K"
+    "\201[\225\266\213\345\202\316\202\251\202\350\202\273\202\261\202\305\203W\203\205\203s"
+    "\203^\201[\202\315\203R\203E\203m\203g\203\212\202\360\202\302\202\251\202\355"
+    "\202\265\202\304\202\251\202\246\202\351\202\275\202\277\202\360\202\335\202\361\202\310\220H"
+    "\202\327\202\263\202\271\202\275\230h\202\306\202\244\202\263\202\254\202\306\202\251\202\324"
+    "\202\306\222\216\230h\202\252\202\244\202\263\202\254\202\360\202\302\202\251\202\334\202\246"
+    "\202\275\202\244\202\263\202\254\202\314\227F\222B\202\314\202\251\202\324\202\306\222\216"
+    "\202\252\201A\202\307\202\244\202\251\202\244\202\263\202\254\202\360\217\225\202\257\202\304"
+    "\202\342\202\301\202\304\211\272\202\263\202\242\202\265\202\251\202\265\230h\202\315\202\244"
+    "\202\263\202\254\202\360\220H\202\327\202\304\202\265\202\334\202\242\202\251\202\324\202\306"
+    "\222\216\202\315\230h\202\360\215\246\202\361\202\305\201A\230h\202\314\216Y\202\361"
+    "\202\276\227\221\202\360\221S\225\224\225\262\201X\202\311\215\323\202\242\202\304\202\265"
+    "\202\334\202\301\202\275\203l\203Y\203~\202\306\224L\202\306\217\254\202\263\202\310"
+    "\227Y\214{\216q\203l\203Y\203~\202\252\202\250\225\352\202\263\202\361\202\311"
+    "\201A\202\332\202\255\202\315\227Y\214{\202\315\202\253\202\347\202\242\202\276\202\257"
+    "\202\307\224L\202\315\221\345\215D\202\253\202\267\202\351\202\306\202\250\225\352\202\263"
+    "\202\361\202\315\201A\211\275\202\360\214\276\202\244\202\314\202\250\202\277\202\321\202\277"
+    "\202\341\202\361\201A\224L\202\315\216\204\202\275\202\277\202\360\220H\202\327\202\304"
+    "\202\240\202\361\202\310\202\311\221\276\202\301\202\304\202\251\202\301\202\261\202\346\202\255"
+    "\202\310\202\301\202\275\202\314\202\346\202\305\202\340\227Y\214{\202\252\202\342\202\271"
+    "\202\304\212i\215D\202\252\210\253\202\242\202\314\202\315\201A\216\204\202\275\202\277"
+    "\203l\203Y\203~\202\360\202\302\202\251\202\334\202\246\202\347\202\352\202\310\202\242"
+    "\202\251\202\347\202\310\202\314\202\346\224\222\222\271\202\306\203R\203E\203m\203g"
+    "\203\212\224\222\222\271\202\252\220\205\225\323\202\305\224\374\202\265\202\242\220\272\202\305"
+    "\211\314\202\301\202\304\202\242\202\351\202\306\202\307\202\244\202\265\202\304\211\314\202\301"
+    "\202\304\202\242\202\351\202\314\201H\202\306\222m\202\350\202\275\202\252\202\350\211\256"
+    "\202\314\203R\203E\203m\203g\203\212\202\276\202\301\202\304\216\204\202\315\202\340"
+    "\202\244\202\267\202\256\216\200\202\312\202\361\202\276\202\301\202\304\214\374\202\261\202\244"
+    "\202\251\202\347\202\242\202\242\222m\202\347\202\271\202\252\223\315\202\242\202\275\202\361"
+    "\202\305\202\267\202\340\202\314\202\250\202\250\202\251\202\335\202\306\222\244\221\234\214\216"
+    "\202\314\214\365\202\305\201A\222\244\221\234\202\252\223\256\202\242\202\275\202\346\202\244"
+    "\202\311\214\251\202\246\202\275\202\314\202\305\201A\202\250\202\250\202\251\202\335\202\315"
+    "\225\337\202\334\202\246\202\346\202\244\202\306\220g\215\\\202\246\202\275\202\305\202\340"
+    "\216c\224O\202\310\202\252\202\347\222\244\221\234\202\311\202\315\220\316\202\314\221\314"
+    "\202\360\223\256\202\251\202\267\202\275\202\337\202\314\220S\202\340\202\310\202\242\202\265"
+    "\212\264\217\356\202\340\202\310\202\242\201A\215l\202\246\202\340\217\356\224M\202\340"
+    "\201A\210\244\202\340\202\310\202\242\202\240\202\320\202\351\202\306\203X\203p\203j"
+    "\203G\203\213\214\242\203X\203p\203j\203G\203\213\214\242\202\252\226\260\202\301"
+    "\202\304\202\242\202\351\203A\203q\203\213\202\311\202\251\202\335\202\302\202\261\202\244"
+    "\202\306\202\267\202\351\202\306\203A\203q\203\213\202\315\202\267\202\316\202\342\202\255"
+    "\223\246\202\260\202\304\203K\201[\203K\201[\226\302\202\253\202\310\202\252\202\347"
+    "\214\242\202\360\202\261\202\244\224l\202\301\202\275\216\251\225\252\202\314\216\350\202\311"
+    "\223\315\202\251\202\310\202\242\202\340\202\314\202\360\222\307\202\242\202\251\202\257\202\351"
+    "\202\310\202\361\202\304\201A\214N\202\315\211\275\202\304\202\244\202\312\202\332\202\352"
+    "\202\342\202\305\202\250\202\353\202\251\216\322\202\310\202\361\202\276";
+
 #define VERSAILLES_MESSAGES_COUNT 146
 #define VERSAILLES_MESSAGES_COUNT_CJK 151
 #define VERSAILLES_PAINTINGS_COUNT 48
@@ -1425,6 +1545,1122 @@ static char const *const versaillesITpaintings[] = {
 	"\"Cristo calato dalla Croce\"\rCharles Lebrun",                      /* 47: 45260 */
 };
 
+static char const *const versaillesJAmessages[] = {
+	"\x8d\xa1\x82\xb1\x82\xcc\x83" "h" "\x83" "A" "\x82\xf0\x8a" "J" ""
+	"\x82\xaf\x82\xe9\x82\xb1\x82\xc6\x82\xcd\x8b\xd6\x82\xb6\x82\xe7\x82\xea\x82\xc4\x82\xa2\x82\xdc\x82\xb7\x81" ""
+	"B",                                                                  /*   0 */
+	"\x82\xb1\x82\xcc\x83" "h" "\x83" "A" ""
+	"\x82\xc9\x82\xcd\x8c\xae\x82\xaa\x82\xa9\x82\xa9\x82\xc1\x82\xc4\x82\xa2\x82\xdc\x82\xb7\x81" ""
+	"B",                                                                  /*   1 */
+	"\x82\xb1\x82\xcc\x83" "h" "\x83" "A" ""
+	"\x82\xc9\x82\xcd\x8c\xae\x82\xaa\x82\xa9\x82\xa9\x82\xc1\x82\xc4\x82\xa2\x82\xdc\x82\xb7\x81" ""
+	"B",                                                                  /*   2 */
+	"\x82\xb1\x82\xcc\x88\xf8\x82\xab\x8f" "o" ""
+	"\x82\xb5\x82\xcd\x8b\xf3\x82\xc5\x82\xb7\x81" "B",                   /*   3 */
+	"\x8e\xe8\x82\xaa\x93\xcd\x82\xab\x82\xdc\x82\xb9\x82\xf1\x81" "B",   /*   4 */
+	"\x82\xb1\x82\xcc\x83" "I" "\x83\x8c\x83\x93\x83" "W" ""
+	"\x82\xcc\x96\xd8\x82\xc9\x82\xcd\x89\xbd\x82\xe0\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81" ""
+	"B ",                                                                 /*   5 */
+	"\x82\xb1\x82\xea\x82\xcd\x83" "I" "\x83\x8c\x83\x93\x83" "W" ""
+	"\x82\xcc\x96\xd8\x82\xc5\x82\xcd\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81" ""
+	"I ",                                                                 /*   6 */
+	"\x88\xc3\x82\xb7\x82\xac\x82\xdc\x82\xb7\x81" "B",                   /*   7 */
+	"\""
+	"\x82\xb1\x82\xcc\x94\xa0\x82\xc9\x82\xcd\x8c\xae\x82\xaa\x82\xa9\x82\xa9\x82\xc1\x82\xc4\x82\xa2\x82\xdc\x82\xb7\x81" ""
+	"B ",                                                                 /*   8 */
+	"\x82\xb1\x82\xcc\x83" "h" "\x83" "A" "\x82\xcd\x8a" "J" ""
+	"\x82\xab\x82\xdc\x82\xb7\x81" "B ",                                  /*   9 */
+	"\x94\x9a\x92" "e" ""
+	"\x82\xc9\x82\xbd\x82\xc7\x82\xe8\x82\xc2\x82\xad\x82\xbd\x82\xdf\x82\xc9\x82\xcd\x81" ""
+	"A" "\x89\xbd\x82\xa9\x82\xaa\x95" "K" "\x97" "v" ""
+	"\x82\xc5\x82\xb7\x81" "B ",                                          /*  10 */
+	"\x82\xb1\x82\xcc\x89\xd4\x95" "r" ""
+	"\x82\xcd\x8b\xf3\x82\xc5\x82\xb7\x81" "B ",                          /*  11 */
+	"\x82\xe0\x82\xa4\x92\xca\x82\xea\x82\xdc\x82\xb7\x81" "B ",          /*  12 */
+	"\x8b" "{" "\x92\xec\x82\xcc\x82\xb1\x82\xc6\x82\xf0\x8a" "w" ""
+	"\x82\xf1\x82\xc5\x82\xa2\x82\xe9\x8e\x9e\x8a\xd4\x82\xcd\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81" ""
+	"I ",                                                                 /*  13 */
+	"\x8a" "G" ""
+	"\x82\xf0\x8c\xa9\x82\xe9\x82\xc9\x82\xcd\x82\xe0\x82\xa4\x92" "x" ""
+	"\x82\xb7\x82\xac\x82\xdc\x82\xb7\x81" "B",                           /*  14 */
+	"\x91\xd2\x82\xbf\x82\xc8\x82\xb3\x82\xa2\x81" "I" ""
+	"\x88\xc4\x93\xe0\x90" "l" ""
+	"\x82\xc9\x93\xe4\x82\xc6\x82\xab\x82\xcc\x8e\xe8\x82\xaa\x82\xa9\x82\xe8\x82\xf0\x93" ""
+	"n" "\x82\xb5\x82\xc8\x82\xb3\x82\xa2\x81" "B ",                      /*  15 */
+	"\""
+	"\x83\x81\x83\x82\x82\xc9\x82\xcd\x8e\xe8\x82\xaa\x93\xcd\x82\xab\x82\xdc\x82\xb9\x82\xf1\x81" ""
+	"B ",                                                                 /*  16 */
+	"\x96\xf2\x8d\xdc\x8e" "t" ""
+	"\x82\xcc\x82\xc6\x82\xb1\x82\xeb\x82\xd6\x81" "B",                   /*  17 */
+	"\x8c" "x" "\x8d\x90" ":" ""
+	"\x82\xa0\x82\xc8\x82\xbd\x82\xcd\x82\xb1\x82\xcc\x83\x8c\x83" "x" ""
+	"\x83\x8b\x82\xcc\x8f" "I" ""
+	"\x82\xed\x82\xe8\x82\xdc\x82\xc5\x82\xcd\x8d" "s" ""
+	"\x82\xad\x82\xb1\x82\xc6\x82\xaa\x82\xc5\x82\xab\x82\xdc\x82\xb7\x82\xaa\x81" ""
+	"A" ""
+	"\x82\xbb\x82\xcc\x90\xe6\x82\xf0\x91\xb1\x82\xaf\x82\xe9\x82\xbd\x82\xdf\x82\xc9\x95" ""
+	"K" "\x97" "v" "\x82\xc8\x91" "S" "\x82\xc4\x82\xcc\x83" "A" "\x83" ""
+	"N" "\x83" "V" "\x83\x87\x83\x93\x82\xf0\x8d" "s" ""
+	"\x82\xa2\x82\xdc\x82\xb9\x82\xf1\x82\xc5\x82\xb5\x82\xbd\x81" "B" ""
+	"\x8d\xa1\x83" "Q" "\x81" "[" ""
+	"\x83\x80\x82\xf0\x95\xdb\x91\xb6\x82\xb7\x82\xe9\x82\xb1\x82\xc6\x82\xf0\x82\xa8\x8a\xa9\x82\xdf\x82\xb5\x82\xdc\x82\xb7\x81" ""
+	"B",                                                                  /*  18 */
+	"\x8c" "x" "\x8d\x90" ":" ""
+	"\x82\xa0\x82\xc8\x82\xbd\x82\xcd\x82\xb1\x82\xcc\x83\x8c\x83" "x" ""
+	"\x83\x8b\x82\xcc\x8f" "I" ""
+	"\x82\xed\x82\xe8\x82\xdc\x82\xc5\x82\xcd\x8d" "s" ""
+	"\x82\xad\x82\xb1\x82\xc6\x82\xaa\x82\xc5\x82\xab\x82\xdc\x82\xb7\x82\xaa\x81" ""
+	"A" ""
+	"\x82\xbb\x82\xcc\x90\xe6\x82\xf0\x91\xb1\x82\xaf\x82\xe9\x82\xbd\x82\xdf\x82\xc9\x95" ""
+	"K" "\x97" "v" "\x82\xc8\x91" "S" "\x82\xc4\x82\xcc\x83" "A" "\x83" ""
+	"N" "\x83" "V" "\x83\x87\x83\x93\x82\xf0\x8d" "s" ""
+	"\x82\xed\x82\xc8\x82\xa9\x82\xc1\x82\xbd\x82\xa9\x82\xe0\x82\xb5\x82\xea\x82\xdc\x82\xb9\x82\xf1\x81" ""
+	"B" "\x8d\xa1\x83" "Q" "\x81" "[" ""
+	"\x83\x80\x82\xf0\x95\xdb\x91\xb6\x82\xb7\x82\xe9\x82\xb1\x82\xc6\x82\xf0\x82\xa8\x8a\xa9\x82\xdf\x82\xb5\x82\xdc\x82\xb7\x81" ""
+	"B",                                                                  /*  19 */
+	"\x92\xf2\x8e" "q" "\x82\xf0\x89" "^" ""
+	"\x82\xf1\x82\xc5\x82\xa2\x82\xe9\x8a\xd4\x82\xcd\x81" "A" ""
+	"\x93\xae\x82\xab\x82\xdc\x82\xed\x82\xe9\x82\xb1\x82\xc6\x82\xcd\x82\xc5\x82\xab\x82\xdc\x82\xb9\x82\xf1\x81" ""
+	"I ",                                                                 /*  20 */
+	"\x82\xb1\x82\xb1\x82\xc9\x82\xcd\x81" "A" ""
+	"\x91\xbc\x82\xc9\x89\xbd\x82\xe0\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81" ""
+	"B",                                                                  /*  21 */
+	"\x82\xb3\x82\xe6\x82\xa4\x82\xc8\x82\xe7" "...",                     /*  22 */
+	"\x83\x94\x83" "F" "\x83\x8b\x83" "T" "\x83" "C" "\x83\x86",          /*  23 */
+	"\x91" "_" "\x82\xed\x82\xea\x82\xbd\x8b" "{" "\x93" "a",             /*  24 */
+	"\x8e\x91\x97\xbf\x83" "]" "\x81" "[" ""
+	"\x83\x93\x82\xc5\x92\xb2\x82\xd7\x82\xe9",                           /*  25 */
+	"           " "\x82\xb1\x82\xcc\x83" "Q" "\x81" "[" ""
+	"\x83\x80\x82\xf0\x91\xb1\x82\xaf\x82\xe9",                           /*  26 */
+	"           " "\x90" "V" "\x82\xbd\x82\xc9\x83" "Q" "\x81" "[" ""
+	"\x83\x80\x82\xf0\x8e" "n" "\x82\xdf\x82\xe9" " ",                    /*  27 */
+	"           " "\x83" "Q" "\x81" "[" "\x83\x80\x82\xf0\x83\x8d\x81" ""
+	"[" "\x83" "h" "\x82\xb7\x82\xe9",                                    /*  28 */
+	"           " "\x83" "Q" "\x81" "[" "\x83\x80\x82\xf0\x83" "Z" ""
+	"\x81" "[" "\x83" "u" "\x82\xb7\x82\xe9",                             /*  29 */
+	"           " "\x8e\x9a\x96\x8b\x95\\\x8e\xa6" ": YES",               /*  30 */
+	"           " "\x8e\x9a\x96\x8b\x95\\\x8e\xa6" ": NO",                /*  31 */
+	"           " "\x89\xb9\x8a" "y: YES",                                /*  32 */
+	"           " "\x89\xb9\x8a" "y: NO",                                 /*  33 */
+	"           " "\x89\xb9\x8a" "y" ""
+	"\x82\xcc\x82\xa4\x82\xbf\x88\xea\x8b\xc8\x82\xf0\x83" "n" "\x81" ""
+	"[" "\x83" "h" "\x83" "f" "\x83" "B" "\x83" "X" "\x83" "N" ""
+	"\x82\xd6" " (20 MB)",                                                /*  34 */
+	"           " "\x89\xb9\x8a" "y" "\x82\xcd\x91" "S" "\x82\xc4\x83" ""
+	"n" "\x81" "[" "\x83" "h" "\x83" "f" "\x83" "B" "\x83" "X" "\x83" ""
+	"N" "\x82\xd6" " (92 MB)",                                            /*  35 */
+	"           " "\x89\xb9\x8a" "y" "\x82\xcd\x83" "n" "\x81" "[" ""
+	"\x83" "h" "\x83" "f" "\x83" "B" "\x83" "X" "\x83" "N" ""
+	"\x82\xd6\x93\xfc\x82\xea\x82\xc8\x82\xa2" " ",                       /*  36 */
+	nullptr,                                                              /*  37 */
+	nullptr,                                                              /*  38 */
+	"\x83" "{" "\x83\x8a\x83\x85\x81" "[" "\x83\x80",                     /*  39 */
+	"\x83" "Q" "\x81" "[" "\x83\x80\x82\xf0\x82\xe2\x82\xdf\x82\xe9",     /*  40 */
+	"",                                                                   /*  41 */
+	"\x8f\xe9\x8a\xd9\x82\xf0\x96" "K" "\x82\xcb\x82\xe9",                /*  42 */
+	"\x83" "N" "\x83\x8c\x83" "W" "\x83" "b" "\x83" "g",                  /*  43 */
+	"           " ""
+	"\x82\xb1\x82\xcc\x8f\xea\x96\xca\x82\xf0\x91\xb1\x82\xaf\x82\xe9",   /*  44 */
+	"           " ""
+	"\x82\xb1\x82\xcc\x8f\xea\x96\xca\x82\xf0\x95\xdb\x91\xb6\x82\xb7\x82\xe9",/*  45 */
+	"           " ""
+	"\x82\xb1\x82\xcc\x8f\xea\x96\xca\x82\xf0\x83\x8d\x81" "[" "\x83" ""
+	"h" "\x82\xb7\x82\xe9",                                               /*  46 */
+	nullptr,                                                              /*  47 */
+	"           Omni3D: " "\x95" "W" "\x8f\x80",                          /*  48 */
+	"           Omni3D: " "\x92\xe1\x91\xac",                             /*  49 */
+	"           Omni3D: " "\x92\xb4\x92\xe1\x91\xac",                     /*  50 */
+	"           Omni3D: " "\x8d\x82\x91\xac",                             /*  51 */
+	"           Omni3D: " "\x92\xb4\x8d\x82\x91\xac",                     /*  52 */
+	"\x82" "n" "\x82" "j",                                                /*  53 */
+	"\x83" "L" "\x83\x83\x83\x93\x83" "Z" "\x83\x8b",                     /*  54 */
+	"\x83" "t" "\x83\x8a\x81" "[",                                        /*  55 */
+	"\x96\xbc\x91" "O" "\x82\xc8\x82\xb5" " ",                            /*  56 */
+	"\x8c" "x" "\x8d\x90\x81" "F" "\x82\xb1\x82\xcc\x83" "Q" "\x81" "[" ""
+	"\x83\x80\x82\xf0\x8f" "I" "\x97\xb9\x82\xb5\x82\xdc\x82\xb7",        /*  57 */
+	"\x83\x8a\x83" "^" "\x81" "[" "\x83\x93",                             /*  58 */
+	"\x8f\xe9\x8a\xd9",                                                   /*  59 */
+	"\x83\x81\x83" "C" "\x83\x93\x83\x81\x83" "j" "\x83\x85\x81" "[" ""
+	"\x82\xc9\x96\xdf\x82\xe9",                                           /*  60 */
+	"\x8e\x91\x97\xbf\x83" "]" "\x81" "[" "\x83\x93\x82\xcc\x97" "v" ""
+	"\x96\xf1",                                                           /*  61 */
+	"\x8f\xe9\x8a\xd9\x82\xc6\x92\xeb\x89\x80\x82\xcc\x92" "n" "\x90" ""
+	"}",                                                                  /*  62 */
+	"\""
+	"\x8f\xe9\x8a\xd9\x82\xcc\x93\xe0\x95\x94\x8c\xa9\x8e\xe6\x82\xe8\x90" ""
+	"}",                                                                  /*  63 */
+	"\x83" "n" "\x81" "[" "\x83" "h" "\x83" "f" "\x83" "B" "\x83" "X" ""
+	"\x83" "N" ""
+	"\x82\xc9\x8f\x91\x82\xab\x8d\x9e\x82\xdd\x82\xaa\x82\xc5\x82\xab\x82\xdc\x82\xb9\x82\xf1" ""
+	": " "\x83" "f" "\x83" "B" "\x83" "X" "\x83" "N" ""
+	"\x82\xcd\x82\xa2\x82\xc1\x82\xcf\x82\xa2\x82\xc5\x82\xb7",           /*  64 */
+	nullptr,                                                              /*  65 */
+	"CD" "\x82\xf0\x91" "}" ""
+	"\x93\xfc\x82\xb5\x82\xc4\x89\xba\x82\xb3\x82\xa2",                   /*  66 */
+	"%d CD" "\x82\xf0\x91" "}" "\x93\xfc\x82\xb5\x81" "A" ""
+	"\x89\xbd\x82\xa9\x83" "L" "\x81" "[" ""
+	"\x82\xf0\x89\x9f\x82\xb5\x82\xc4\x89\xba\x82\xb3\x82\xa2\x81" "B",   /*  67 */
+	"\x94\xfc\x8f" "p",                                                   /*  68 */
+	"\x93\x9d\x8e\xa1",                                                   /*  69 */
+	"\x8b" "{" "\x92\xec",                                                /*  70 */
+	"\x8f\xe9\x8a\xd9\x82\xc5\x82\xcc\x90\xb6\x8a\x88",                   /*  71 */
+	"\x8f\xe9\x8a\xd9\x82\xc6\x92\xeb\x89\x80",                           /*  72 */
+	"\x94" "N" "\x95\\",                                                  /*  73 */
+	"\x83" "A" "\x83" "|" "\x83\x8d\x83\x93\x82\xcc\x90\xf2\x90\x85",     /*  74 */
+	"\x8f\xe9\x8a\xd9",                                                   /*  75 */
+	"\x97\xf1\x92\x8c",                                                   /*  76 */
+	"\x96\xc0\x98" "H",                                                   /*  77 */
+	"\x83\x89\x83" "g" "\x81" "[" "\x83" "k" "\x82\xcc\x90\xf2\x90\x85",  /*  78 */
+	"\x83" "I" "\x83\x89\x83\x93\x83" "W" "\x83\x85\x83\x8a\x81" "[",     /*  79 */
+	"\x90\x85\x92\xeb\x89\x80",                                           /*  80 */
+	"\x97\xce\x82\xcc\xe3" "O" "\x9f" "~",                                /*  81 */
+	"\x91\xe5\x89" "X" "\x8e\xc9",                                        /*  82 */
+	"\x8f\xac\x89" "X" "\x8e\xc9",                                        /*  83 */
+	"\x92\xeb\x89\x80",                                                   /*  84 */
+	"\x8b" "{" "\x92\xec\x91" "O",                                        /*  85 */
+	"\x91\xe5\x90\x85\x98" "H",                                           /*  86 */
+	"\x93\xec\x82\xcc\x89\xd4\x92" "d",                                   /*  87 */
+	"\x96" "k" "\x82\xcc\x89\xd4\x92" "d",                                /*  88 */
+	"\x8d\x91\x89\xa4\x82\xcc\x96\xec\x8d\xd8\x89\x80",                   /*  89 */
+	"\x95\x91\x93\xa5\x8f\xea",                                           /*  90 */
+	"\x83" "l" "\x83" "v" "\x83" "`" "\x83\x85\x81" "[" "\x83" "k" ""
+	"\x82\xcc\x90\xf2\x90\x85",                                           /*  91 */
+	"\x83" "X" "\x83" "C" "\x83" "X" "\x90" "l" "\x82\xcc\x92" "r",       /*  92 */
+	"\x90" "j (" "\x95" "s" "\x97" "v!)",                                 /*  93 */
+	"\xe7\xf5",                                                           /*  94 */
+	"\x8e\x86",                                                           /*  95 */
+	"\x94\xfc\x8f" "p" "\x82\xc9\x8a\xd6\x82\xb7\x82\xe9\x95\x97\x8e" ""
+	"h" "\x95\xb6",                                                       /*  96 */
+	"\x8f\xac\x82\xb3\x82\xa2\x8c\xae" " 1",                              /*  97 */
+	"\x95\xcf\x89\xbb\x82\xb5\x82\xbd\x8e\x86",                           /*  98 */
+	"\x83" "V" "\x83" "~" "\x82\xcc\x82\xc2\x82\xa2\x82\xbd\x8e\x86",     /*  99 */
+	"\x94\xa0\x82\xa9\x82\xe7\x8e\xe6\x82\xe8\x8f" "o" ""
+	"\x82\xb5\x82\xbd\x8e\x86",                                           /* 100 */
+	"\""
+	"\x89\xa4\x89\xc6\x82\xcc\x8c\x8c\x93\x9d\x82\xc9\x8a\xd6\x82\xb7\x82\xe9\x95\x97\x8e" ""
+	"h" "\x95\xb6",                                                       /* 101 */
+	"\x93\x94\x82\xb3\x82\xea\x82\xbd\x82\xeb\x82\xa4\x82\xbb\x82\xad",   /* 102 */
+	"\x82\xeb\x82\xa4\x82\xbb\x82\xad",                                   /* 103 */
+	"\x8c\xae",                                                           /* 104 */
+	"\x83" "X" "\x83" "P" "\x83" "b" "\x83" "`" "\x93\xfc\x82\xea",       /* 105 */
+	"\x83" "X" "\x83" "P" "\x83" "b" "\x83" "`" "\x93\xfc\x82\xea",       /* 106 */
+	"\x82\xc9\x82\xb9\x82\xcc\x83" "X" "\x83" "P" "\x83" "b" "\x83" "`",  /* 107 */
+	"\x92\xf2\x8e" "q",                                                   /* 108 */
+	"\x89\xf3\x82\xb3\x82\xea\x82\xbd\x83" "X" "\x83" "P" "\x83" "b" ""
+	"\x83" "`",                                                           /* 109 */
+	"\x8a" "G" "\x95" "M",                                                /* 110 */
+	"\x8b\xe0\x90" "F" "\x82\xcc\x8a" "G" "\x95" "M",                     /* 111 */
+	"\x90\xd4\x82\xa2\x8a" "G" "\x95" "M",                                /* 112 */
+	"\x83" "f" "\x83" "b" "\x83" "T" "\x83\x93\x97" "p" "\x96\xd8\x92" ""
+	"Y",                                                                  /* 113 */
+	"\x83\x81\x83\x82",                                                   /* 114 */
+	"\x8c\x9a\x92" "z" "\x82\xc9\x8a\xd6\x82\xb7\x82\xe9\x95\x97\x8e" ""
+	"h" "\x95\xb6",                                                       /* 115 */
+	"\x8f\xac\x82\xb3\x82\xa2\x8c\xae" " 2",                              /* 116 */
+	"\x8b" "|" "\x82\xcc\x8e\xcb\x8e\xe8" "(" "\x95" "s" "\x97" "v!)",    /* 117 */
+	"\x8a" "y" "\x95\x88",                                                /* 118 */
+	"\x83" "r" "\x83\x8a\x83\x84\x81" "[" "\x83" "h" "\x82\xcc\x83" "L" ""
+	"\x83\x85\x81" "[",                                                   /* 119 */
+	"\x94" "F" "\x89\xc2",                                                /* 120 */
+	"\x83\x81\x83" "_" "\x83\x8b\x82\xcc\x95\xa1\x8e\xca",                /* 121 */
+	"\x83\x81\x83" "_" ""
+	"\x83\x8b\x82\xcc\x93\xfc\x82\xc1\x82\xbd\x88\xf8\x82\xab\x8f" "o" ""
+	"\x82\xb5",                                                           /* 122 */
+	"\x8f\xac\x82\xb3\x82\xc8\x83" "A" "\x83" "|" ""
+	"\x83\x8d\x83\x93\x82\xcc\x83" "h" "\x83" "A" "\x82\xcc\x8c\xae",     /* 123 */
+	"\x90" "H" "\x97\xbf",                                                /* 124 */
+	"\x8f" "@" "\x8b\xb3\x82\xc9\x8a\xd6\x82\xb7\x82\xe9\x95\x97\x8e" ""
+	"h" "\x95\xb6",                                                       /* 125 */
+	"\x96\xc1",                                                           /* 126 */
+	"\x93\x9d\x8e\xa1\x82\xc9\x8a\xd6\x82\xb7\x82\xe9\x95\x97\x8e" "h" ""
+	"\x95\xb6",                                                           /* 127 */
+	"\x83" "y" "\x83\x93",                                                /* 128 */
+	"\x83\x81\x83\x82",                                                   /* 129 */
+	"\x96" "]" "\x89\x93\x8b\xbe",                                        /* 130 */
+	"\x83\x94\x83" "H" "\x81" "[" "\x83" "o" ""
+	"\x83\x93\x82\xcc\x90\xdd\x8c" "v" "\x90" "}",                        /* 131 */
+	"\x83\x94\x83" "H" "\x81" "[" "\x83" "o" ""
+	"\x83\x93\x82\xcc\x90\xdd\x8c" "v" "\x90" "}",                        /* 132 */
+	"\x82\xd0\x82\xe0",                                                   /* 133 */
+	"\x94\xc5\x89\xe6",                                                   /* 134 */
+	"\x8f\xac\x82\xb3\x82\xa2\x8c\xae" " 3",                              /* 135 */
+	"\x8f\xac\x82\xb3\x82\xa2\x8c\xae" " 4",                              /* 136 */
+	"\x83\x81\x83\x82",                                                   /* 137 */
+	"\x8f\xe9\x8a\xd9\x82\xcc\x8c\xa9\x8e\xe6\x82\xe8\x90" "}",           /* 138 */
+	"\x8f\xe9\x8a\xd9\x82\xcc\x8c\xa9\x8e\xe6\x82\xe8\x90" "}",           /* 139 */
+	"\x89\xae\x8d\xaa\x97\xa0\x95\x94\x89\xae\x82\xcc\x8c\xae",           /* 140 */
+	"\x8b\xf5\x98" "b",                                                   /* 141 */
+	"\x96\xc0\x98" "H" "\x82\xcc\x92" "n" "\x90" "}",                     /* 142 */
+	"\x93\xb9\x8b\xef",                                                   /* 143 */
+	"\x96\xf2",                                                           /* 144 */
+	"\x82\xeb\x82\xa4\x82\xbb\x82\xad\x8f\xc1\x82\xb5",                   /* 145 */
+	"\x91\xe6" "%d" "\x8f\xcd",                                           /* 146 */
+	"\x8f\xea\x96\xca",                                                   /* 147 */
+	/* These ones are not in messages but it's simpler */
+	"\x82\xab\x82\xc2\x82\xcb\x82\xc6\x92\xdf",                           /* 148/Epigraph */
+	"\x81" "u" "\x83" "t" "\x83\x89\x83\x93\x83" "X" "\x82\xcc\x82" "R"
+	"\x82\xc2\x82\xcc\x93" "s" "\x8e" "s" "\x96\xbc\x81" "v",             /* 149/Memo */
+	nullptr,                                                              /* 150/Bomb */
+};
+
+static char const *const versaillesJApaintings[] = {
+	"\"" "\x94\xa0\x91" "D" ""
+	"\x82\xc9\x8f\xe6\x82\xe9\x93\xae\x95\xa8\x82\xbd\x82\xbf\"\r\x83" ""
+	"W" "\x83\x8d\x83\x89\x83\x82\x81" "E" "\x83" "o" "\x83" "b" "\x83" ""
+	"T" "\x81" "[" "\x83" "m ",                                           /*  0: 41201 */
+	"\"" "\x83" "G" "\x83" "}" "\x83" "I" "\x82\xcc\x94\xd3\x8e" ""
+	"`\"\r" "\x83\x84\x83" "R" "\x83" "|" "\x81" "E" "\x83" "o" "\x83" ""
+	"b" "\x83" "T" "\x81" "[" "\x83" "m",                                 /*  1: 41202 */
+	"\"" "\x83" "L" "\x83\x8a\x83" "X" "\x83" "g" ""
+	"\x82\xcc\x91\xab\x89\xba\x82\xcc\x83" "}" "\x83" "O" "\x83" "_" ""
+	"\x83\x89\x82\xcc\x83" "}" "\x83\x8a\x83" "A\"\r",                    /*  2: 41203 */
+	"\"" "\x94\xa0\x91" "D" "\x82\xf0\x8d" "~" ""
+	"\x82\xe8\x82\xe9\"\r\x83" "W" "\x83\x8d\x83\x89\x83\x82\x81" "E" ""
+	"\x83" "o" "\x83" "b" "\x83" "T" "\x81" "[" "\x83" "m ",              /*  3: 41204 */
+	"\"" "\x8a\xe2\x82\xa9\x82\xe7\x90\x85\x82\xf0\x8f" "o" ""
+	"\x82\xb7\x83\x82\x81" "[" "\x83" "Z\"\r" "\x83\x84\x83" "R" "\x83" ""
+	"|" "\x81" "E" "\x83" "o" "\x83" "b" "\x83" "T" "\x81" "[" "\x83" ""
+	"m",                                                                  /*  4: 41205 */
+	"\"" "\x83" "A" "\x83\x8b\x83" "x" ""
+	"\x83\x8b\x82\xcc\x90\xed\x82\xa2\"\r\x83" "W" "\x83\x87\x83" "[" ""
+	"\x83" "t" "\x81" "E" "\x83" "p" "\x83\x8d\x83" "Z" "\x83\x8b",       /*  5: 41301 */
+	"\"" "\x83" "A" "\x83\x8c\x83" "N" "\x83" "T" "\x83\x93\x83" "_" ""
+	"\x81" "[" "\x91\xe5\x89\xa4\x81" "E" "\x83" "A" "\x83\x8b\x83" "x" ""
+	"\x83\x8b\x82\xcc\x90\xed\x82\xa2\x82\xc5\x83" "_" "\x83\x8c\x83" ""
+	"C" "\x83" "I" "\x83" "X" "\x82\xf0\x94" "j" ""
+	"\x82\xe9\"\r\x83\x8b\x81" "E" "\x83" "u" "\x83\x8b\x83" "M" "\x83" ""
+	"j" "\x83\x87\x83\x93" " ",                                           /*  6: 41302 */
+	"\"" "\x83\x8b\x81" "[" "\x83" "Y" ""
+	"\x82\xcc\x90\xed\x93\xac\"\r\x83" "W" "\x83\x87\x83" "[" "\x83" ""
+	"t" "\x81" "E" "\x83" "p" "\x83\x8d\x83" "Z" "\x83\x8b",              /*  7: 42401 */
+	"\"" "\x90\xb9\x83" "`" "\x83" "F" "\x83" "`" "\x83\x8a\x83" "A" ""
+	"\x82\xc6\x8a" "y" "\x95\x88\x82\xf0\x8e\x9d\x82\xc2\x93" "V" ""
+	"\x8e" "g\"\r" "\x83" "C" "\x83\x8b\x81" "E" "\x83" "h" ""
+	"\x83\x81\x83" "j" "\x83" "L" "\x81" "[" "\x83" "m",                  /*  8: 42901 */
+	"\"" "\x83\x82\x83\x93\x83" "J" "\x83" "_" "\x82\xcc\x83" "h" ""
+	"\x83\x93\x81" "E" "\x83" "t" "\x83\x89\x83\x93\x83" "V" "\x83" "X" ""
+	"\x83" "R\"\r" "\x83" "t" "\x83" "@" "\x83\x93\x81" "E" "\x83" "_" ""
+	"\x83" "C" "\x83" "N",                                                /*  9: 42902 */
+	"\"" "\x97" "c" ""
+	"\x82\xab\x90\xf4\x97\xe7\x8e\xd2\x90\xb9\x83\x88\x83" "n" "\x83" ""
+	"l\"\r" "\x83" "J" "\x83\x89\x83" "b" "\x83" "`",                     /* 10: 42903 */
+	"\"" "\x90\xb9\x83" "}" "\x83" "^" "\x83" "C\"\r" "\x83\x94\x83" ""
+	"@" "\x83\x89\x83\x93\x83" "^" "\x83\x93",                            /* 11: 42904 */
+	"\"" "\x83" "V" "\x81" "[" "\x83" "U" "\x81" "[" ""
+	"\x82\xc9\x82\xb3\x82\xb3\x82\xae\"\r\x83\x94\x83" "@" ""
+	"\x83\x89\x83\x93\x83" "^" "\x83\x93",                                /* 12: 42905 */
+	"\"" "\x90\xb9\x83\x8b\x83" "J\"\r" "\x83\x94\x83" "@" ""
+	"\x83\x89\x83\x93\x83" "^" "\x83\x93",                                /* 13: 42906 */
+	"\"" "\x90\xb9\x83" "J" "\x83" "^" "\x83\x8a\x83" "i" ""
+	"\x82\xcc\x90" "_" "\x94\xe9\x82\xcc\x8c\x8b\x8d\xa5\"\r\x83" "A" ""
+	"\x83\x8c\x83" "b" "\x83" "T" "\x83\x93\x83" "h" "\x83\x8d\x81" "E" ""
+	"\x83" "g" "\x83" "D" "\x83\x8b\x83" "`",                             /* 14: 42907 */
+	"\"" "\x8e\xf0\x88\xf9\x82\xdd\x82\xcc\x8f" "W" ""
+	"\x82\xdc\x82\xe8\"\r\x83" "j" "\x83" "R" "\x83\x89\x81" "E" "\x83" ""
+	"g" "\x83" "D" "\x83\x8b\x83" "j" "\x83" "G",                         /* 15: 42908 */
+	"\"" "\x90\xe8\x82\xa2\x8f\x97\"\r\x83\x94\x83" "@" ""
+	"\x83\x89\x83\x93\x83" "^" "\x83\x93",                                /* 16: 42909 */
+	"\"" "\x92" "G" "\x8b\xd5\x82\xf0\x92" "e" "\x82\xad\x83" "_" ""
+	"\x83\x94\x83" "B" "\x83" "f" "\x89\xa4\"\r\x83" "C" "\x83\x8b\x81" ""
+	"E" "\x83" "h" "\x83\x81\x83" "j" "\x83" "L" "\x81" "[" "\x83" "m",   /* 17: 42910 */
+	"\"" "\x83" "}" "\x83" "O" "\x83" "_" "\x83\x89\x82\xcc\x83" "}" ""
+	"\x83\x8a\x83" "A\"\r" "\x83" "C" "\x83\x8b\x81" "E" "\x83" "h" ""
+	"\x83\x81\x83" "j" "\x83" "L" "\x81" "[" "\x83" "m",                  /* 18: 42911 */
+	"\"" "\x8e\xa9\x89\xe6\x91\x9c\"\r\x83" "t" "\x83" "@" ""
+	"\x83\x93\x81" "E" "\x83" "_" "\x83" "C" "\x83" "N",                  /* 19: 42912 */
+	"\"" "\x90\xf4\x97\xe7\x8e\xd2\x90\xb9\x83\x88\x83" "n" "\x83" ""
+	"l\"\r" "\x83\x94\x83" "@" "\x83\x89\x83\x93\x83" "^" "\x83\x93",     /* 20: 42913 */
+	"\"" "\x93" "V" "\x8e" "g" "\x82\xc9\x8b" "~" ""
+	"\x82\xed\x82\xea\x82\xe9\x83" "n" "\x83" "K" "\x83\x8b\"\r\x83" ""
+	"W" "\x83\x87\x83\x94\x83" "@" "\x83\x93\x83" "j" "\x81" "E" ""
+	"\x83\x89\x83\x93\x83" "t" "\x83\x89\x83\x93\x83" "R",                /* 21: 42914 */
+	"\"" "\x90\xb9\x83" "}" "\x83\x8b\x83" "R\"\r" "\x83\x94\x83" "@" ""
+	"\x83\x89\x83\x93\x83" "^" "\x83\x93",                                /* 22: 42915 */
+	"\"" "\x83" "J" "\x83\x8a\x83\x85\x83" "h" ""
+	"\x83\x93\x82\xcc\x89\xa4\x8e" "q" "\x83\x81\x83\x8c\x83" "A" ""
+	"\x83" "O" "\x83\x8d\x83" "X" ""
+	"\x82\xcc\x92\x96\x8e\xeb\x82\xe8\"\r\x83" "W" "\x83\x83\x83" "b" ""
+	"\x83" "N" "\x81" "E" "\x83\x8b\x83\\\x81" "[",                       /* 23: 43090 */ /* BUG: Switched */
+	"\"" "\x83\x8d\x81" "[" "\x83" "}" ""
+	"\x95\x97\x82\xcc\x88\xdf\x91\x95\x82\xf0\x82\xdc\x82\xc6\x82\xa4\x89\xa4\"\r\x83" ""
+	"W" "\x83\x83\x83\x93\x81" "E" "\x83\x94\x83" "@" ""
+	"\x83\x89\x83\x93",                                                   /* 24: 43091 */
+	"\"" "\x83" "A" "\x83" "^" "\x83\x89\x83\x93\x83" "e\"\r" "\x83" ""
+	"W" "\x83\x83\x83" "b" "\x83" "N" "\x81" "E" "\x83\x8b\x83\\\x81" ""
+	"[",                                                                  /* 25: 43092 */
+	"\"" "\x83" "A" "\x83\x93\x83" "L" "\x83" "Z" "\x83" "X" ""
+	"\x82\xf0\x94" "w" "\x95\x89\x82\xa4\x83" "A" "\x83" "C" "\x83" "l" ""
+	"\x83" "C" "\x83" "A" "\x83" "X\"\r" "\x83" "X" "\x83" "p" "\x81" ""
+	"[" "\x83" "_",                                                       /* 26: 43100 */
+	"\"" "\x83" "_" "\x83\x94\x83" "B" "\x83" "f" "\x82\xc6\x83" "o" ""
+	"\x83" "e" "\x83" "V" "\x83" "o\"\r" "\x83\x94\x83" "F" ""
+	"\x83\x8d\x83" "l" "\x81" "[" "\x83" "[",                             /* 27: 43101 */
+	"\"" "\x83" "G" "\x83" "W" "\x83" "v" "\x83" "g" ""
+	"\x82\xd6\x82\xcc\x93\xa6\x94\xf0\"\r\x83" "O" "\x83" "C" "\x81" ""
+	"[" "\x83" "h" "\x81" "E" "\x83\x8c\x81" "[" "\x83" "j ",             /* 28: 43102 */
+	"\"" "\x83\x8b\x83" "C" "\x82" "P" "\x82" "S" "\x90\xa2\x8b" "R" ""
+	"\x94" "n" "\x91\x9c\"\r\x83" "s" "\x83" "G" "\x81" "[" ""
+	"\x83\x8b\x81" "E" "\x83" "~" "\x83" "j" "\x83\x83\x81" "[" ""
+	"\x83\x8b",                                                           /* 29: 43103 */
+	"\"" "\x89\xa4\x82\xcc\x88\xd0\x8c\xf5\x82\xc6\x94\xfc\x8f" "p" ""
+	"\x82\xcc\x90" "i" "\x95\xe0\"\r\x83" "E" "\x83" "@" "\x81" "[" ""
+	"\x83" "X",                                                           /* 30: 43104 */
+	"\"" "\x83" "C" "\x83" "t" "\x83" "B" "\x83" "Q" "\x83" "l" "\x83" ""
+	"C" "\x83" "A" "\x82\xcc\x8b" "]" "\x90\xb5\"\r\x83" "V" ""
+	"\x83\x83\x83\x8b\x83\x8b\x81" "E" "\x83" "h" "\x81" "E" ""
+	"\x83\x89\x81" "E" "\x83" "t" "\x83" "H" "\x83" "b" "\x83" "X",       /* 31: 43130 */
+	"\"" "\x83\x8b\x83" "C" "\x82" "P" "\x82" "S" ""
+	"\x90\xa2\x8b\xb9\x91\x9c\"\r" " " "\x83" "x" "\x83\x8b\x83" "j" ""
+	"\x81" "[" "\x83" "j",                                                /* 32: 43131 */
+	"\"" "\x83\x82\x83\x8b\x83" "t" "\x83" "F" "\x83" "E" "\x83" "X" ""
+	"\x82\xcc\x98" "r" "\x82\xcc\x92\x86\x82\xcc\x83" "G" ""
+	"\x83\x93\x83" "f" "\x83\x85\x83" "~" "\x83" "I" ""
+	"\x83\x93\x82\xf0\x94\xad\x8c\xa9\x82\xb7\x82\xe9\x83" "_" "\x83" ""
+	"C" "\x83" "A" "\x83" "i\"\r" "\x83" "K" "\x83" "u" "\x83\x8a\x83" ""
+	"G" "\x83\x8b\x81" "E" "\x83" "u" "\x83\x89\x83\x93\x83" "V" ""
+	"\x83\x83\x81" "[" "\x83\x8b",                                        /* 33: 43132 */
+	"\"" "\x90\xb9\x83" "y" "\x83" "e" ""
+	"\x83\x8d\x82\xc6\x90\xb9\x95\xea\"\r\x83" "C" "\x83\x8b\x81" "E" ""
+	"\x83" "O" "\x83" "G" "\x83\x8b\x83" "`" "\x81" "[" "\x83" "m",       /* 34: 43140 */
+	"\"" "\x83" "G" "\x83" "}" "\x83" "I" "\x82\xcc\x8e" "g" "\x93" "k" ""
+	"\x82\xbd\x82\xbf\"\r\x83\x94\x83" "F" "\x83\x8d\x83" "l" "\x81" ""
+	"[" "\x83" "[",                                                       /* 35: 43141 */
+	"\"" "\x90\xb9\x89\xc6\x91\xb0\"\r\x83\x94\x83" "F" "\x83\x8d\x83" ""
+	"l" "\x81" "[" "\x83" "[",                                            /* 36: 43142 */
+	"\"" "\x83" "A" "\x83\x8c\x83" "N" "\x83" "T" "\x83\x93\x83" "_" ""
+	"\x81" "[" "\x91\xe5\x89\xa4\x82\xcc\x91" "O" "\x82\xcc\x83" "_" ""
+	"\x83\x8c\x83" "C" "\x83" "I" "\x83" "X" "\x88\xea\x91\xb0\"\r\x83" ""
+	"V" "\x83\x83\x83\x8b\x83\x8b\x81" "E" "\x83\x8b\x81" "E" "\x83" ""
+	"u" "\x83\x89\x83\x93",                                               /* 37: 43143 */
+	"\"" "\x90\xf4\x97\xe7\x8e\xd2\x90\xb9\x83\x88\x83" "n" "\x83" ""
+	"l\"\r" "\x83\x89\x83" "t" "\x83" "@" "\x83" "G" "\x83\x8d",          /* 38: 43144 */
+	"\"" "\x83" "}" "\x83\x8a\x81" "[" "\x81" "E" "\x83" "h" "\x81" "E" ""
+	"\x83\x81\x83" "f" "\x83" "B" "\x83" "`\"\r" "\x83" "t" "\x83" "@" ""
+	"\x83\x93\x81" "E" "\x83" "_" "\x83" "C" "\x83" "N",                  /* 39: 43150 */
+	"\"" "\x83" "A" "\x83" "P" "\x83\x8d\x83" "I" "\x83" "X" ""
+	"\x82\xc6\x8a" "i" "\x93\xac\x82\xb7\x82\xe9\x83" "w" ""
+	"\x83\x89\x83" "N" "\x83\x8c\x83" "X\"\r" "\x83" "O" "\x83" "C" ""
+	"\x81" "[" "\x83" "h" "\x81" "E" "\x83\x8c\x81" "[" "\x83" "j",       /* 40: 43151 */
+	"\"" "\x83" "l" "\x83" "b" "\x83\\\x83" "X" ""
+	"\x82\xc9\x82\xe6\x82\xe9\x83" "f" "\x83" "B" "\x83" "A" "\x83" "l" ""
+	"\x83" "C" "\x83\x89\x82\xcc\x97\xaa\x92" "D\"\r" "\x83" "O" "\x83" ""
+	"C" "\x81" "[" "\x83" "h" "\x81" "E" "\x83\x8c\x81" "[" "\x83" "j",   /* 41: 43152 */
+	"\"" ""
+	"\x90\xb9\x8d\xad\x82\xf0\x8e\xf3\x82\xaf\x82\xbd\x8c\xe3\x82\xcc\x83" ""
+	"A" "\x83" "b" "\x83" "V" "\x83" "W" "\x82\xcc\x90\xb9\x83" "t" ""
+	"\x83\x89\x83\x93\x83" "`" "\x83" "F" "\x83" "X" "\x83" "R\"\r" ""
+	"\x83" "Z" "\x81" "[" "\x83" "w" "\x83\x8b\x83" "Y",                  /* 42: 43153 */
+	"\"" "\x8c\x8c\x82\xc9\x82\xdc\x82\xdd\x82\xea\x82\xbd\x83" "T" ""
+	"\x83" "C" "\x83\x8b\x83" "X" ""
+	"\x82\xcc\x93\xaa\x82\xf0\x93\xcb\x82\xad\x83" "g" "\x83" "~" ""
+	"\x83\x8a\x83" "X\"\r" "\x83\x8b\x81" "[" "\x83" "x" "\x83\x93\x83" ""
+	"X",                                                                  /* 43: 43154 */
+	"\"" "\x83" "q" "\x83\x85\x83" "h" "\x83\x89\x82\xc6\x8a" "i" ""
+	"\x93\xac\x82\xb7\x82\xe9\x83" "w" "\x83\x89\x83" "N" ""
+	"\x83\x8c\x83" "X\"\r" "\x83" "O" "\x83" "C" "\x81" "[" "\x83" "h" ""
+	"\x81" "E" "\x83\x8c\x81" "[" "\x83" "j",                             /* 44: 43155 */
+	"\"" "\x89\x8a\x82\xcc\x92\x86\x82\xcc\x83" "w" "\x83\x89\x83" "N" ""
+	"\x83\x8c\x83" "X \"\r" "\x83" "O" "\x83" "C" "\x81" "[" "\x83" "h" ""
+	"\x81" "E" "\x83\x8c\x81" "[" "\x83" "j",                             /* 45: 43156 */
+	"\"" "\x83" "v" "\x83" "t" "\x83" "@" "\x83\x8b\x83" "c" ""
+	"\x8c\xf2\x82\xc6\x94\xde\x82\xcc\x92\xed\x83\x8d\x83" "x" "\x81" ""
+	"[" "\x83\x8b\x8c\xf6\x82\xcc\x8f\xd1\x91\x9c\"\r\x83" "t" "\x83" ""
+	"@" "\x83\x93\x81" "E" "\x83" "_" "\x83" "C" "\x83" "N",              /* 46: 43157 */
+	"\"" "\x8f\\\x8e\x9a\x89\xcb\x8d" "~" "\x89\xba\"\r\x83" "V" ""
+	"\x83\x83\x83\x8b\x83\x8b\x81" "E" "\x83\x8b\x81" "E" "\x83" "u" ""
+	"\x83\x89\x83\x93",                                                   /* 47: 45260 */
+};
+
+static const Subtitle versaillesJAsubtitles[] = {
+	{
+		"a0_vf.hns", {
+			{
+				75, "\x83\x94\x83" "F" "\x83\x8b\x83" "T" "\x83" "C" ""
+				"\x83\x86\x82\xcc\x8b" "{" "\x93" "a" "\x82\xcd\x81" "@ " "\x83" ""
+				"A" "\x83\x8b\x83" "L" "\x83" "m" "\x83" "I" "\x83" "X" ""
+				"\x82\xcc\x89\xa4\x8b" "{" "\x82\xcc\x82\xb2\x82\xc6\x82\xad\x81" ""
+				"@ " "\x89\xc4\x8e\x8a\x82\xcc\x93\xfa\x82\xc9\x81" "@ " ""
+				"\x89\x8a\x82\xc6\x82\xc8\x82\xc1\x82\xc4\x8b\xf3\x82\xc9\x95\x91\x82\xa2\x8f\xe3\x82\xaa\x82\xe8\x81" ""
+				"@ " "\x8c\xe3\x82\xc9\x82\xcd\x89\xbd\x82\xe0\x8e" "c" ""
+				"\x82\xe7\x82\xc8\x82\xa2\x82\xc5\x82\xa0\x82\xeb\x82\xa4"
+			},
+			{180, ""},
+			{
+				210, "\x8d\x91\x89\xa4\x82\xcd\x81" "A" ""
+				"\x82\xb1\x82\xf1\x82\xc8\x82\xe0\x82\xcc\x82\xcd\x8b\xb6\x90" "l" ""
+				"\x82\xcc\x8c\xb6\x8e\x8b\x81" "A" "\x97\x9d\x90\xab\x82\xf0\x92" ""
+				"m" "\x82\xe7\x82\xca\x91" "z" "\x91\x9c\x97\xcd\x82\xcc\x8e" "Y" ""
+				"\x95\xa8\x82\xc9\x82\xb7\x82\xac\x82\xca\x82\xc6\x82\xa8\x82\xc1\x82\xb5\x82\xe1\x82\xc1\x82\xc4\x82\xa8\x82\xe7\x82\xea\x82\xe9\x82\xaa\x81" ""
+				"D" "\x81" "D"
+			},
+			{
+				260, "\x83" "{" "\x83\x93\x83" "^" "\x83\x93\x82\xc6\x81" "@ " ""
+				"\x94\xde\x82\xcc\x90" "b" "\x89\xba\x82\xbd\x82\xbf\x82\xf0\x8a" ""
+				"F" "\x89\xf0\x95\xfa\x82\xb5\x82\xc4\x82\xe0\x81" "@ " ""
+				"\x96\xb3\x91\xca\x82\xc5\x82\xa0\x82\xe9\x81" "@ " ""
+				"\x8e\x9e\x8a\xd4\x82\xaa\x82\xc8\x82\xad\x82\xc8\x82\xc1\x82\xc4\x82\xab\x82\xbd\x81" ""
+				"@ " ""
+				"\x8e\x84\x82\xcd\x90\xaf\x82\xcc\x82\xb2\x82\xc6\x82\xab\x8d\x91\x89\xa4\x82\xc6\x81" ""
+				"@ " ""
+				"\x94\xde\x82\xcc\x8e\xfc\x82\xe8\x82\xc9\x82\xa4\x82\xb8\x82\xdc\x82\xad\x98" ""
+				"f" "\x90\xaf\x82\xc9\x92\xa7\x82\xde\x81" "@ " "\x83" "^" "\x83" ""
+				"C" "\x83" "g" "\x83\x8b\x82\xc6\x8c\xa9\x8f" "o" ""
+				"\x82\xb5\x82\xc6\x81" "@ " "\x83" "C" "\x83\\\x83" "b" "\x83" "v" ""
+				"\x82\xcc\x8c\xbe\x97" "t" "\x82\xf0\x97" "p" ""
+				"\x82\xa2\x82\xc4\x81" "@ " ""
+				"\x8e\x84\x82\xcc\x8f\xbc\x96\xbe\x82\xc9\x89\xce\x82\xf0\x82\xc2\x82\xaf\x82\xe9\x81" ""
+				"@ " "\x93\xe4\x82\xc6\x8d\xf4\x96" "d" ""
+				"\x82\xf0\x82\xc5\x82\xab\x82\xe9\x82\xe0\x82\xcc\x82\xc8\x82\xe7\x8c\xa9\x94" ""
+				"j" "\x82\xe9\x82\xaa\x82\xe6\x82\xa2\x81" "A" "\x82\xc6"
+			},
+			{
+				450, "\x82\xdc\x82\xe9\x82\xc5\x8b" "C" ""
+				"\x8b\xb6\x82\xa2\x82\xcc\x82\xbd\x82\xed\x82\xb2\x82\xc6\x82\xbe\x81" ""
+				"I" "\x8d\x91\x89\xa4\x95\xc3\x89\xba\x82\xc9\x82\xa8\x8e" "d" ""
+				"\x82\xa6\x82\xb5\x82\xc8\x82\xaf\x82\xea\x82\xce\x82\xc8\x82\xe7\x82\xc8\x82\xa2\x82\xb1\x82\xcc\x90" ""
+				"g" "\x82\xe4\x82\xa6\x81" "A" ""
+				"\x8e\xa9\x82\xe7\x82\xb1\x82\xcc\x8c\x8f\x82\xf0\x92\xb2\x82\xd7\x82\xe9\x82\xb1\x82\xc6\x82\xcd\x82\xc5\x82\xab\x82\xc8\x82\xa2\x81" ""
+				"B" "\x82\xbe\x82\xa9\x82\xe7\x83\x89\x83\x89\x83\x93\x83" "h" ""
+				"\x81" "A" "\x82\xa8\x91" "O" ""
+				"\x82\xc9\x82\xb1\x82\xcc\x8c\x8f\x82\xf0\x94" "C" ""
+				"\x82\xb9\x82\xe6\x82\xa4\x81" "B"
+			},
+			{
+				536, "\x82\xb2\x90" "Q" "\x8f\x8a\x8c" "W" "\x82\xcc\x82\xa8\x91" "O" ""
+				"\x82\xcc\x82\xb1\x82\xc6\x82\xbe\x81" "A" ""
+				"\x8e\xd7\x96\x82\x82\xbe\x82\xc4\x82\xb3\x82\xea\x82\xb8\x82\xc9\x93\xae\x82\xab\x82\xdc\x82\xed\x82\xe9\x82\xb1\x82\xc6\x82\xaa\x82\xc5\x82\xab\x82\xe6\x82\xa4\x81" ""
+				"B" "\x8b" "{" "\x93" "a" "\x82\xcc\x82\xb1\x82\xc6\x82\xe0\x81" ""
+				"A" "\x82\xbb\x82\xb1\x82\xc9\x82\xa2\x82\xe9\x90" "l" "\x81" "X" ""
+				"\x82\xcc\x82\xb1\x82\xc6\x82\xe0\x81" "A" ""
+				"\x82\xb5\x82\xab\x82\xbd\x82\xe8\x82\xe0\x90" "S" ""
+				"\x93\xbe\x82\xc4\x82\xa2\x82\xe9\x82\xcd\x82\xb8\x82\xbe\x81" "B"
+			},
+			{
+				622, "\x8d\xdb\x8c\xc0\x82\xc8\x82\xad\x90" "q" ""
+				"\x82\xcb\x82\xdc\x82\xed\x82\xc1\x82\xc4\x81" "A" ""
+				"\x89\xbd\x82\xa9\x89\xf6\x82\xb5\x82\xa2\x82\xb1\x82\xc6\x82\xaa\x82\xa0\x82\xea\x82\xce\x81" ""
+				"A" ""
+				"\x8e\x84\x82\xc9\x95\xf1\x8d\x90\x82\xb7\x82\xe9\x82\xcc\x82\xbe\x81" ""
+				"B" "\x82\xbe\x82\xaa\x90" "T" "\x8f" "d" "\x82\xc9\x82\xc8\x81" ""
+				"B" "\x8b\xb6\x90" "l" ""
+				"\x82\xaa\x95\xc3\x89\xba\x82\xf0\x8b\xba\x94\x97\x82\xb5\x82\xc4\x82\xa2\x82\xe9\x82\xc8\x82\xc7\x82\xc6\x82\xa2\x82\xa4\x89\\\x82\xf0\x8d" ""
+				"L" "\x82\xdf\x82\xc4\x82\xcd\x82\xc8\x82\xe7\x82\xca\x81" "B" ""
+				"\x8b" "}" "\x82\xb0\x81" "I1" ""
+				"\x93\xfa\x82\xb5\x82\xa9\x8e\x9e\x8a\xd4\x82\xcd\x8e" "c" ""
+				"\x82\xb3\x82\xea\x82\xc4\x82\xa2\x82\xc8\x82\xa2\x82\xcc\x82\xbe"
+			},
+			{690, "8" "\x8e\x9e\x94\xbc\x82\xa9" " "},
+		}
+	}, /* a0_vf.hns */
+	{
+		"a1_vf.hns", {
+			{
+				358, "\x95\xc3\x89\xba\xa4\x82\xb2\x8b" "N" ""
+				"\x8f\xb0\x82\xcc\x82\xa8\x8e\x9e\x8a\xd4\x82\xc5\x82\xb2\x82\xb4\x82\xa2\x82\xdc\x82\xb7" ""
+				" "
+			},
+			{
+				388, "\x8d\x91\x89\xa4\x82\xaa\x8b" "N" ""
+				"\x8f\xb0\x82\xc8\x82\xb3\x82\xe9\x82\xc6\x82\xb7\x82\xae\x82\xc9\x81" ""
+				"A" "\x8e\x98\x88\xe3\x92\xb7\x82\xcc\x83" "_" "\x83" "b" "\x83" ""
+				"J" ""
+				"\x83\x93\x82\xaa\x8d\x91\x89\xa4\x82\xcc\x91\xcc\x92\xb2\x82\xf0\x82\xa8\x90" ""
+				"q" "\x82\xcb\x82\xb5\x82\xdc\x82\xb7" " "
+			},
+			{
+				440, "\x95\xc3\x89\xba\x82\xc9\x82\xa8\x82\xa9\x82\xea\x82\xdc\x82\xb5\x82\xc4\x82\xcd\x81" ""
+				"A" "\x82\xe6\x82\xad\x82\xa8\x82\xe2\x82\xb7\x82\xdd\x82\xc9\x82\xc8\x82\xe7\x82\xea\x82"
+				"\xdc\x82\xb5\x82\xbd\x82\xa9\x82\xc5\x82\xb5\x82\xe5\x82\xa4\x82\xa9\x81"  "H" ""
+				"\x8f\x8b\x82\xad\x82\xcd\x82\xb2\x82\xb4\x82\xa2\x82\xdc\x82\xb9\x82\xf1\x82\xc5\x82\xb5\x82\xbd\x82\xa9\x81" ""
+				"H" "\x83" "}" "\x83" "b" "\x83" "T" "\x81" "[" "\x83" "W" ""
+				"\x82\xf0\x82\xa8\x8b\x81\x82\xdf\x82\xc5\x82\xb5\x82\xe5\x82\xa4\x82\xa9\x81" ""
+				"H"
+			},
+			{
+				500, "\x82\xe0\x82\xa4\x82\xe6\x82\xa2\x81" "A" "\x83" "_" "\x83" "b" ""
+				"\x83" "J" "\x83\x93"
+			},
+			{
+				510, "\x8d\x91\x89\xa4\x95\xc3\x89\xba\x82\xc9\x82\xa8\x82\xa9\x82\xea\x82\xdc\x82\xb5\x82\xc4\x82\xcd\x81" ""
+				"A" "\x82\xb1\x82\xcc" "2" "\x83\x96\x8c\x8e\x8a\xd4\x81" "A" ""
+				"\x89\xbd\x88\xea\x82\xc2\x8b\xef\x8d\x87\x82\xcc\x88\xab\x82\xa2\x82\xc6\x82\xb1\x82\xeb\x82\xcd\x82\xb2\x82\xb4\x82\xa2\x82\xdc\x82\xb9\x82\xf1" ""
+				" "
+			},
+			{550, ""},
+			{
+				580, "\x83" "{" "\x83\x93\x83" "^" ""
+				"\x83\x93\x82\xaa\x8d\x91\x89\xa4\x82\xcc\x90\xf4\x96\xca\x82\xf0\x8e\xe8\x93" ""
+				"`" "\x82\xc1\x82\xc4\x82\xa2\x82\xe9\x82\xc6\x81" "A" ""
+				"\x96\x88\x92\xa9\x82\xcc\x8f" "K" "\x8a\xb5\x92\xca\x82\xe8\x81" ""
+				"A" "\x89\xa4\x89\xc6\x82\xcc\x90" "l" "\x81" "X" ""
+				"\x82\xaa\x93\xfc\x82\xc1\x82\xc4\x82\xab\x82\xdc\x82\xb7\x81" "B" ""
+				"\x89\xa4\x92\xed\x93" "a" "\x89\xba\x81" "A" "\x8d" "c" ""
+				"\x91\xbe\x8e" "q" "\x93" "a" "\x89\xba\x81" "A" "\x83\x81\x81" "[" ""
+				"\x83" "k" ""
+				"\x8c\xf6\x8e\xdd\x82\xaa\x8d\x91\x89\xa4\x82\xcc\x82\xb2\x8b" "N" ""
+				"\x8f\xb0\x82\xf0\x94" "q" ""
+				"\x8c\xa9\x82\xb5\x82\xc9\x82\xe2\x82\xc1\x82\xc4\x82\xab\x82\xbd\x82\xcc\x82\xc5\x82\xb7"
+			},
+			{713, ""},
+			{
+				750, "\x91\xa7\x8e" "q" "\x82\xe6\x81" "A" ""
+				"\x8d\xa1\x92\xa9\x82\xcd\x89\xbd\x8e\x9e\x82\xc9\x98" "T" ""
+				"\x8e\xeb\x82\xe8\x82\xc9\x8f" "o" ""
+				"\x82\xa9\x82\xaf\x82\xbd\x82\xcc\x82\xa9\x82\xc8\x81" "H "
+			},
+			{795, ""},
+		}
+	}, /* a1_vf.hns */
+	{
+		"a2_vf.hns", {
+			{
+				60, "\x82\xbe\x82\xdf\x82\xc5\x82\xb7\x82\xe6\x81" "A" "\x8a" "t" ""
+				"\x89\xba\x81" "B" "\x8a" "t" ""
+				"\x89\xba\x82\xcc\x82\xe6\x82\xa4\x82\xc8\x8d\x93\x82\xa2\x82\xe2\x82\xe8\x95\xfb\x82\xc5\x82\xcd\x81" ""
+				"A" "\x89\xa4\x8d\x91\x82\xc9\x95\xbd\x98" "a" ""
+				"\x82\xcd\x96\xdf\x82\xe8\x82\xdc\x82\xb9\x82\xf1"
+			},
+			{
+				74, "\x90" "S" "\x94" "z" "\x82\xb7\x82\xe9\x82\xc8\x81" "B" ""
+				"\x95\xc3\x89\xba\x82\xcd\x83" "f" "\x83\x85\x83\x89\x83" "X" ""
+				"\x93" "a" "\x82\xf0\x83" "h" "\x83" "D" "\x81" "E" "\x83\x89\x81" ""
+				"E" "\x83" "t" "\x83" "H" "\x83\x8b\x83" "X" ""
+				"\x8c\xf6\x8e\xdd\x82\xcc\x82\xc6\x82\xb1\x82\xeb\x82\xc9\x94" "h" ""
+				"\x8c\xad\x82\xb7\x82\xe9\x82\xc6\x82\xa8\x82\xc1\x82\xb5\x82\xe1\x82\xc1\x82\xbd"
+			},
+			{
+				130, "\x8c\xf6\x8e\xdd\x82\xf0\x90" "S" ""
+				"\x95\xcf\x82\xed\x82\xe8\x82\xb3\x82\xb9\x82\xe9\x82\xc8\x82\xc7\x81" ""
+				"A" ""
+				"\x90\xe2\x91\xce\x82\xc9\x82\xc5\x82\xab\x82\xc1\x82\xb1\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x82\xe6"
+			},
+			{160, ""},
+			{
+				200, "\x8d\x91\x89\xa4\x82\xcc\x8b" "N" "\x8f\xb0\x82\xcc\x8b" "V" ""
+				"\x82\xcd\x81" "A" "\x9f\x94\x97\x81\x82\xc5\x8f" "I" ""
+				"\x82\xed\x82\xe8\x82\xdc\x82\xb5\x82\xbd\x81" "B" ""
+				"\x92\xa9\x82\xcc\x8d\xc5\x8f\x89\x82\xcc\x88\xf8\x8c\xa9\x82\xd6\x82\xcc\x8f" ""
+				"o" "\x90\xc8\x82\xf0\x94" "F" ""
+				"\x82\xdf\x82\xe7\x82\xea\x82\xbd\x92\xec\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xcc\x96\xda\x82\xcc\x91" "O" "\x82\xc5\x81" ""
+				"A" "\x97\x9d\x94\xaf\x8e" "t" ""
+				"\x82\xaa\x8d\x91\x89\xa4\x82\xcc\x94\xaf\x82\xf0\x90\xae\x82\xa6\x82\xc4\x82\xa9\x82\xe7\xa4\x92" ""
+				"Z" ""
+				"\x82\xa2\x82\xa9\x82\xc2\x82\xe7\x82\xf0\x94\xed\x82\xb9\x82\xdc\x82\xb7"
+			},
+			{307, ""},
+			{
+				360, "\x82\xbb\x82\xea\x82\xa9\x82\xe7\x81" "A" ""
+				"\x8d\x91\x89\xa4\x82\xaa\x92\x85\x88\xdf\x82\xcc\x8b" "V" ""
+				"\x82\xcc\x82\xbd\x82\xdf\x82\xc9\x83" "T" ""
+				"\x83\x8d\x83\x93\x82\xd6\x82\xc6\x88\xda\x93\xae\x82\xc8\x82\xb3\x82\xe9\x82\xe6\x82\xa4\x82\xc9\x82\xc6\x81" ""
+				"A" "\x93\xb9\x82\xaa\x8a" "J" ""
+				"\x82\xaf\x82\xe7\x82\xea\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{406, ""},
+			{
+				440, "\x8d\x91\x89\xa4\x82\xaa\x8c" "y" "\x90" "H" ""
+				"\x82\xf0\x82\xa8\x82\xc6\x82\xe8\x82\xc9\x82\xc8\x82\xe9\x8a\xd4\x82\xc9\x81" ""
+				"A" "\x8e" "Q" ""
+				"\x97\xf1\x82\xf0\x8b\x96\x82\xb3\x82\xea\x82\xbd\x92\xec\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xaa\x89\xc1\x82\xed\x82\xe8\x82\xdc\x82\xb7\x81" ""
+				"B"
+			},
+			{
+				520, "\x82\xdd\x82\xc8\x81" "A" ""
+				"\x8d\x91\x89\xa4\x82\xc9\x82\xa8\x96\xda\x82\xf0\x82\xa8\x97\xaf\x82\xdf\x82\xa2\x82\xbd\x82\xbe\x82\xb1\x82\xa4\x82\xc6\x8a\xe8\x82\xc1\x82\xc4\x8d\x91\x89\xa4\x82\xcc\x8c\x92\x8d" ""
+				"N" "\x8f\xf3\x91\xd4\x82\xf0\x8e" "f" ""
+				"\x82\xc1\x82\xbd\x82\xe8\x81" "A" ""
+				"\x82\xbb\x82\xcc\x93\xfa\x82\xcc\x89\\\x82\xc9\x8e\xa8\x82\xf0\x8c" ""
+				"X" "\x82\xaf\x82\xbd\x82\xe8\xa4\x89\\\x82\xf0\x8d" "L" ""
+				"\x82\xdf\x82\xbd\x82\xe8\x82\xb5\x82\xdc\x82\xb7\x81" "B"
+			},
+			{
+				600, "\x8f" "O" ""
+				"\x96\xda\x82\xc9\x82\xb3\x82\xe7\x82\xb3\x82\xea\x82\xc4\x82\xa2\x82\xe9\x8d\x91\x89\xa4\x82\xcd\x81" ""
+				"A" ""
+				"\x82\xa2\x82\xc2\x82\xe0\x82\xc8\x82\xaa\x82\xe7\x82\xcc\x96\xb1\x82\xdf\x82\xf0\x89\xca\x82\xbd\x82\xb5\x82\xdc\x82\xb5\x82\xbd\x81" ""
+				"B" "\x95" "E" "\x82\xf0\x82\xa0\x82\xbd\x82\xe7\x82\xb9\x81" "A" ""
+				"\x90\xf4\x96\xca\x82\xf0\x82\xb3\x82\xb9\x81" "A" ""
+				"\x95\x9e\x82\xf0\x92\x85\x82\xb9\x82\xc4\x82\xe0\x82\xe7\x82\xc1\x82\xbd\x82\xcc\x82\xc5\x82\xb7"
+			},
+			{679, ""},
+			{
+				815, "\x90" "g" ""
+				"\x82\xb6\x82\xbd\x82\xad\x82\xf0\x90\xae\x82\xa6\x82\xbd\x8d\x91\x89\xa4\x82\xcd\x81" ""
+				"A" "\x90" "Q" ""
+				"\x8f\x8a\x82\xc9\x96\xdf\x82\xc1\x82\xc4\x92\xa9\x82\xcc\x92" "Z" ""
+				"\x82\xa2\x82\xa8\x8b" "F" ""
+				"\x82\xe8\x82\xf0\x8f\xa5\x82\xa6\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{860, ""},
+			{
+				948, "\x82\xa8\x8b" "F" "\x82\xe8\x82\xf0\x8f\xa5\x82\xa6\x8f" "I" ""
+				"\x82\xed\x82\xe9\x82\xc6\x81" "A" ""
+				"\x8d\x91\x89\xa4\x82\xcd\x91\xe5\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xf0\x8f" "]" "\x82\xa6\x82\xc4\x81" "A" ""
+				"\x8d\x91\x8e\x96\x82\xaa\x98" "_" ""
+				"\x82\xb6\x82\xe7\x82\xea\x82\xe9\x89\xef\x8b" "c" ""
+				"\x82\xcc\x8a\xd4\x82\xc9\x88\xda\x82\xe8\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{1027, ""},
+		}
+	}, /* a2_vf.hns */
+	{
+		"a3_vf.hns", {
+			{
+				30, "\x92\x85\x88\xdf\x82\xf0\x8f" "I" ""
+				"\x82\xa6\x82\xbd\x8d\x91\x89\xa4\x82\xcd\x89\xef\x8b" "c" ""
+				"\x82\xcc\x8a\xd4\x82\xc9\x88\xda\x82\xe8\x82\xdc\x82\xb5\x82\xbd\x81" ""
+				"B" "\x91\xe5\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xc9\x88\xcd\x82\xdc\x82\xea\x82\xc4\x81" "A" ""
+				"\x8d\x91\x8e\x96\x82\xf0\x82\xc2\x82\xa9\x82\xb3\x82\xc7\x82\xe8\x82\xdc\x82\xb7\x81" ""
+				"B" "\x94\xe9\x96\xa7\x82\xf0\x8e\xe7\x82\xe9\x82\xbd\x82\xdf\x81" ""
+				"A" ""
+				"\x95\x94\x89\xae\x82\xcc\x94\xe0\x82\xcd\x95\xc2\x82\xdc\x82\xc1\x82\xc4\x82\xa2\x82\xdc\x82\xb7\x81" ""
+				"B"
+			},
+			{
+				110, "\x82\xa2\x82\xbf\x82\xce\x82\xf1\x82\xcc\x8f" "d" "\x90" "b" ""
+				"\x82\xc5\x82\xa0\x82\xe9\x83\x8b\x81" "[" "\x83\x94\x83" "H" ""
+				"\x83\x8f\x8c\xf2\x8e\xdd\x82\xaa\x82\xbb\x82\xcc\x93\xfa\x82\xcc\x8b" ""
+				"c" ""
+				"\x8e\x96\x97\\\x92\xe8\x82\xf0\x94\xad\x95\\\x82\xb5\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{211, ""},
+			{
+				280, "\x82\xdd\x82\xc8\x82\xcc\x8e\xd2\x81" "A" ""
+				"\x92\x85\x90\xc8\x82\xf0"
+			},
+			{
+				290, "\x8d\x91\x89\xa4\x82\xcd\x82\xb3\x82\xdc\x82\xb4\x82\xdc\x82\xc8\x88\xd3"
+				"\x8c\xa9\x82\xc9\x8e\xa8\x82\xf0\x8c"
+				"X" "\x82\xaf\x82\xc4\x82\xa9\x82\xe7\x8c\x88\x92\xe8\x82\xf0\x8d" ""
+				"s" "\x82\xa2\x82\xdc\x82\xb5\x82\xbd\x81" "B" ""
+				"\x82\xc5\x82\xe0\x81" "A" ""
+				"\x91\xe5\x90\xa8\x82\xcc\x88\xd3\x8c\xa9\x82\xc9\x93\xaf\x92\xb2\x82\xb7\x82\xe9\x82\xb1\x82\xc6\x82\xaa\x91\xbd\x82\xa2\x82\xcc\x82\xc5\x82\xb7"
+			},
+			{
+				360, "\x82\xbb\x82\xcc\x8a\xd4\x81" "A" "\x92\xec\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xcd\x8d\x91\x89\xa4\x82\xcc\x82\xa8\x8f" "o" ""
+				"\x82\xdc\x82\xb5\x82\xf0\x8d" "L" ""
+				"\x8a\xd4\x82\xc5\x91\xd2\x82\xc1\x82\xc4\x82\xa2\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{411, ""},
+			{
+				440, "\x8a" "F" "\x97" "l" "\x81" "A" ""
+				"\x8d\x91\x89\xa4\x95\xc3\x89\xba\x82\xcc\x82\xa8\x8f" "o" ""
+				"\x82\xdc\x82\xb5\x82\xc5\x82\xb7"
+			},
+			{450, ""},
+			{
+				550, "\x90\xb3\x8c\xdf\x82\xc9\x82\xc8\x82\xe8\x82\xdc\x82\xb5\x82\xbd\x81" ""
+				"B" "\x8d\x91\x89\xa4\x82\xcd\x83" "~" "\x83" "T" "\x82\xc9\x8f" ""
+				"o" "\x90\xc8\x82\xc8\x82\xb3\x82\xa2\x82\xdc\x82\xb7\x81" "B" ""
+				"\x8b" "{" "\x92\xec\x91" "S" "\x91\xcc\x82\xaa\x81" "A" ""
+				"\x97\xf1\x82\xc9\x82\xc8\x82\xc1\x82\xc4\x82\xbb\x82\xcc\x8c\xe3\x82\xc9\x8f" ""
+				"]" "\x82\xa2\x82\xdc\x82\xb7\x81" "B" ""
+				"\x8d\x91\x89\xa4\x95\xc3\x89\xba\x82\xcd\x89\xa4\x8e" "q" ""
+				"\x82\xe2\x89\xa4\x8f\x97\x82\xbd\x82\xbf\x82\xc9\x94\xba\x82\xed\x82\xea\x82\xc4\x89\xa4\x8e\xba\x97\xe7\x94" ""
+				"q" "\x93\xb0\x82\xc9\x88\xda\x82\xe9\x93" "r" ""
+				"\x92\x86\x82\xc5\x81" "A" ""
+				"\x91\xe5\x8b\x8f\x8e\xba\x82\xf0\x89\xa1\x90\xd8\x82\xe8\x82\xdc\x82\xb7" ""
+				" "
+			},
+			{687, ""},
+			{
+				728, "\x95\xc3\x89\xba\x81" "A" ""
+				"\x82\xc7\x82\xa4\x82\xbc\x82\xb1\x82\xcc\x92" "Q" ""
+				"\x8a\xe8\x8f\x91\x82\xf0\x82\xb2\x97\x97\x82\xad\x82\xbe\x82\xb3\x82\xa2\x81" "B"
+				"\x89\x99\x82\xc9\x91\xe3\x82\xed\x82\xc1\x82\xc4\x95\xc3\x89\xba\x82\xc9\x82\xa8"
+				"\x8a\xe8\x82\xa2\x90\\\x82\xb5\x8f\xe3\x82\xb0\x82\xdc\x82\xb7\x81" "B"
+				"\x89\x99\x82\xcd\x8b\xb0\x82\xeb\x82\xb5\x82\xa2\x8d\xd9\x94\xbb\x82\xcc\x8b" "]"
+				"\x90\xb5\x82\xc9\x82\xc8\x82\xc1\x82\xbd\x82\xcc\x82\xc5\x82\xb7"
+			},
+			{
+				805, "\x82\xbb\x82\xa4\x82\xa9\x81" "A" "\x82\xbb\x82\xa4\x82\xa9\x81" ""
+				"A" "\x92\xb2\x82\xd7\x82\xb3\x82\xb9\x82\xe6\x82\xa4" " "
+			},
+			{840, ""},
+			{
+				1060, "\x8d\x91\x89\xa4\x82\xaa\x89\xa4\x89\xc6\x82\xcc\x90\xea\x97" "p" ""
+				"\x90\xc8\x82\xc9\x92\x85\x8d\xc0\x82\xb7\x82\xe9\x82\xc6\x81" "A" ""
+				"\x89\xa4\x8e" "q" ""
+				"\x82\xc8\x82\xe7\x82\xd1\x82\xc9\x89\xa4\x8f\x97\x82\xbd\x82\xbf\x82\xaa\x81" ""
+				"A" "\x90" "g" ""
+				"\x95\xaa\x82\xcc\x8f\x87\x82\xc9\x82\xbb\x82\xcc\x8c\xe3\x82\xeb\x82\xc9\x95\xc0\x82\xd1\x82\xdc\x82\xb7\x81" ""
+				"B" ""
+				"\x8d\x91\x89\xa4\x82\xcd\x8e\x84\x8c\xea\x82\xf0\x8b\xd6\x82\xb6\x82\xe9\x82\xc6\x81" ""
+				"A" ""
+				"\x96\xd9\x93\x98\x82\xf0\x91\xa3\x82\xb5\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{1220, ""},
+		}
+	}, /* a3_vf.hns */
+	{
+		"a4_vf.hns", {
+			{
+				90, "\x83" "~" "\x83" "T" "\x82\xcc\x8a\xd4\x81" "A" ""
+				"\x89\xa4\x89\xc6\x82\xcc\x90" "~" "\x96" "[" ""
+				"\x82\xc5\x82\xcd\x90\xea\x94" "C" "\x82\xcc\x96\xf0\x90" "l" ""
+				"\x81" "A" "\x83\x8d\x81" "[" "\x83" "X" "\x83" "g" "\x8c" "W" ""
+				"\x81" "A" "\x83" "p" "\x83\x93\x8f\xc4\x82\xab\x90" "E" "\x90" "l" ""
+				"\x82\xe2\x8f\x95\x8e\xe8\x82\xbd\x82\xbf\x82\xaa\x90\xb3\x8e" "`" ""
+				"\x82\xcc\x8f\x80\x94\xf5\x82\xc9\x91\xe5\x82\xed\x82\xe7\x82\xed\x82\xc5\x82\xb7\x81" ""
+				"B"
+			},
+			{
+				200, "\x8c\xea\x82\xe8\x91\x90\x82\xc9\x82\xc8\x82\xe9\x82\xd9\x82\xc7\x82\xcc\x90" ""
+				"H" "\x97" "~" ""
+				"\x82\xf0\x82\xe0\x82\xc2\x8d\x91\x89\xa4\x82\xaa\x8f\xa2\x82\xb5\x8f\xe3\x82"
+				"\xaa\x82\xe7\x82\xc8\x82\xa9\x82\xc1\x82\xbd\x97\xbf\x97\x9d\x82\xcd\x81" "A"
+				"\x91\xbc\x82\xcc\x8e\xd2\x82\xcc\x8c\xfb\x82\xc9\x93\xfc\x82\xe8\x81" ""
+				"A" "\x88\xea\x94\xca\x90" "l" ""
+				"\x82\xe0\x89\xa4\x89\xc6\x82\xcc\x90" "~" "\x96" "[" ""
+				"\x82\xcc\x8e" "c" ""
+				"\x82\xe8\x95\xa8\x82\xf0\x94\x83\x82\xa4\x82\xb1\x82\xc6\x82\xf0\x92" ""
+				"p" ""
+				"\x82\xc6\x82\xb5\x82\xdc\x82\xb9\x82\xf1\x82\xc5\x82\xb5\x82\xbd"
+			},
+			{300, ""},
+			{
+				320, "\x8c\xf6\x8a" "J" "\x82\xcc\x90\xb3\x8e" "`" "\x82\xcd\x91" "s" ""
+				"\x8a\xcf\x82\xc5\x81" "A" "\x92\xec\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xcd\x82\xb1\x82\xcc\x90\xc8\x82\xc9\x82\xc2\x82\xe7\x82\xc8\x82\xeb\x82\xa4\x82\xc6\x8b" ""
+				"}" "\x82\xae\x82\xcc\x82\xc5\x82\xb5\x82\xbd"
+			},
+			{
+				366, "\x8a" "F" "\x97" "l" "\x81" "A" ""
+				"\x8d\x91\x89\xa4\x95\xc3\x89\xba\x82\xcc\x82\xa8\x8f\xa2\x82\xb5\x8f\xe3\x82\xaa\x82\xe8\x82\xc9\x82\xc8\x82\xe9\x93\xf7\x97\xbf\x97\x9d\x82\xc5\x82\xb7"
+			},
+			{393, ""},
+			{
+				610, "\x8d\x91\x89\xa4\x82\xc6\x93\xaf\x82\xb6\x83" "e" "\x81" "[" ""
+				"\x83" "u" ""
+				"\x83\x8b\x82\xc9\x82\xc2\x82\xad\x82\xb1\x82\xc6\x82\xcc\x82\xc5\x82\xab\x82\xe9\x82\xcc\x82\xcd\x89\xa4\x89\xc6\x82\xcc\x90" ""
+				"l" "\x81" "X" "\x82\xbe\x82\xaf\x82\xc5\x81" "A" ""
+				"\x8d\x91\x89\xa4\x82\xcc\x96\xca\x91" "O" ""
+				"\x82\xc9\x8d\xc0\x82\xe9\x82\xb1\x82\xc6\x82\xcc\x82\xc5\x82\xab\x82\xe9\x82\xcc\x82\xcd\x8c\xf6\x8e\xdd\x95" ""
+				"v" "\x90" "l" "\x82\xbe\x82\xaf\x82\xc5\x82\xb5\x82\xbd" " "
+			},
+			{685, ""},
+			{
+				705, "\x91\xa7\x8e" "q" "\x82\xe6\x81" "A" "\x94" "n" ""
+				"\x8f\xe3\x8b\xa3\x8b" "Z" ""
+				"\x91\xe5\x89\xef\x82\xcc\x8f\x80\x94\xf5\x82\xcd\x90" "i" ""
+				"\x82\xdf\x82\xc4\x82\xa8\x82\xe9\x82\xa9\x81" "H"
+			},
+			{747, ""},
+			{
+				760, "\x82\xb1\x82\xcc\x90\xb3\x8e" "`" "\x82\xc5\x82\xcd" "3" ""
+				"\x8e\xed\x97\xde\x82\xcc\x83" "R" "\x81" "[" "\x83" "X" ""
+				"\x97\xbf\x97\x9d\x82\xaa\x8f" "o" ""
+				"\x82\xb3\x82\xea\x82\xdc\x82\xb7\x82\xaa\x81" "A" ""
+				"\x82\xa2\x82\xb8\x82\xea\x82\xcc\x83" "R" "\x81" "[" "\x83" "X" ""
+				"\x82\xe0\x83" "X" "\x81" "[" "\x83" "v" "\x82\xc9\x8e" "n" ""
+				"\x82\xdc\x82\xe8\x81" "A" "\x91" "O" "\x8d\xd8\x81" "A" ""
+				"\x93\xf7\x97\xbf\x97\x9d\x81" "A" "\x83" "f" "\x83" "U" "\x81" "[" ""
+				"\x83" "g" "\x82\xd6\x82\xc6" "6" ""
+				"\x8e\xed\x97\xde\x82\xcc\x97\xbf\x97\x9d\x82\xaa\x8f" "o" ""
+				"\x82\xdc\x82\xb7"
+			},
+			{847, ""},
+		}
+	}, /* a4_vf.hns */
+	{
+		"a5_vf.hns", {
+			{
+				13, "\x90\xb3\x8e" "`" "\x82\xaa\x8f" "I" ""
+				"\x82\xed\x82\xe9\x82\xc6\x81" "A" "\x89\xca\x95\xa8\x82\xaa\x8f" ""
+				"o" "\x82\xdc\x82\xb7"
+			},
+			{36, ""},
+			{
+				90, "\x8d\x91\x89\xa4\x82\xcd\x82\xbb\x82\xea\x82\xa9\x82\xe7\x82\xcc\x90\x94"
+				"\x8e\x9e\x8a\xd4\x82\xf0\x8d\x91\x8e\x96\x82\xc9\x82\xa0\x82\xc4\x82\xdc"
+				"\x82\xb5\x82\xbd\x81" "B" "\x82\xb1\x82\xcc\x8e\x9e\x8a\xfa\x81" "A" ""
+				"\x8d\x91\x89\xa4\x82\xcd\x83" "}" "\x83\x93\x83" "g" "\x83" "m" ""
+				"\x83\x93\x8c\xf2\x8e\xdd\x95" "v" "\x90" "l" ""
+				"\x82\xcc\x8b\x8f\x8e\xba\x82\xc5\x81" "A" ""
+				"\x8e\x9e\x82\xc9\x82\xcd\x91\xe5\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xf0\x8c\xf0\x82\xa6\x82\xc4\x8e\xb7\x96\xb1\x82\xb7\x82\xe9\x82\xb1\x82\xc6\x82\xf0\x8d" ""
+				"D" "\x82\xdd\x82\xdc\x82\xb5\x82\xbd\x81" "B"
+			},
+			{
+				200, "\x8d\x91\x89\xa4\x82\xcd\x93\xe0\x89\x8f\x8a\xd6\x8c" "W" ""
+				"\x82\xc9\x82\xa0\x82\xe9\x8c\xf2\x8e\xdd\x95" "v" "\x90" "l" ""
+				"\x82\xcc\x8b\x8f\x8e\xba\x82\xc9\x81" "A" ""
+				"\x8d\x91\x8e\x96\x82\xcc\x90\x8b\x8d" "s" "\x82\xc9\x95" "K" ""
+				"\x97" "v" ""
+				"\x82\xc8\x95\xbd\x88\xc0\x82\xc6\x90\xc3\xe6\x8d\x82\xb3\x82\xf0\x8c\xa9\x8f" ""
+				"o" "\x82\xb5\x82\xc4\x82\xa2\x82\xbd\x82\xcc\x82\xc5\x82\xb7"
+			},
+			{296, ""},
+			{
+				310, "\x8d\x91\x89\xa4\x82\xcd\x81" "A" "\x8f\x91\x97\xde\x82\xf0" "3" ""
+				"\x8e\x9e\x8a\xd4\x82\xc9\x82\xed\x82\xbd\x82\xc1\x82\xc4\x8f\xda\x8d\xd7\x82\xc9\x92\xb2\x82\xd7\x82\xdc\x82\xb5\x82\xbd\x81" ""
+				"D" "\x81" "D" "\x81" "D"
+			},
+			{345, ""},
+			{
+				360, "\x92\xec\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xc9\x82\xc6\x82\xc1\x82\xc4\x82\xa2\x82\xdc\x82\xcd\x81" ""
+				"A" "\x89" "e" ""
+				"\x82\xcc\x82\xb2\x82\xc6\x82\xad\x8d\x91\x89\xa4\x82\xc9\x95" "t" ""
+				"\x82\xab\x8f" "]" ""
+				"\x82\xed\x82\xc8\x82\xad\x82\xc4\x82\xe6\x82\xa2\x81" "A" ""
+				"\x88\xea\x93\xfa\x82\xcc\x93\xe0\x82\xc5\x82\xe0\x82\xdc\x82\xea\x82\xc8\x82\xd0\x82\xc6\x82\xc6\x82\xab\x82\xc5\x82\xb5\x82\xbd\x81" ""
+				"B" "\x83" "J" "\x81" "[" "\x83" "h" "\x97" "V" ""
+				"\x82\xd1\x82\xc9\x94" "M" ""
+				"\x82\xf0\x82\xa0\x82\xb0\x82\xe9\x8e\xd2\x82\xe0\x82\xa0\x82\xe8\x82\xdc\x82\xb5\x82\xbd\x81" ""
+				"B"
+			},
+			{
+				460, "\x83" "J" "\x81" "[" "\x83" "h" "\x97" "V" "\x82\xd1\x82\xc5\x8a" ""
+				"m" ""
+				"\x82\xa9\x82\xc8\x8e\xfb\x93\xfc\x82\xf0\x93\xbe\x82\xe9\x82\xb1\x82\xc6\x82\xe0\x82\xc5\x82\xab\x82\xbd\x82\xcc\x82\xc5\x81" ""
+				"A" ""
+				"\x82\xa2\x82\xa9\x82\xb3\x82\xdc\x8f\x9f\x95\x89\x82\xf0\x82\xb5\x82\xc4\x89\xa4\x82\xcc\x95" ""
+				"s" ""
+				"\x8b\xbb\x82\xf0\x94\x83\x82\xa4\x82\xb1\x82\xc6\x82\xf0\x82\xbd\x82\xdf\x82\xe7\x82\xed\x82\xc8\x82\xa2\x8e\xd2\x82\xe0\x82\xa0\x82\xc1\x82\xbd\x82\xcc\x82\xc5\x82\xb7"
+			},
+			{560, ""},
+			{
+				665, "\x83" "r" "\x83\x8a\x83\x84\x81" "[" "\x83" "h" "\x82\xe2\x83" "g" ""
+				"\x83\x8b\x83" "}" "\x83" "_" "\x83\x80\x81" "i" ""
+				"\x8b\x85\x82\xb1\x82\xeb\x82\xaa\x82\xb5\x81" "j" ""
+				"\x82\xc8\x82\xc7\x82\xcc\x8b\x85\x8b" "Z" ""
+				"\x82\xc9\x91\xc5\x82\xbf\x8d\x9e\x82\xde\x8e\xd2\x82\xe0\x82\xa0\x82\xe8\x82\xdc\x82\xb5\x82\xbd\x82\xaa\x81" ""
+				"A" "\x83\x94\x83" "F" "\x83\x8b\x83" "T" "\x83" "C" ""
+				"\x83\x86\x82\xc5\x8d\xc5\x82\xe0\x8f" "d" ""
+				"\x82\xf1\x82\xb6\x82\xe7\x82\xea\x82\xbd\x8a" "y" ""
+				"\x82\xb5\x82\xdd\x82\xcc\x88\xea\x82\xc2\x82\xcd\x81" "A" "\x83" ""
+				"E" "\x83" "B" "\x83" "b" "\x83" "g" "\x82\xc9\x95" "x" ""
+				"\x82\xf1\x82\xbe\x89\xef\x98" "b" "\x82\xc5\x82\xb5\x82\xbd"
+			},
+			{766, ""},
+		}
+	}, /* a5_vf.hns */
+	{
+		"a6_vf.hns", {
+			{
+				45, "\x97" "[" "\x8d\x8f\x82\xcc" "5" "\x8e\x9e\x8d\xa0\x81" "A" ""
+				"\x8e\xb7\x96\xb1\x82\xf0\x8f" "I" ""
+				"\x82\xa6\x82\xbd\x8d\x91\x89\xa4\x82\xcd\x81" "A" "\x89\xa4\x8b" ""
+				"{" ""
+				"\x82\xcc\x8c\x9a\x95\xa8\x82\xf0\x82\xcc\x82\xbc\x82\xab\x82\xc8\x82\xaa\x82\xe7\x92\xeb\x89\x80\x82\xf0\x8e" ""
+				"U" "\x95\xe0\x82\xb5\x82\xdc\x82\xb7"
+			},
+			{
+				90, "\x81" "D" "\x81" "D" "\x81" "D" ""
+				"\x82\xbb\x82\xb5\x82\xc4\x92\xec\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xaa\x91\xd2\x82\xbf\x8e\xf3\x82\xaf\x82\xc4\x82\xa2\x82\xe9\x91\xe5\x97\x9d\x90\xce\x82\xcc\x92\x86\x92\xeb\x82\xc9\x8e\x8a\x82\xe8\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{160, ""},
+			{
+				170, "\x8d\x91\x89\xa4\x82\xcc\x82\xa8\x8b\x9f\x82\xaa\x82\xc5\x82\xab\x82\xe9\x82\xcc\x82\xcd\x81" ""
+				"A" "\x82\xbb\x82\xcc\x93\xc1\x8c\xa0\x82\xf0\x94" "F" ""
+				"\x82\xdf\x82\xe7\x82\xea\x82\xbd\x8e\xd2\x82\xbe\x82\xaf\x82\xc5\x82\xb5\x82\xbd"
+			},
+			{208, ""},
+			{
+				295, "\x88\xea\x8d" "s" "\x82\xcd\x89\xba\x82\xcc\x83" "M" ""
+				"\x83\x83\x83\x8b\x83\x8a\x81" "[" ""
+				"\x82\xf0\x89\xa1\x90\xd8\x82\xc1\x82\xc4\x83" "e" "\x83\x89\x83" ""
+				"X" "\x82\xd6\x81" "A" ""
+				"\x82\xbb\x82\xea\x82\xa9\x82\xe7\x90\x85\x92\xeb\x89\x80\x82\xd6\x82\xc6\x88\xda\x93\xae\x82\xb5\x82\xdc\x82\xb5\x82\xbd\x81" ""
+				"B" "\x8d\x91\x89\xa4\x82\xcd\x82\xbb\x82\xb1\x82\xa9\x82\xe7\x81" ""
+				"A" "\x8b" "{" "\x93" "a" ""
+				"\x82\xcc\x90\xb3\x96\xca\x82\xf0\x82\xed\x82\xb8\x82\xa9\x82\xc8\x8e\x9e\x8a\xd4\x92\xad\x82\xdf\x82\xc4\x82\xb7\x82\xb2\x82\xb7\x82\xcc\x82\xaa\x82\xa8\x8d" ""
+				"D" "\x82\xab\x82\xc5\x82\xb5\x82\xbd\x81" "B"
+			},
+			{
+				430, "\x83" "I" "\x83\x89\x83\x93\x83" "W" "\x83\x85\x83\x8a\x81" "[" ""
+				"\x82\xa9\x82\xe7\x83" "R" "\x83\x8d\x83" "i" "\x81" "[" "\x83" "h" ""
+				"\x82\xdc\x82\xc5\x81" "A" "\x8d\x91\x89\xa4\x82\xcd\x90" "i" ""
+				"\x8d" "s" ""
+				"\x92\x86\x82\xcc\x82\xb3\x82\xdc\x82\xb4\x82\xdc\x82\xc8\x8d" "H" ""
+				"\x8e\x96\x82\xcc\x90" "i" "\x82\xdd\x8b\xef\x8d\x87\x82\xf0\x94" ""
+				"O" ""
+				"\x93\xfc\x82\xe8\x82\xc9\x8c\xa9\x82\xc4\x82\xdc\x82\xed\x82\xe8\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{492, ""},
+			{
+				945, "\x82\xb1\x82\xcc\x8e" "U" "\x8d\xf4\x82\xcd\x81" "A" ""
+				"\x8f\xac\x83" "x" "\x83" "l" "\x83" "c" "\x83" "B" "\x83" "A" ""
+				"\x82\xc5\x8f" "I" "\x82\xed\x82\xe8\x82\xdc\x82\xb5\x82\xbd\x81" ""
+				"B" "\x8d\x91\x89\xa4\x82\xcd\x83" "x" "\x83" "l" "\x83" "c" "\x83" ""
+				"B" "\x83" "A" "\x82\xa9\x82\xe7\x83" "S" "\x83\x93\x83" "h" ""
+				"\x83\x89\x82\xcc\x91" "D" ""
+				"\x93\xaa\x82\xf0\x8c\xc4\x82\xd1\x8a\xf1\x82\xb9\x82\xc4\x81" "A" ""
+				"\x90\xb0\x82\xea\x82\xbd\x93\xfa\x82\xc9\x82\xcd\x89" "^" ""
+				"\x89\xcd\x82\xcc\x90\x9f\x82\xf1\x82\xbe\x90\x85\x82\xcc\x8f\xe3\x82\xc9\x92\xec\x90" ""
+				"b" "\x82\xbd\x82\xbf\x82\xf0\x98" "A" "\x82\xea\x8f" "o" ""
+				"\x82\xb5\x82\xbd\x82\xcc\x82\xc5\x82\xb5\x82\xbd"
+			},
+		}
+	}, /* a6_vf.hns */
+	{
+		"a7_vf.hns", {
+			{
+				40, "\x89\xc4\x82\xcc\x8f\xaa\x82\xc9\x82\xcd\x81" "A" ""
+				"\x8d\x91\x89\xa4\x82\xaa\x97" "[" "\x90" "H" ""
+				"\x82\xcc\x91\xe3\x82\xed\x82\xe8\x82\xc9\x92\xeb\x89\x80\x93\xe0\x82\xcc\x96\xd8\x97\xa7\x82\xcc\x82\xa2\x82\xb8\x82\xea\x82\xa9\x82\xc9\x8c" ""
+				"y" "\x90" "H" "\x82\xf0\x97" "p" ""
+				"\x88\xd3\x82\xb3\x82\xb9\x82\xe9\x82\xb1\x82\xc6\x82\xcd\x82\xe6\x82\xad\x92" ""
+				"m" "\x82\xe7\x82\xea\x82\xc4\x82\xa2\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{107, ""},
+			{
+				198, "\x82\xbb\x82\xb5\x82\xc4\x93\xfa\x82\xaa\x95\xe9\x82\xea\x82\xe9\x82\xc6\x81" ""
+				"A" "\x8d\x91\x89\xa4\x82\xcc\x8f" "A" "\x90" "Q" ""
+				"\x82\xcc\x82\xbd\x82\xdf\x82\xc9\x81" "A" "\x91" "S" ""
+				"\x88\xf5\x82\xaa\x8b" "{" "\x93" "a" ""
+				"\x82\xc9\x96\xdf\x82\xe9\x82\xcc\x82\xc5\x82\xb5\x82\xbd"
+			},
+			{245, ""},
+			{
+				355, "\x82\xb2\x95" "w" "\x90" "l" "\x82\xbd\x82\xbf\x82\xcd\x81" "A" ""
+				"\x8d\x91\x89\xa4\x82\xcc\x8f" "A" "\x90" "Q" ""
+				"\x82\xc9\x82\xe0\x81" "A" "\x82\xdc\x82\xbd\x8b" "N" ""
+				"\x8f\xb0\x82\xe2\x92\x85\x88\xdf\x82\xc9\x82\xe0\x8f\xb5\x91\xd2\x82\xb3\x82\xea\x82\xe9\x82\xb1\x82\xc6\x82\xaa\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x82\xc5\x82\xb5\x82\xbd\x81" ""
+				"B" "\x8d\x91\x89\xa4\x82\xcd\x95" "w" "\x90" "l" ""
+				"\x82\xbd\x82\xbf\x82\xc9\x82\xbb\x82\xcc\x93\xfa\x82\xcc\x8d\xc5\x8c\xe3\x82\xcc\x88\xa5\x8e" ""
+				"A" "\x82\xf0\x82\xb7\x82\xe9\x82\xbd\x82\xdf\x82\xc9\x81" "A" ""
+				"\x83" "T" "\x83\x8d\x83\x93\x82\xc9\x8f" "W" ""
+				"\x82\xdf\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{442, ""},
+			{
+				454, "\x82\xb2\x95" "w" "\x90" "l" ""
+				"\x95\xfb\x82\xaa\x82\xb1\x82\xcc\x89\xc4\x8e\x8a\x82\xcc\x96\xe9\x82\xc9\x81" ""
+				"A" "\x8a" "F" "\x90" "S" "\x92" "n" "\x82\xe6\x82\xad\x8b" "x" ""
+				"\x82\xdc\x82\xea\x82\xe9\x82\xb1\x82\xc6\x82\xf0\x8a\xe8\x82\xc1\x82\xc4\x82\xa8\x82\xe8\x82\xdc\x82\xb7\x82\xbc" ""
+				" "
+			},
+			{512, ""},
+			{
+				647, "\x82\xb1\x82\xea\x82\xc5\x81" "A" "\x82\xe2\x82\xc1\x82\xc6\x8f" ""
+				"A" "\x90" "Q" "\x82\xcc\x8b" "V" "\x82\xaa\x8e" "n" ""
+				"\x82\xdc\x82\xe8\x82\xdc\x82\xb7\x81" "B" ""
+				"\x92\xa9\x82\xcc\x92\x85\x88\xdf\x82\xcc\x8b" "V" ""
+				"\x82\xc9\x97\xf1\x90\xc8\x82\xb5\x82\xbd\x92\xec\x90" "b" ""
+				"\x82\xbd\x82\xbf\x82\xcd\x81" "A" "\x82\xb1\x82\xcc\x8f" "A" ""
+				"\x90" "Q" "\x82\xcc\x8b" "V" ""
+				"\x82\xc9\x82\xe0\x97\xd5\x82\xde\x82\xb1\x82\xc6\x82\xf0\x96\xb1\x82\xdf\x82\xc6\x82\xb5\x82\xc4\x82\xa2\x82\xdc\x82\xb5\x82\xbd"
+			},
+			{722, ""},
+			{
+				733, "\x90" "C" "\x91\xe4\x82\xcd\x92" "N" "\x82\xc9\x93" "n" ""
+				"\x82\xb5\x82\xdc\x82\xb5\x82\xe5\x82\xa4\x82\xa9\x81" "A" ""
+				"\x95\xc3\x89\xba\x81" "H "
+			},
+			{763, ""},
+			{
+				925, "\x8d\x91\x89\xa4\x82\xcd\x81" "A" "\x96\x88\x93\xfa\x82\xcc\x8d" ""
+				"s" "\x82\xa2\x82\xcc\x88\xea\x82\xc2\x88\xea\x82\xc2\x82\xf0\x91" ""
+				"s" ""
+				"\x91\xe5\x82\xc8\x88\xd3\x96\xa1\x82\xf0\x82\xe0\x82\xc2\x82\xe0\x82\xcc\x82\xc9\x95\xcf\x96" ""
+				"e" "\x82\xb3\x82\xb9\x82\xdc\x82\xb5\x82\xbd\x81" "B" "\x8f" "A" ""
+				"\x90" "Q" "\x82\xcc\x8d\xdb\x82\xc9\x90" "C" ""
+				"\x91\xe4\x82\xf0\x8c" "f" ""
+				"\x82\xb0\x82\xe0\x82\xc2\x8c\xa0\x97\x98\x82\xcd\x97" "D" ""
+				"\x82\xea\x82\xbd\x8e\xd2\x82\xc9\x97" "^" ""
+				"\x82\xa6\x82\xe7\x82\xea\x82\xdc\x82\xb5\x82\xbd\x81" "B" ""
+				"\x82\xbb\x82\xcc\x89" "h" "\x97" "_" "\x82\xaa\x8a" "O" ""
+				"\x8d\x91\x82\xa9\x82\xe7\x82\xcc\x96" "K" ""
+				"\x96\xe2\x8e\xd2\x82\xc9\x97" "^" ""
+				"\x82\xa6\x82\xe7\x82\xea\x82\xe9\x82\xb1\x82\xc6\x82\xe0\x82\xb5\x82\xce\x82\xb5\x82\xce\x82\xc5\x81" ""
+				"D" "\x81" "D" "\x81" "D"
+			},
+			{1048, ""},
+			{1060, ""},
+			{1100, ""},
+			{
+				1115, "\x82\xb5\x82\xa9\x82\xb5\x8d\xa1\x94\xd3\x81" "D" "\x81" "D" ""
+				"\x81" "D"
+			},
+			{1135, ""},
+			{
+				1188, "\x82\xbd\x82\xa2\x82\xdc\x82\xc2\x82\xf0\x81" "A" ""
+				"\x82\xbd\x82\xa2\x82\xdc\x82\xc2\x82\xf0\x82\xe0\x82\xc4\x81" "I" ""
+				"\x82\xb1\x82\xbf\x82\xe7\x82\xbe\x81" "A" ""
+				"\x83\x89\x83\x89\x83\x93\x83" "h" "\x81" "B" ""
+				"\x82\xb1\x82\xcc\x8b" "C" "\x8b\xb6\x82\xa2\x82\xf0\x8e" "~" ""
+				"\x82\xdf\x82\xe9\x82\xcc\x82\xbe\x81" "I"
+			},
+			{
+				1230, "\x8f\x94\x8c" "N" "\x81" "A" "\x83" "X" "\x83" "L" "\x83\x83\x83" "p"
+				"\x83\x8c\x83\x89\x8c\xf2\x8e\xdd\x82\xcd\x8d\xa1\x94\xd3\x82\xcd\x82\xb1"
+				"\x82\xea\x82\xc5\x8e\xb8\x97\xe7\x82\xb5\x82\xdc\x82\xb7"
+			},
+		}
+	}, /* a7_vf.hns */
+	{
+		"a8_vf.hns", {
+			{
+				212, "\x93" "r" "\x95\xfb\x82\xe0\x82\xc8\x82\xa2\x8b\xb6\x90" "l" ""
+				"\x82\xaa\x82\xb1\x82\xcc\x8b" "{" "\x93" "a" ""
+				"\x82\xf0\x96\xc5\x82\xda\x82\xb7\x82\xc8\x82\xc7\x82\xc6\x81" "A" ""
+				"\x96\xb2\x82\xc9\x82\xe0\x8e" "v" ""
+				"\x82\xa6\x82\xe9\x8e\xd2\x82\xaa\x82\xa0\x82\xe8\x82\xdc\x82\xb5\x82\xe5\x82\xa4\x82\xa9\x81" ""
+				"H " "\x82\xe0\x82\xa4\x88\xea\x93" "x" "\x83" "v" "\x83\x8c\x83" ""
+				"C" "\x82\xb5\x82\xc4\x82\xdd\x82\xdc\x82\xb5\x82\xe5\x82\xa4\x81" ""
+				"B" "\x83" "`" "\x83\x83\x83\x93\x83" "X" ""
+				"\x82\xcd\x8d\xa1\x82\xb5\x82\xa9\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1" ""
+				" "
+			},
+			{320, ""},
+		}
+	}, /* a8_vf.hns */
+	{
+		"a9_vf.hns", {
+			{
+				30, "\x83\x89\x83\x89\x83\x93\x83" "h" "\x81" "A" ""
+				"\x95\xc3\x89\xba\x82\xc6\x8d\xa1\x89\xf1\x82\xcc\x82\xa8\x91" "O" ""
+				"\x82\xcc\x94" "M" "\x90" "S" ""
+				"\x82\xc8\x93\xad\x82\xab\x82\xd4\x82\xe8\x82\xc9\x82\xc2\x82\xa2\x82\xc4\x98" ""
+				"b" "\x82\xb5\x8d\x87\x82\xc1\x82\xbd\x81" "B" ""
+				"\x95\xc3\x89\xba\x82\xcd\x82\xa8\x91" "O" "\x82\xc9\x82\xa8\x97" ""
+				"_" "\x82\xdf\x82\xcc\x8c\xbe\x97" "t" ""
+				"\x82\xf0\x82\xa9\x82\xaf\x82\xbd\x82\xa2\x82\xc6\x82\xa8\x82\xc1\x82\xb5\x82"
+				"\xe1\x82\xc1\x82\xc4\x82\xa8\x82\xe7\x82\xea\x82\xe9"
+			},
+			{125, ""},
+			{
+				200, "\x83" "{" "\x83\x93\x83" "^" "\x83\x93\x82\xaa\x81" "A" ""
+				"\x82\xa8\x91" "O" ""
+				"\x82\xcc\x8a\xd6\x82\xed\x82\xc1\x82\xbd\x8e\x96\x8c\x8f"
+				"\x82\xc9\x82\xc2\x82\xa2\x82\xc4\x82\xb7\x82\xd7\x82\xc4\x98"
+				"b" "\x82\xb5\x82\xc4\x82\xad\x82\xea\x82\xbd\x81" "B"
+			},
+			{
+				300, "\x8e\x84\x82\xcd\x8d\xa1\x93\xfa\x82\xcc\x92\xf7\x82\xdf\x82\xad\x82\xad\x82\xe8\x95\xfb\x82\xf0\x93" ""
+				"{" "\x82\xc1\x82\xc4\x82\xcd\x82\xa8\x82\xe7\x82\xf1\x82\xaa\x81" ""
+				"A" "\x82\xa0\x82\xdc\x82\xe8\x82\xc9\x82\xe0\x96" "@" "\x8a" "O" ""
+				"\x82\xc8\x82\xe0\x82\xcc\x82\xbe\x82\xa9\x82\xe7\x81" "A" ""
+				"\x82\xb1\x82\xcc\x82\xb1\x82\xc6\x82\xcd\x94\x92\x93\xfa\x82\xcc\x82\xe0"
+				"\x82\xc6\x82\xc9\x82\xb3\x82\xe7\x82\xb7\x82\xe6\x82\xe8\x82\xe0\x8c\x8e"
+				"\x82\xcc\x8c\xf5\x82\xcc\x82\xe0\x82\xc6\x82\xc9\x82\xc6\x82\xc7\x82\xdf"
+				"\x82\xc4\x82\xa8\x82\xb1\x82\xa4\x82\xc5\x82\xcd\x82\xc8\x82\xa2\x82\xa9\x81" ""
+				"B"
+			},
+			{
+				400, "\x82\xdc\x82\xbe\x93\xe4\x82\xcd\x8e" "c" ""
+				"\x82\xc1\x82\xc4\x82\xa2\x82\xe9\x81" "B" "\x82\xbe\x82\xaa\x81" ""
+				"A" "\x8c" "N" ""
+				"\x82\xcd\x82\xc7\x82\xb1\x82\xc9\x82\xa0\x82\xeb\x82\xa4\x82\xc6\x82\xe0\x81" ""
+				"A" "\x82\xb1\x82\xcc\x8e\x9e\x91\xe3\x82\xcc\x90" "^" ""
+				"\x8e\xc0\x82\xf0\x93" "`" ""
+				"\x82\xa6\x82\xc4\x82\xad\x82\xea\x82\xe9\x91\xe5\x8e" "g" ""
+				"\x82\xc6\x82\xc8\x82\xe9\x82\xc9\x82\xd3\x82\xb3\x82\xed\x82\xb5\x82\xa2\x8e\x91\x8a" ""
+				"i" "\x82\xf0\x82\xe0\x82\xc1\x82\xc4\x82\xa2\x82\xe9"
+			},
+			{515, ""},
+		}
+	}, /* a9_vf.hns */
+};
+
 static char const *const versaillesKOmessages[] = {
 	"\xc1\xf6\xb1\xdd\xc0\xba" " " "\xc0\xcc" " " "\xb9\xae\xc0\xcc" " "
 	"" "\xbf\xad\xb8\xae\xc1\xf6" " " ""
diff --git a/dists/engine-data/cryomni3d.dat b/dists/engine-data/cryomni3d.dat
index 918926b11e..6af13e6084 100644
Binary files a/dists/engine-data/cryomni3d.dat and b/dists/engine-data/cryomni3d.dat differ
diff --git a/engines/cryomni3d/datstream.cpp b/engines/cryomni3d/datstream.cpp
index 3b6bda9b16..4ce4650454 100644
--- a/engines/cryomni3d/datstream.cpp
+++ b/engines/cryomni3d/datstream.cpp
@@ -127,6 +127,8 @@ uint16 DATSeekableStream::translateLanguage(Common::Language lang) {
 		return MKTAG16('f', 'r');
 	case Common::IT_ITA:
 		return MKTAG16('i', 't');
+	case Common::JA_JPN:
+		return MKTAG16('j', 'a');
 	case Common::KO_KOR:
 		return MKTAG16('k', 'o');
 	case Common::PT_BRA:
diff --git a/engines/cryomni3d/detection_tables.h b/engines/cryomni3d/detection_tables.h
index c67d4602a4..dab0bcef0c 100644
--- a/engines/cryomni3d/detection_tables.h
+++ b/engines/cryomni3d/detection_tables.h
@@ -484,6 +484,40 @@ static const CryOmni3DGameDescription gameDescriptions[] = {
 		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
 	},
 
+	// Versailles 1685
+	// Japanese Windows compressed from DVD
+	// From lePhilousophe
+	{
+		{
+			"versailles",
+			"",
+			VERSAILLES_ENTRY_DEF("PROGRAM.Z", "1944d7c30dbb25ab10f684422e196c16", 248700),
+			Common::JA_JPN,
+			Common::kPlatformWindows,
+			ADGF_NO_FLAGS,
+			GUI_OPTIONS_VERSAILLES
+		},
+		GType_VERSAILLES,
+		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
+	},
+
+	// Versailles 1685
+	// Japanese Windows from DVD
+	// From lePhilousophe
+	{
+		{
+			"versailles",
+			"",
+			VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "b7dadaf14cc5783e235125f9d6f6adea", 358912),
+			Common::JA_JPN,
+			Common::kPlatformWindows,
+			ADGF_NO_FLAGS,
+			GUI_OPTIONS_VERSAILLES
+		},
+		GType_VERSAILLES,
+		/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
+	},
+
 	{ AD_TABLE_END_MARKER, 0, 0 }
 };
 
diff --git a/engines/cryomni3d/versailles/data.cpp b/engines/cryomni3d/versailles/data.cpp
index a853885462..d04420bc01 100644
--- a/engines/cryomni3d/versailles/data.cpp
+++ b/engines/cryomni3d/versailles/data.cpp
@@ -101,8 +101,14 @@ void CryOmni3DEngine_Versailles::loadStaticData() {
 	// epigraph settings, bomb password
 	_epigraphContent = data->readString16();
 	_epigraphPassword = data->readString16();
-	_bombAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ '";
-	_bombPassword = data->readString16();
+
+	if (getLanguage() == Common::JA_JPN) {
+		_bombAlphabet = data->readString16().decode(Common::kWindows932);
+		_bombPassword = data->readString16().decode(Common::kWindows932);
+	} else {
+		_bombAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ '";
+		_bombPassword = data->readString16();
+	}
 
 	// messages, paintings titles
 	data->readString16Array16(_messages);
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index b4a11b17e1..7e92414147 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -292,6 +292,9 @@ void CryOmni3DEngine_Versailles::setupFonts() {
 
 		_fontManager.loadFonts(fonts, Common::kWindows950);
 		return;
+	} else if (getLanguage() == Common::JA_JPN) {
+		_fontManager.loadTTFList("FONTS_JP.LST", Common::kWindows932);
+		return;
 	} else if (getLanguage() == Common::KO_KOR) {
 		_fontManager.loadTTFList("FONTS_KR.LST", Common::kWindows949);
 		return;
@@ -690,6 +693,22 @@ void CryOmni3DEngine_Versailles::playTransitionEndLevel(int level) {
 		return;
 	}
 
+	if (level == -2) {
+		if (getLanguage() == Common::JA_JPN && Common::File::exists("jvclogo.hnm")) {
+			// Display one more copyright
+			playHNM("jvclogo.hnm", Audio::Mixer::kMusicSoundType);
+			clearKeys();
+			if (shouldAbort()) {
+				return;
+			}
+
+			fadeOutPalette();
+			if (shouldAbort()) {
+				return;
+			}
+		}
+	}
+
 	// Display back cursor there once the palette has been zeroed
 	showMouse(cursorWasVisible);
 
diff --git a/engines/cryomni3d/versailles/menus.cpp b/engines/cryomni3d/versailles/menus.cpp
index 94b2aac69d..71ed50fc38 100644
--- a/engines/cryomni3d/versailles/menus.cpp
+++ b/engines/cryomni3d/versailles/menus.cpp
@@ -60,6 +60,11 @@ void CryOmni3DEngine_Versailles::drawMenuTitle(Graphics::ManagedSurface *surface
 		titleY = 80;
 		subtitleX = 283;
 		subtitleY = 80;
+	} else if (getLanguage() == Common::JA_JPN) {
+		titleX = 144;
+		titleY = 125;
+		subtitleX = 144;
+		subtitleY = 145;
 	} else if (getLanguage() == Common::ZH_TWN) {
 		titleX = 130;
 		titleY = 160;
@@ -340,6 +345,8 @@ uint CryOmni3DEngine_Versailles::displayOptions() {
 					} else if (getLanguage() == Common::ES_ESP ||
 					           getLanguage() == Common::IT_ITA) {
 						rct = Common::Rect(250, 420, 530, 465);
+					} else if (getLanguage() == Common::JA_JPN) {
+						rct = Common::Rect(245, 420, 505, 465);
 					} else {
 						rct = Common::Rect(235, 420, 505, 465);
 					}


Commit: a05676d2c312e70ab2ea42d1da255663c5a2252c
    https://github.com/scummvm/scummvm/commit/a05676d2c312e70ab2ea42d1da255663c5a2252c
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Fix documentation for CJK

One minor fix for font choice and support multiline attributes for
Japanese version

Changed paths:
    engines/cryomni3d/versailles/documentation.cpp
    engines/cryomni3d/versailles/documentation.h


diff --git a/engines/cryomni3d/versailles/documentation.cpp b/engines/cryomni3d/versailles/documentation.cpp
index aaf2d456c7..54bfe43aac 100644
--- a/engines/cryomni3d/versailles/documentation.cpp
+++ b/engines/cryomni3d/versailles/documentation.cpp
@@ -91,6 +91,9 @@ void Versailles_Documentation::init(const Sprites *sprites, FontManager *fontMan
 	_allDocsFileName = allDocsFileName;
 	_linksDocsFileName = linksDocsFileName;
 
+	// Japanese version of Versailles handles records attributeswith multilines
+	_multilineAttributes = (_engine->getLanguage() == Common::JA_JPN);
+
 	// Build list of records
 	Common::File allDocsFile;
 
@@ -1448,8 +1451,10 @@ void Versailles_Documentation::drawRecordData(Graphics::ManagedSurface &surface,
 		blockContent1 = Common::Rect(60, 80, 351, 345);
 		blockContent2 = Common::Rect(60, 345, 605, 437);
 	}
-	// Fix of overlapping areas for Chinese (as in original binary)
-	if (_engine->getLanguage() == Common::ZH_TWN && !_currentMapLayout) {
+	// Fix of overlapping areas for Chinese and Japanese (as in original binary)
+	if ((_engine->getLanguage() == Common::JA_JPN ||
+	        _engine->getLanguage() == Common::ZH_TWN) &&
+	        !_currentMapLayout) {
 		blockContent1.bottom += 30;
 		blockContent2.top += 30;
 	}
@@ -1483,7 +1488,14 @@ void Versailles_Documentation::drawRecordData(Graphics::ManagedSurface &surface,
 	Common::String text = getRecordData(_currentRecord, title, subtitle, caption, hyperlinks);*/
 
 	uint lineHeight = 21;
-	_fontManager->setCurrentFont(4);
+
+	if (_engine->getLanguage() == Common::JA_JPN ||
+	        _engine->getLanguage() == Common::KO_KOR ||
+	        _engine->getLanguage() == Common::ZH_TWN) {
+		_fontManager->setCurrentFont(8);
+	} else {
+		_fontManager->setCurrentFont(4);
+	}
 	_fontManager->setTransparentBackground(true);
 	_fontManager->setSpaceWidth(1);
 	_fontManager->setCharSpacing(1);
@@ -1852,9 +1864,25 @@ char *Versailles_Documentation::getDocPartAddress(char *start, char *end, const
 	}
 	/*debug("Matched %.10s", foundPos);*/
 	foundPos += patternLen;
-	char *eol = foundPos;
-	for (; *eol != '\r' && *eol != '\0'; eol++) {}
-	*eol = '\0';
+	if (_multilineAttributes) {
+		char *eoa = foundPos;
+
+		// Find next '='
+		for (; eoa < end && *eoa != '\0' && *eoa != '='; eoa++) {}
+
+		if (eoa == end || *eoa == '\0') {
+			// This is the end of block or data has already been split
+			return foundPos;
+		}
+
+		// Go back to start of line
+		for (; eoa != foundPos && *eoa != '\r'; eoa--) {}
+		*eoa = '\0';
+	} else {
+		char *eol = foundPos;
+		for (; *eol != '\r' && *eol != '\0'; eol++) {}
+		*eol = '\0';
+	}
 	return foundPos;
 }
 
@@ -1996,7 +2024,16 @@ Common::String Versailles_Documentation::getRecordData(const Common::String &rec
 	caption = captionP ? captionP : "";
 	getRecordHyperlinks(recordData, recordDataEnd, hyperlinks);
 
-	Common::String text(getDocTextAddress(recordData, recordDataEnd));
+	const char *textP = nullptr;
+	if (_multilineAttributes) {
+		const char *patterns[] = { "TEXTE=", "TEXT=", nullptr };
+		textP = getDocPartAddress(recordData, recordDataEnd, patterns);
+	} else {
+		textP = getDocTextAddress(recordData, recordDataEnd);
+	}
+
+	assert(textP != nullptr);
+	Common::String text(textP);
 
 	delete[] recordData;
 
diff --git a/engines/cryomni3d/versailles/documentation.h b/engines/cryomni3d/versailles/documentation.h
index 7dea214ca9..6fa9bd04be 100644
--- a/engines/cryomni3d/versailles/documentation.h
+++ b/engines/cryomni3d/versailles/documentation.h
@@ -95,12 +95,12 @@ private:
 	};
 	static const TimelineEntry kTimelineEntries[];
 
-	static char *getDocPartAddress(char *start, char *end, const char *patterns[]);
-	static const char *getDocTextAddress(char *start, char *end);
-	static const char *getRecordTitle(char *start, char *end);
-	static const char *getRecordSubtitle(char *start, char *end);
-	static const char *getRecordCaption(char *start, char *end);
-	static void getRecordHyperlinks(char *start, char *end, Common::StringArray &hyperlinks);
+	char *getDocPartAddress(char *start, char *end, const char *patterns[]);
+	const char *getDocTextAddress(char *start, char *end);
+	const char *getRecordTitle(char *start, char *end);
+	const char *getRecordSubtitle(char *start, char *end);
+	const char *getRecordCaption(char *start, char *end);
+	void getRecordHyperlinks(char *start, char *end, Common::StringArray &hyperlinks);
 
 	Common::String getRecordTitle(const Common::String &record);
 	Common::String getRecordData(const Common::String &record, Common::String &title,
@@ -121,6 +121,8 @@ private:
 	const Sprites *_sprites;
 	const Common::StringArray *_messages;
 
+	bool _multilineAttributes;
+
 	Common::StringArray _recordsOrdered;
 	Common::HashMap<Common::String, RecordInfo> _records;
 	char *_linksData;


Commit: c89feeb64441735a9cf35bcc3eaed6c733908116
    https://github.com/scummvm/scummvm/commit/c89feeb64441735a9cf35bcc3eaed6c733908116
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2020-03-14T12:20:41+01:00

Commit Message:
CRYOMNI3D: Abort even in yes/no message box and file picker

Changed paths:
    engines/cryomni3d/versailles/menus.cpp


diff --git a/engines/cryomni3d/versailles/menus.cpp b/engines/cryomni3d/versailles/menus.cpp
index 71ed50fc38..6a4e7ca084 100644
--- a/engines/cryomni3d/versailles/menus.cpp
+++ b/engines/cryomni3d/versailles/menus.cpp
@@ -555,7 +555,7 @@ uint CryOmni3DEngine_Versailles::displayYesNoBox(Graphics::ManagedSurface &surfa
 	bool redraw = true;
 	uint result = uint(-1);
 
-	while (!end || redraw) {
+	while (!shouldAbort() && (!end || redraw)) {
 		if (redraw) {
 			for (uint boxId = 0; boxId < 2; boxId++) {
 				if (boxId == result) {
@@ -856,6 +856,9 @@ uint CryOmni3DEngine_Versailles::displayFilePicker(const Graphics::Surface *bgFr
 				autoRepeatEndInhibit = g_system->getMillis() + autoRepeatDelay;
 				filesListChanged = true;
 			}
+			if (shouldAbort()) {
+				return uint(-1);
+			}
 		}
 		if (autoRepeatInhibit && g_system->getMillis() > autoRepeatEndInhibit) {
 			autoRepeatInhibit = false;




More information about the Scummvm-git-logs mailing list