[Scummvm-git-logs] scummvm master -> e1aa80ec9389921c526a393828c5742d8e70f0e3
sev-
noreply at scummvm.org
Sun Nov 13 23:39:53 UTC 2022
This automated email contains information about 9 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f07270e3ef SAGA: Support Chinese rendering for ITE
1fa22aefd0 SAGA: Support Chinese word wrapping
a143f509b1 SAGA: Change interface layout for Chinese
5b3d7332a7 SAGA: Reserve space for Chinese strings
005c6a91d3 SAGA: Add language data for Chinese ITE
396f14105c SAGA: Replace Chinese floppy language id from Simplified to Traditional
c43e8f2cec SAGA: Fix inconsistencies in big5 variable use
c61ec5664f SAGA: Fix position of asterisk in pointer declaration
e1aa80ec93 SAGA: Add TODOs for missing Chinese strings
Commit: f07270e3ef1387371607ea2ec13881b1af50d66c
https://github.com/scummvm/scummvm/commit/f07270e3ef1387371607ea2ec13881b1af50d66c
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Support Chinese rendering for ITE
Changed paths:
engines/saga/font.cpp
engines/saga/font.h
diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp
index 04d7f614a6f..62c0cb0e2af 100644
--- a/engines/saga/font.cpp
+++ b/engines/saga/font.cpp
@@ -137,7 +137,7 @@ void Font::textDraw(FontId fontId, const char *text, const Common::Point &point,
draw(fontId, text, textLength, textPoint, color, effectColor, flags);
}
-DefaultFont::DefaultFont(SagaEngine *vm) : Font(vm), _fontMapping(0) {
+DefaultFont::DefaultFont(SagaEngine *vm) : Font(vm), _fontMapping(0), _chineseFont(nullptr), _chineseFontWidth(0), _chineseFontHeight(0) {
int i;
// Load font module resource context
@@ -152,6 +152,9 @@ DefaultFont::DefaultFont(SagaEngine *vm) : Font(vm), _fontMapping(0) {
#endif
loadFont(&_fonts[i], _vm->getFontDescription(i)->fontResourceId);
}
+
+ if (_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_CHN)
+ loadChineseFontITE("ite.fnt");
}
DefaultFont::~DefaultFont() {
@@ -168,6 +171,29 @@ DefaultFont::~DefaultFont() {
}
}
#endif
+ if (_chineseFont) {
+ delete[] _chineseFont;
+ _chineseFont = nullptr;
+ }
+}
+
+void DefaultFont::loadChineseFontITE(const Common::String& fileName) {
+ Common::File f;
+ if (!f.open(fileName))
+ return;
+ _chineseFontWidth = 16;
+ _chineseFontHeight = 14;
+ _chineseFontIndex = Common::move(Common::Array<int>(0x8000, -1));
+ size_t sz = f.size();
+ _chineseFont = new byte[sz];
+ f.read(_chineseFont, sz);
+ static const int kGlyphSize = 30;
+ for (unsigned i = 0; i < sz / kGlyphSize; i++) {
+ uint16 ch = READ_BE_UINT16(_chineseFont + kGlyphSize * i);
+ if (!(ch & 0x8000))
+ continue;
+ _chineseFontIndex[ch&0x7fff] = kGlyphSize * i + 2;
+ }
}
void DefaultFont::textDrawRect(FontId fontId, const char *text, const Common::Rect &rect, int color, int effectColor, FontEffectFlags flags) {
@@ -204,7 +230,7 @@ void DefaultFont::textDrawRect(FontId fontId, const char *text, const Common::Re
}
// String won't fit on one line
- h = getHeight(fontId);
+ h = getHeight(fontId, text);
w_total = 0;
len_total = 0;
wc = 0;
@@ -331,7 +357,7 @@ int DefaultFont::getHeight(FontId fontId, const char *text, int width, FontEffec
textLength = getStringLength(text);
textWidth = getStringWidth(fontId, text, textLength, flags);
- h = getHeight(fontId);
+ h = getHeight(fontId, text);
fitWidth = width;
textPoint.x = (fitWidth / 2);
@@ -415,6 +441,19 @@ void DefaultFont::draw(FontId fontId, const char *text, size_t count, const Comm
}
}
+int DefaultFont::getHeight(FontId fontId, const char *text) {
+ int singleByteHeight = getHeight(fontId);
+ if (!_chineseFont || _chineseFontHeight < singleByteHeight)
+ return singleByteHeight;
+
+ for (const byte* textPointer = (const byte *)text; *textPointer; textPointer++)
+ if (*textPointer & 0x80)
+ return _chineseFontHeight;
+
+ return singleByteHeight;
+}
+
+
void DefaultFont::outFont(const FontStyle &drawFont, const char *text, size_t count, const Common::Point &point, int color, FontEffectFlags flags) {
const byte *textPointer;
const byte *c_dataPointer;
@@ -442,59 +481,90 @@ void DefaultFont::outFont(const FontStyle &drawFont, const char *text, size_t co
textPointer = (const byte *)text;
ct = count;
+ byte isBig5 = _chineseFont ? true : false;
+
// Draw string one character at a time, maximum of 'draw_str'_ct
// characters, or no limit if 'draw_str_ct' is 0
for (; *textPointer && (!count || ct); textPointer++, ct--) {
+ int charWidth;
+ int charHeight;
+ int charTracking;
+ int rowLength;
+ const byte *bitmap;
c_code = *textPointer & 0xFFU;
- // Translate character
- if (_fontMapping == 0) { // Check font mapping debug flag
- // Default game behavior
-
- // It seems that this font mapping causes problems with non-english
- // versions of IHNM, so it has been changed to apply for ITE only.
- // It doesn't make any difference for the English version of IHNM.
- // Fixes bug #3405: "IHNM: Spanish font wrong".
- if (!(flags & kFontDontmap) && _vm->getGameId() == GID_ITE) {
- if (_vm->getLanguage() != Common::IT_ITA) {
- c_code = translateChar(c_code);
- } else {
- // The in-game fonts of the Italian version should not be mapped.
- // The ones in the intro are hardcoded and should be mapped normally.
- if (_vm->_scene->isInIntro())
+ if ((c_code & 0x80) && isBig5) {
+ byte leading = c_code;
+ byte trailing = *++textPointer & 0xFFU;
+ ct--;
+ if (ct == 0 || trailing == 0)
+ break;
+ int idx = _chineseFontIndex[((leading & 0x7f) << 8) | trailing];
+ if (idx < 0) {
+ textPoint.x += _chineseFontWidth;
+ continue;
+ }
+ charWidth = _chineseFontWidth;
+ charHeight = _chineseFontHeight;
+ rowLength = _chineseFontWidth / 8;
+ charTracking = _chineseFontWidth;
+ bitmap = _chineseFont + idx;
+ } else {
+ // Translate character
+ if (_fontMapping == 0) { // Check font mapping debug flag
+ // Default game behavior
+
+ // It seems that this font mapping causes problems with non-english
+ // versions of IHNM, so it has been changed to apply for ITE only.
+ // It doesn't make any difference for the English version of IHNM.
+ // Fixes bug #3405: "IHNM: Spanish font wrong".
+ if (!(flags & kFontDontmap) && _vm->getGameId() == GID_ITE) {
+ if (_vm->getLanguage() != Common::IT_ITA) {
c_code = translateChar(c_code);
+ } else {
+ // The in-game fonts of the Italian version should not be mapped.
+ // The ones in the intro are hardcoded and should be mapped normally.
+ if (_vm->_scene->isInIntro())
+ c_code = translateChar(c_code);
+ }
}
+ } else if (_fontMapping == 1) {
+ // Force font mapping
+ c_code = translateChar(c_code);
+ } else {
+ // In all other cases, ignore font mapping
}
- } else if (_fontMapping == 1) {
- // Force font mapping
- c_code = translateChar(c_code);
- } else {
- // In all other cases, ignore font mapping
- }
- assert(c_code < FONT_CHARCOUNT);
+ assert(c_code < FONT_CHARCOUNT);
- // Check if character is defined
- if ((drawFont.fontCharEntry[c_code].index == 0) && (c_code != FONT_FIRSTCHAR)) {
+ // Check if character is defined
+ if ((drawFont.fontCharEntry[c_code].index == 0) && (c_code != FONT_FIRSTCHAR)) {
#if FONT_SHOWUNDEFINED
- // A tab character appears in the IHNM demo instructions screen, so filter
- // it out here
- if (c_code == FONT_CH_SPACE || c_code == FONT_CH_TAB) {
+ // A tab character appears in the IHNM demo instructions screen, so filter
+ // it out here
+ if (c_code == FONT_CH_SPACE || c_code == FONT_CH_TAB) {
+ textPoint.x += drawFont.fontCharEntry[c_code].tracking;
+ continue;
+ }
+ c_code = FONT_CH_QMARK;
+#else
+ // Character code is not defined, but advance tracking
+ // ( Not defined if offset is 0, except for 33 ('!') which
+ // is defined )
textPoint.x += drawFont.fontCharEntry[c_code].tracking;
continue;
- }
- c_code = FONT_CH_QMARK;
-#else
- // Character code is not defined, but advance tracking
- // ( Not defined if offset is 0, except for 33 ('!') which
- // is defined )
- textPoint.x += drawFont.fontCharEntry[c_code].tracking;
- continue;
#endif
+ }
+
+ charWidth = drawFont.fontCharEntry[c_code].width;
+ charHeight = drawFont.header.charHeight;
+ rowLength = drawFont.header.rowLength;
+ bitmap = &drawFont.font[drawFont.fontCharEntry[c_code].index];
+ charTracking = drawFont.fontCharEntry[c_code].tracking;
}
// Get length of character in bytes
- c_byte_len = ((drawFont.fontCharEntry[c_code].width - 1) / 8) + 1;
- rowLimit = (_vm->_gfx->getBackBufferHeight() < (textPoint.y + drawFont.header.charHeight)) ? _vm->_gfx->getBackBufferHeight() : textPoint.y + drawFont.header.charHeight;
+ c_byte_len = ((charWidth - 1) / 8) + 1;
+ rowLimit = (_vm->_gfx->getBackBufferHeight() < (textPoint.y + charHeight)) ? _vm->_gfx->getBackBufferHeight() : textPoint.y + charHeight;
charRow = 0;
for (row = textPoint.y; row < rowLimit; row++, charRow++) {
@@ -512,7 +582,7 @@ void DefaultFont::outFont(const FontStyle &drawFont, const char *text, size_t co
break;
}
- c_dataPointer = &drawFont.font[charRow * drawFont.header.rowLength + drawFont.fontCharEntry[c_code].index];
+ c_dataPointer = bitmap + charRow * rowLength;
for (c_byte = 0; c_byte < c_byte_len; c_byte++, c_dataPointer++) {
// Check each bit, draw pixel if bit is set
@@ -526,7 +596,7 @@ void DefaultFont::outFont(const FontStyle &drawFont, const char *text, size_t co
} // end per-row processing
// Advance tracking position
- textPoint.x += drawFont.fontCharEntry[c_code].tracking;
+ textPoint.x += charTracking;
} // end per-character processing
rowLimit = (_vm->_gfx->getBackBufferHeight() < (textPoint.y + drawFont.header.charHeight)) ? _vm->_gfx->getBackBufferHeight() : textPoint.y + drawFont.header.charHeight;
diff --git a/engines/saga/font.h b/engines/saga/font.h
index 373eea43902..dff472db650 100644
--- a/engines/saga/font.h
+++ b/engines/saga/font.h
@@ -217,6 +217,8 @@ class DefaultFont : public Font {
return getFont(fontId)->normal.header.charHeight;
}
+ int getHeight(FontId fontId, const char *text);
+
void validate(FontId fontId) {
if (!valid(fontId)) {
error("Font::validate: Invalid font id");
@@ -235,6 +237,7 @@ class DefaultFont : public Font {
void draw(FontId fontId, const char *text, size_t count, const Common::Point &point, int color, int effectColor, FontEffectFlags flags) override;
void outFont(const FontStyle &drawFont, const char *text, size_t count, const Common::Point &point, int color, FontEffectFlags flags);
void loadFont(FontData *font, uint32 fontResourceId);
+ void loadChineseFontITE(const Common::String& fileName);
void createOutline(FontData *font);
int getByteLen(int numBits) const {
@@ -251,6 +254,11 @@ class DefaultFont : public Font {
Common::Array<FontData> _fonts;
int _fontMapping;
+
+ byte *_chineseFont;
+ Common::Array<int> _chineseFontIndex;
+ int _chineseFontWidth;
+ int _chineseFontHeight;
};
class SJISFont : public Font {
Commit: 1fa22aefd07161da53622ba97e678b2ccea43eeb
https://github.com/scummvm/scummvm/commit/1fa22aefd07161da53622ba97e678b2ccea43eeb
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Support Chinese word wrapping
Changed paths:
engines/saga/font.cpp
diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp
index 62c0cb0e2af..8f314b535b9 100644
--- a/engines/saga/font.cpp
+++ b/engines/saga/font.cpp
@@ -240,8 +240,18 @@ void DefaultFont::textDrawRect(FontId fontId, const char *text, const Common::Re
searchPointer = text;
endPointer = text + textLength;
+ bool isBig5 = !!_chineseFont;
+
for (;;) {
- foundPointer = strchr(searchPointer, ' ');
+ if (isBig5) {
+ if (*searchPointer & 0x80)
+ foundPointer = searchPointer + 2;
+ else if (*searchPointer)
+ foundPointer = searchPointer + 1;
+ else
+ foundPointer = nullptr;
+ } else
+ foundPointer = strchr(searchPointer, ' ');
if (foundPointer == nullptr) {
// Ran to the end of the buffer
len = endPointer - measurePointer;
@@ -301,7 +311,10 @@ void DefaultFont::textDrawRect(FontId fontId, const char *text, const Common::Re
effectColor, flags);
return;
}
- searchPointer = measurePointer + 1;
+ if (isBig5 && (*measurePointer & 0x80))
+ searchPointer = measurePointer + 2;
+ else
+ searchPointer = measurePointer + 1;
}
}
}
@@ -324,9 +337,19 @@ int DefaultFont::getStringWidth(FontId fontId, const char *text, size_t count, F
const byte *txt;
FontData *font = getFont(fontId);
txt = (const byte *) text;
+ byte isBig5 = _chineseFont ? true : false;
for (ct = count; *txt && (!count || ct > 0); txt++, ct--) {
ch = *txt & 0xFFU;
+ if ((ch & 0x80) && isBig5) {
+ byte trailing = *++txt & 0xFFU;
+ ct--;
+ if (ct == 0 || trailing == 0)
+ break;
+ width += _chineseFontWidth;
+ continue;
+ }
+
// Translate character
ch = translateChar(ch);
assert(ch < FONT_CHARCOUNT);
Commit: a143f509b16d72cca10a30afd1b968be82df2ff0
https://github.com/scummvm/scummvm/commit/a143f509b16d72cca10a30afd1b968be82df2ff0
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Change interface layout for Chinese
This changes the interface to be more in line with the original
Changed paths:
engines/saga/displayinfo.h
engines/saga/interface.cpp
engines/saga/metaengine.cpp
diff --git a/engines/saga/displayinfo.h b/engines/saga/displayinfo.h
index aa84fef506d..920642d5843 100644
--- a/engines/saga/displayinfo.h
+++ b/engines/saga/displayinfo.h
@@ -156,6 +156,29 @@ static PanelButton ITE_MainPanelButtons[] = {
{kPanelButtonInventory, 181 + 32*3,27, 27,18, 7,'-',0, 0,0,0}
};
+static PanelButton ITE_MainPanelButtons_ZH[] = {
+ {kPanelButtonVerb, 52,0, 36,14, kVerbITEWalkTo,'w',0, 0,1,0},
+ {kPanelButtonVerb, 52,14, 36,14, kVerbITELookAt,'l',0, 2,3,0},
+ {kPanelButtonVerb, 52,28, 36,14, kVerbITEPickUp,'p',0, 4,5,0},
+ {kPanelButtonVerb, 88,0, 36,14, kVerbITETalkTo,'t',0, 0,1,0},
+ {kPanelButtonVerb, 88,14, 36,14, kVerbITEOpen,'o',0, 6,7,0},
+ {kPanelButtonVerb, 88,28, 36,14, kVerbITEClose,'c',0, 8,9,0},
+ {kPanelButtonVerb, 124,0, 36,14, kVerbITEUse,'u',0, 10,11,0},
+ {kPanelButtonVerb, 124,14, 36,14, kVerbITEGive,'g',0, 12,13,0},
+ {kPanelButtonArrow, 306,6, 8,5, -1,'U',0, 0,4,2},
+ {kPanelButtonArrow, 306,41, 8,5, 1,'D',0, 1,5,3},
+
+ {kPanelButtonInventory, 181 + 32*0,2, 27,18, 0,'-',0, 0,0,0},
+ {kPanelButtonInventory, 181 + 32*1,2, 27,18, 1,'-',0, 0,0,0},
+ {kPanelButtonInventory, 181 + 32*2,2, 27,18, 2,'-',0, 0,0,0},
+ {kPanelButtonInventory, 181 + 32*3,2, 27,18, 3,'-',0, 0,0,0},
+
+ {kPanelButtonInventory, 181 + 32*0,23, 27,18, 4,'-',0, 0,0,0},
+ {kPanelButtonInventory, 181 + 32*1,23, 27,18, 5,'-',0, 0,0,0},
+ {kPanelButtonInventory, 181 + 32*2,23, 27,18, 6,'-',0, 0,0,0},
+ {kPanelButtonInventory, 181 + 32*3,23, 27,18, 7,'-',0, 0,0,0}
+};
+
static PanelButton ITE_ConversePanelButtons[] = {
{kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 0, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 0,'1',0, 0,0,0},
{kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 1, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 1,'2',0, 0,0,0},
@@ -276,6 +299,70 @@ static const GameDisplayInfo ITE_DisplayInfo = {
ITE_ProtectPanelButtons
};
+static const GameDisplayInfo ITE_DisplayInfo_ZH = {
+ 320, 200, // logical width&height
+
+ 35, // scene path y offset
+ 137, // scene height
+
+ 0, // status x offset
+ 137, // status y offset
+ 320, // status width
+ 15, // status height
+ 0, // status text y offset
+ 186, // status text color
+ 15, // status BG color
+ 308,137, // save reminder pos
+ 12,12, // save reminder w & h
+ 6, // save reminder first sprite number
+ 2, // number of save reminder sprites
+
+ 5, 0, // left portrait x, y offset
+ 274, 0, // right portrait x, y offset
+
+ 8, 9, // inventory Up & Down button indexes
+ 2, 4, // inventory rows, columns
+
+ 0, 152, // main panel offsets
+ ARRAYSIZE(ITE_MainPanelButtons_ZH),
+ ITE_MainPanelButtons_ZH,
+
+ ITE_CONVERSE_MAX_TEXT_WIDTH,
+ ITE_CONVERSE_TEXT_HEIGHT,
+ ITE_CONVERSE_TEXT_LINES,
+ 4, 5, // converse Up & Down button indexes
+ 0, 148, // converse panel offsets
+ ARRAYSIZE(ITE_ConversePanelButtons),
+ ITE_ConversePanelButtons,
+
+ 8, 0, // save file index
+ 8, // optionSaveFileVisible
+ 8, 8, // option panel offsets
+ ARRAYSIZE(ITE_OptionPanelButtons),
+ ITE_OptionPanelButtons,
+
+ 64,54, // quit panel offsets
+ 192,38, // quit panel width & height
+ ARRAYSIZE(ITE_QuitPanelButtons),
+ ITE_QuitPanelButtons,
+
+ 74, 53, // load panel offsets
+ 172, 40, // load panel width & height
+ ARRAYSIZE(ITE_LoadPanelButtons),
+ ITE_LoadPanelButtons,
+
+ 2, // save edit index
+ 74, 44, // save panel offsets
+ 172, 58, // save panel width & height
+ ARRAYSIZE(ITE_SavePanelButtons),
+ ITE_SavePanelButtons,
+
+ 0, // protect edit index
+ 74, 44, // protect panel offsets
+ 172, 58, // protect panel width & height
+ ARRAYSIZE(ITE_ProtectPanelButtons),
+ ITE_ProtectPanelButtons
+};
#if defined(ENABLE_IHNM)
diff --git a/engines/saga/interface.cpp b/engines/saga/interface.cpp
index ec914ad7017..e37d84a0860 100644
--- a/engines/saga/interface.cpp
+++ b/engines/saga/interface.cpp
@@ -228,6 +228,19 @@ Interface::Interface(SagaEngine *vm) : _vm(vm) {
_mainPanel.x = _vm->getDisplayInfo().mainPanelXOffset;
_mainPanel.y = _vm->getDisplayInfo().mainPanelYOffset;
_mainPanel.currentButton = nullptr;
+
+ if (_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_CHN) {
+ ByteArray n;
+ static const int kSkipLines = 4;
+ _mainPanel.imageHeight -= kSkipLines;
+ n.resize(_mainPanel.imageHeight * _mainPanel.imageWidth);
+ memcpy(n.getBuffer(), _mainPanel.image.getBuffer() + kSkipLines * _mainPanel.imageWidth, _mainPanel.imageHeight * _mainPanel.imageWidth);
+ // Fill button panel with blue to remove western button outlies. No idea why it was done in the code rather than resource itself
+ for (unsigned y = 0; y < 43; y++)
+ memset(n.getBuffer() + y * _mainPanel.imageWidth + 53, kITEColorBlue89, 114);
+ _mainPanel.image = n;
+ }
+
_inventoryUpButton = _mainPanel.getButton(_vm->getDisplayInfo().inventoryUpButtonIndex);
_inventoryDownButton = _mainPanel.getButton(_vm->getDisplayInfo().inventoryDownButtonIndex);
@@ -758,7 +771,10 @@ void Interface::drawVerbPanel(PanelButton* panelButton) {
point.x = _mainPanel.x + panelButton->xOffset;
point.y = _mainPanel.y + panelButton->yOffset;
- _vm->_sprite->draw(_mainPanel.sprites, spriteNumber, point, 256);
+ // TODO: Find the correct sprite for Chinese version.
+ if (!(_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_CHN)) {
+ _vm->_sprite->draw(_mainPanel.sprites, spriteNumber, point, 256);
+ }
drawVerbPanelText(panelButton, textColor, kKnownColorVerbTextShadow);
}
diff --git a/engines/saga/metaengine.cpp b/engines/saga/metaengine.cpp
index 9a7ae97977f..07601a34d91 100644
--- a/engines/saga/metaengine.cpp
+++ b/engines/saga/metaengine.cpp
@@ -253,6 +253,8 @@ bool SagaEngine::initGame() {
const GameDisplayInfo &SagaEngine::getDisplayInfo() {
switch (_gameDescription->gameId) {
case GID_ITE:
+ if (getLanguage() == Common::ZH_CHN)
+ return ITE_DisplayInfo_ZH;
return ITE_DisplayInfo;
#ifdef ENABLE_IHNM
case GID_IHNM:
Commit: 5b3d7332a7426ba2680f84cad2acf4fc81cee906
https://github.com/scummvm/scummvm/commit/5b3d7332a7426ba2680f84cad2acf4fc81cee906
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Reserve space for Chinese strings
Changed paths:
engines/saga/itedata.cpp
engines/saga/saga.cpp
diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index ae3e8f74879..a1350da8bdb 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -544,7 +544,29 @@ const char *ITEinterfaceTextStrings[][53] = {
"\xE4\xF6\xE2\xFA \xE3\xE5-\xF9\xE9\xE7",
"\xEE\xE4 \xFA\xE2\xE5\xE1\xFA\xE5 \xF9\xEC \xF8\xE9\xF3?",
"\xE8\xF2\xE9\xF0\xFA \xEE\xF9\xE7\xF7 \xF9\xEE\xE5\xF8"
- }
+ },
+ // Chinese
+ {
+ // Note that the "Load Successful!" string is never used in ScummVM
+ "Walk to", "Look At", "Pick Up", "Talk to", "Open",
+ "Close", "Use", "Give", "Options", "Test",
+ "Demo", "Help", "Quit Game", "Fast", "Slow",
+ "On", "Off", "Continue Playing", "Load", "Save",
+ "Game Options", "Reading Speed", "Music", "Sound", "Cancel",
+ "Quit", "OK", "Mid", "Click", "10%",
+ "20%", "30%", "40%", "50%", "60%",
+ "70%", "80%", "90%", "Max", "Quit the Game?",
+ "Load Successful!", "Enter Save Game Name", "Give %s to %s", "Use %s with %s",
+ "[New Save Game]",
+ "I can't pick that up.",
+ "I see nothing special about it.",
+ "There's no place to open it.",
+ "There's no opening to close.",
+ "I don't know how to do that.",
+ "Show Dialog",
+ "What is Rif's reply?",
+ "Loading a saved game"
+ },
};
const RawPoint pieceOrigins[PUZZLE_PIECES] = {
@@ -620,7 +642,13 @@ const char *pieceNames[][PUZZLE_PIECES] = {
"\xEE\xE1\xF8\xE2", "\xF6\xE1\xFA", "\xEB\xEC\xE9\xE1\xE4", "\xEE\xEC\xE7\xF6\xE9\xE9\xED", "\xF4\xEC\xF1",
"\xE7\xE5\xE8 \xEE\xF9\xE9\xE7\xE4", "\xEE\xF7\xF6\xE5\xF2\xE4", "\xF4\xE8\xE9\xF9 \xF0\xE2\xF8\xE9\xED", "\xF1\xF8\xE8 \xEE\xE9\xE3\xE4", "\xF7\xF8\xE3\xE5\xED",
"\xEE\xE6\xEE\xF8\xE4", "\xF1\xF8\xE2\xEC", "\xEE\xF1\xE5\xF8", "\xEE\xF7\xE1\xFA", "\xEE\xE1\xF8\xF9\xFA \xF6\xE1\xF2"
- }
+ },
+ // Chinese
+ {
+ "screwdriver", "pliers", "c-clamp", "wood clamp", "level",
+ "twine", "wood plane", "claw hammer", "tape measure", "hatchet",
+ "shears", "ruler", "saw", "mallet", "paint brush"
+ },
};
// hints
@@ -688,7 +716,14 @@ const char *hintStr[][4] = {
"\xE1\xE3\xF7\xE5 \xEC\xE0\xE9\xEC\xE5 \xF4\xE9\xF0\xE4 \xE9\xF9 \xE4\xEB\xE9 \xEE\xF2\xE8 \xE7\xFA\xE9\xEB\xE5\xFA \xF9\xF2\xF9\xE5\xE9\xE5\xFA \xEC\xE4\xFA\xE0\xE9\xED \xE5\xE4\xFA\xE7\xE9\xEC\xE5 \xEE\xF9\xED.",
"\xE1\xE3\xF7\xE5 \xEB\xEC \xF4\xE9\xF0\xE4 \xE7\xE3\xF9\xE4 \xE5\xEB\xEC \xF6\xE3 \xE7\xE3\xF9 \xE0\xED \xE9\xF9 \xE7\xFA\xE9\xEB\xE4 \xEE\xFA\xE0\xE9\xEE\xE4.",
"\xE0\xE9\xF0\xE9 \xF8\xE5\xE0\xE4 \xF9\xE5\xED \xE3\xE1\xF8 \xF9\xE0\xE9\xF0\xE5 \xE1\xEE\xF7\xE5\xEE\xE5."
- }
+ },
+ // Chinese
+ {
+ "Check which pieces could fit in each corner first.",
+ "Check which corner has the least number of pieces that can fit and start from there.",
+ "Check each new corner and any new side for pieces that fit.",
+ "I don't see anything out of place."
+ },
};
const char *solicitStr[][NUM_SOLICIT_REPLIES] = {
@@ -766,6 +801,14 @@ const char *solicitStr[][NUM_SOLICIT_REPLIES] = {
"\xF4\xF1\xF1! \xF8\xE5\xF6\xE4 \xF8\xEE\xE6?",
"\xE0\xF0\xE9 \xE4\xE9\xE9\xFA\xE9 \xF2\xE5\xF9\xE4 \xE6\xE0\xFA \xE0\xE7\xF8\xFA, \xE0\xFA\xE4 \xE9\xE5\xE3\xF2."
},
+ // Chinese
+ {
+ "Hey, Fox! Would you like a hint?",
+ "Would you like some help?",
+ "Umm...Umm...",
+ "Psst! want a hint?",
+ "I would have done this differently, you know."
+ },
};
const char *sakkaStr[][NUM_SAKKA] = {
@@ -822,7 +865,13 @@ const char *sakkaStr[][NUM_SAKKA] = {
"\xE4\xE9\xE9, \xE0\xFA\xE4 \xEC\xE0 \xE0\xEE\xE5\xF8 \xEC\xF1\xE9\xE9\xF2 \xEC\xEE\xE5\xF2\xEE\xE3\xE9\xED!",
"\xE7\xE1\xF8'\xE4! \xE6\xE4 \xE0\xEE\xE5\xF8 \xEC\xE4\xE9\xE5\xFA \xEE\xE1\xE7\xEF!",
"\xE1\xE7\xE9\xE9\xEB\xED, \xE6\xE4 \xEC\xE0 \xEE\xE5\xF4\xE9\xF2 \xE1\xE7\xE5\xF7\xE9\xED!"
- }
+ },
+ // Chinese
+ {
+ "Hey, you're not supposed to help the applicants!",
+ "Guys! This is supposed to be a test!",
+ "C'mon fellows, that's not in the rules!"
+ },
};
const char *whineStr[][NUM_WHINES] = {
@@ -899,7 +948,15 @@ const char *whineStr[][NUM_WHINES] = {
"\xF0\xE5 \xE8\xE5\xE1...",
"\xF0\xF8\xE0\xE4 \xEC\xE9 \xF9\xEC\xE5\xE7 \xE4\xEB\xFA\xE9\xE1\xE4 \xF2\xEC\xE4 \xEC\xEA \xEC\xF8\xE0\xF9, \xF1\xE0\xF7\xE4!",
"\xE8\xE5\xE1, \xE0\xF0\xE9 \xEC\xE0 \xE6\xE5\xEB\xF8 \xF9\xE9\xF9 \xE7\xE5\xF7 \xEE\xF4\xE5\xF8\xF9 \xF9\xEE\xFA\xF0\xE2\xE3 \xEC\xF8\xEE\xE6\xE9\xED."
- }
+ },
+ // Chinese
+ {
+ "Aww, c'mon Sakka!",
+ "One hint won't hurt, will it?",
+ "Sigh...",
+ "I think that clipboard has gone to your head, Sakka!",
+ "Well, I don't recall any specific rule against hinting."
+ },
};
const char *optionsStr[][4] = {
@@ -966,7 +1023,14 @@ const char *optionsStr[][4] = {
"\"\xEB\xEF, \xE0\xF9\xEE\xE7 \xEC\xF8\xEE\xE6 \xE1\xE1\xF7\xF9\xE4.\"",
"\"\xEC\xE0, \xFA\xE5\xE3\xE4 \xF8\xE1\xE4, \xE0\xF9\xEE\xE7 \xEC\xF0\xF1\xE5\xFA \xEC\xF4\xFA\xE5\xF8 \xE1\xF2\xF6\xEE\xE9.\"",
"\xF0\xF8\xE0\xE4 \xEC\xE9 \xF9\xE4\xEE\xF7\xE5\xED \xF9\xE1\xE5 \xF9\xEE\xFA\xE9 \xE0\xFA \xE4%s \xEC\xE0 \xF0\xEB\xE5\xEF."
- }
+ },
+ // Chinese
+ {
+ "\"I'll do this puzzle later.\"",
+ "\"Yes, I'd like a hint please.\"",
+ "\"No, thank you, I'd like to try and solve it myself.\"",
+ "I think the %s is in the wrong place."
+ },
};
const IntroDialogue introDialogueCave1[][4] = {
@@ -1155,7 +1219,27 @@ const IntroDialogue introDialogueCave1[][4] = {
3, // cave voice 3
"\xE4\xED \xE9\xE3\xF2\xE5 \xE0\xFA \xF1\xE5\xE3 \xE4\xFA\xF2\xE5\xF4\xE4, \xE0\xFA \xF1\xE5\xE3 \xE4\xE0\xE5\xF9\xF8, \xE5\xF1\xE5\xE3\xE5\xFA \xF0\xE5\xF1\xF4\xE9\xED "
"\xEE\xF2\xE1\xF8 \xEC\xEE\xE4 \xF9\xE0\xF0\xE7\xF0\xE5 \xEE\xF1\xE5\xE2\xEC\xE9\xED \xEC\xE3\xEE\xE9\xE9\xEF."
- } }
+ } },
+ { { // Chinese
+ 0, // cave voice 0
+ "We see the sky, we see the land, we see the water, "
+ "and we wonder: Are we the only ones?"
+ },
+ {
+ 1, // cave voice 1
+ "Long before we came to exist, the humans ruled the "
+ "Earth."
+ },
+ {
+ 2, // cave voice 2
+ "They made marvelous things, and moved whole "
+ "mountains."
+ },
+ {
+ 3, // cave voice 3
+ "They knew the Secret of Flight, the Secret of "
+ "Happiness, and other secrets beyond our imagining."
+ } },
};
const IntroDialogue introDialogueCave2[][3] = {
@@ -1292,6 +1376,20 @@ const IntroDialogue introDialogueCave2[][3] = {
6, // cave voice 6
"\xE0\xF0\xE7\xF0\xE5 \xE4\xE9\xE9\xF0\xE5 \xEC\xE4\xED \xEC\xE9\xEC\xE3\xE9\xED."
} },
+ { { // Chinese
+ 4, // cave voice 4
+ "The humans also knew the Secret of Life, and they "
+ "used it to give us the Four Great Gifts:"
+ },
+ {
+ 5, // cave voice 5
+ "Thinking minds, feeling hearts, speaking mouths, and "
+ "reaching hands."
+ },
+ {
+ 6, // cave voice 6
+ "We are their children."
+ } },
};
const IntroDialogue introDialogueCave3[][3] = {
@@ -1426,7 +1524,21 @@ const IntroDialogue introDialogueCave3[][3] = {
{
9, // cave voice 9
"\xE4\xED \xE0\xE4\xE1\xE5 \xE0\xE5\xFA\xF0\xE5, \xE5\xEB\xF9\xE4\xE9\xE9\xF0\xE5 \xEE\xE5\xEB\xF0\xE9\xED, \xE4\xED \xE1\xE5\xE5\xE3\xE0\xE9 \xE4\xE9\xE5 \xEE\xF2\xF0\xE9\xF7\xE9\xED \xEC\xF0\xE5 \xE0\xFA \xF1\xE5\xE3 \xE4\xE0\xE5\xF9\xF8."
- } }
+ } },
+ { { // Chinese
+ 7, // cave voice 7
+ "They taught us how to use our hands, and how to "
+ "speak."
+ },
+ {
+ 8, // cave voice 8
+ "They showed us the joy of using our minds."
+ },
+ {
+ 9, // cave voice 9
+ "They loved us, and when we were ready, they surely "
+ "would have given us the Secret of Happiness."
+ } },
};
const IntroDialogue introDialogueCave4[][4] = {
@@ -1607,7 +1719,25 @@ const IntroDialogue introDialogueCave4[][4] = {
{
13, // cave voice 13
"\xE5\xE4\xE0\xED \xF0\xE7\xEC\xE5\xF7 \xF2\xEE\xED \xE0\xFA \xE0\xE5\xFA\xE5 \xE4\xE2\xE5\xF8\xEC \xE1\xE9\xE5\xED \xEE\xEF \xE4\xE9\xEE\xE9\xED?"
- } }
+ } },
+ { { // Chinese
+ 10, // cave voice 10
+ "And now we see the sky, the land, and the water that "
+ "we are heirs to, and we wonder: why did they leave?"
+ },
+ {
+ 11, // cave voice 11
+ "Do they live still, in the stars? In the oceans "
+ "depths? In the wind?"
+ },
+ {
+ 12, // cave voice 12
+ "We wonder, was their fate good or evil?"
+ },
+ {
+ 13, // cave voice 13
+ "And will we also share the same fate one day?"
+ } },
};
const IntroCredit creditsValley[] = {
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index f3c4c77a3bf..497b077c0a6 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -488,6 +488,8 @@ int SagaEngine::getLanguageIndex() {
return 6;
case Common::HE_ISR:
return 7;
+ case Common::ZH_CHN:
+ return 8;
default:
return 0;
}
Commit: 005c6a91d3aeaf31afd00e93267e165106e3b802
https://github.com/scummvm/scummvm/commit/005c6a91d3aeaf31afd00e93267e165106e3b802
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Add language data for Chinese ITE
Changed paths:
engines/saga/itedata.cpp
engines/saga/itedata.h
diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index a1350da8bdb..9b5693f165c 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -548,15 +548,51 @@ const char *ITEinterfaceTextStrings[][53] = {
// Chinese
{
// Note that the "Load Successful!" string is never used in ScummVM
- "Walk to", "Look At", "Pick Up", "Talk to", "Open",
- "Close", "Use", "Give", "Options", "Test",
- "Demo", "Help", "Quit Game", "Fast", "Slow",
- "On", "Off", "Continue Playing", "Load", "Save",
- "Game Options", "Reading Speed", "Music", "Sound", "Cancel",
- "Quit", "OK", "Mid", "Click", "10%",
- "20%", "30%", "40%", "50%", "60%",
- "70%", "80%", "90%", "Max", "Quit the Game?",
- "Load Successful!", "Enter Save Game Name", "Give %s to %s", "Use %s with %s",
+ "\xa8\xab\xa6\x56" /* èµ°å, Walk to */,
+ "\xac\x64\xac\xdd" /* æ¥ç, Look at */,
+ "\xae\xb3\xb0\x5f" /* æ¿èµ·, Pick up */,
+ "\xa5\xe6\xbd\xcd" /* 交è«, Talk to */,
+ "\xa5\xb4\xb6\x7d" /* æé, Open */,
+ "\xc3\xf6\xb3\xac" /* éé, Close */,
+ "\xa8\xcf\xa5\xce" /* 使ç¨, Use */,
+ "\xb5\xb9\xbb\x50" /* 給è, Give */,
+ "\xbf\xef\xb6\xb5" /* é¸é
, Options */,
+ "\xb4\xfa\xb8\xd5" /* 測試, Test */,
+ "\xae\x69\xa5\xdc" /* å±ç¤º, Demo */,
+ "\xa8\x44\xa7\x55" /* æ±å©, Help */,
+ "\xb5\xb2\xa7\xf4" /* çµæ, Quit game */,
+ "\xa7\xd6\xb3\x74" /* å¿«é, Fast */,
+ "\xbd\x77\xba\x43" /* ç·©æ
¢, Slow */,
+ "\xb6\x7d" /* é, On */,
+ "\xc3\xf6" /* é, Off */,
+ "\xc4\x7e\xc4\xf2\xb9\x43\xc0\xb8" /* ç¹¼çºéæ², Continue Playing */,
+ "\xb8\xfc\xa4\x4a" /* è¼å
¥, Load */,
+ "\xc0\x78\xa6\x73" /* å²å, Save */,
+ "\xb9\x43\xc0\xb8\xbf\xef\xb6\xb5" /* éæ²é¸é
, Game Options */,
+ "\xb0\x54\xae\xa7\xb3\x74\xab\xd7" /* è¨æ¯é度, Reading Speed */,
+ "\xad\xb5\xbc\xd6" /* 鳿¨, Music */,
+ "\xad\xb5\xae\xc4" /* 鳿, Sound */,
+ "\xa8\xfa\xae\xf8" /* åæ¶, Cancel */,
+ "\xb5\xb2\xa7\xf4" /* çµæ, Quit */,
+ "\xa7\xb9\xb2\xa6" /* å®ç¢, OK */,
+ "\xa4\xa4\xb5\xa5" /* ä¸ç, Mid */,
+ "\xba\x56\xc1\xe4" /* æ²éµ, Click */,
+ "\xa2\xb0\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb1\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb2\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb3\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb4\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb5\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb6\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb7\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xa2\xb8\xa2\xaf\xa2\x48" /* ï¼ï¼ï¼
*/,
+ "\xb3\xcc\xa4\x6a" /* æå¤§, Max */,
+ "\xad\x6e\xb5\xb2\xa7\xf4\xb9\x43\xc0\xb8\xb6\xdc\x3f" /* è¦çµæéæ²å?; Quit the Game? */,
+ "\xb8\xfc\xa4\x4a\xa6\xa8\xa5\x5c" /* è¼å
¥æå, Load Successful! */,
+ "\xbd\xd0\xbf\xe9\xa4\x4a\xa6\x73\xc0\xc9\xa6\x57\xba\xd9" /* è«è¼¸å
¥åæªå稱, Enter Save Game Name */,
+
+ "Give %s to %s",
+ "Use %s with %s",
"[New Save Game]",
"I can't pick that up.",
"I see nothing special about it.",
@@ -564,7 +600,7 @@ const char *ITEinterfaceTextStrings[][53] = {
"There's no opening to close.",
"I don't know how to do that.",
"Show Dialog",
- "What is Rif's reply?",
+ "\xa7\x51\xa4\xd2\xaa\xba\xa6\x5e\xb5\xaa\xac\x4f\xa4\xb0\xbb\xf2\xa1\x48" /* å©å¤«çåçæ¯ä»éº¼ï¼; What is Rif's reply? */,
"Loading a saved game"
},
};
@@ -645,9 +681,21 @@ const char *pieceNames[][PUZZLE_PIECES] = {
},
// Chinese
{
- "screwdriver", "pliers", "c-clamp", "wood clamp", "level",
- "twine", "wood plane", "claw hammer", "tape measure", "hatchet",
- "shears", "ruler", "saw", "mallet", "paint brush"
+ "\xc1\xb3\xb5\xb7\xb0\x5f\xa4\x6c" /* èºçµ²èµ·å, screwdriver */,
+ "\xb9\x58\xa4\x6c" /* éå, pliers */,
+ "\xa2\xd1\xab\xac\xb9\x58" /* ï¼£åé, c-clamp */,
+ "\xa4\xec\xb9\x58" /* æ¨é, wood clamp */,
+ "\xa4\xf4\xa5\xad\xbb\xf6" /* æ°´å¹³å, level */,
+ "\xb3\xc2\xbd\x75" /* 麻ç·, twine */,
+ "\xa4\xec\xaa\x4f" /* æ¨æ¿, wood plane */,
+ "\xa9\xde\xb0\x76\xc2\xf1" /* æéé, claw hammer */,
+ "\xa5\xd6\xa4\xd8" /* ç®å°º, tape measure */,
+ "\xa9\xf2\xc0\x59" /* æ§é , hatchet */,
+ "\xb0\xc5\xa4\x4d" /* åªå, shears */,
+ "\xaa\xbd\xa4\xd8" /* ç´å°º, ruler */,
+ "\xbf\xf7\xa4\x6c" /* é¸å, saw */,
+ "\xa4\xec\xba\x6c" /* æ¨æ§, mallet */,
+ "\xaa\x6f\xba\xa3\xa8\xea" /* æ²¹æ¼å·, paint brush */,
},
};
@@ -719,10 +767,10 @@ const char *hintStr[][4] = {
},
// Chinese
{
- "Check which pieces could fit in each corner first.",
- "Check which corner has the least number of pieces that can fit and start from there.",
- "Check each new corner and any new side for pieces that fit.",
- "I don't see anything out of place."
+ "\xa5\xfd\xac\xdd\xac\xdd\xa8\xba\xa8\xc7\xb8\x48\xa4\xf9\xa5\x69\xa5\x48\xb1\xc6\xa6\x62\xa6\x55\xad\xd3\xa8\xa4\xa1\x45" /* å
ççé£äºç¢çå¯ä»¥æå¨ååè§â§; Check which pieces could fit in each corner first. */,
+ "\xac\xdd\xac\xdd\xa8\xba\xa4\x40\xad\xd3\xa8\xa4\xaf\xe0\xb1\xc6\xb6\x69\xa5\x68\xaa\xba\xb8\x48\xa4\xf9\xb3\xcc\xa4\xd6\xa1\x41\xb4\x4e\xb1\x71\xa8\xba\xad\xd3\xa8\xa4\xb8\xa8\xb6\x7d\xa9\x6c\xa1\x45" /* ççé£ä¸åè§è½æé²å»çç¢çæå°ï¼å°±å¾é£åè§è½éå§â§; Check which corner has the least number of pieces that can fit and start from there. */,
+ "\xc0\xcb\xac\x64\xa8\x43\xad\xd3\xb7\x73\xa5\x58\xb2\x7b\xaa\xba\xa8\xa4\xa5\x48\xa4\xce\xb7\x73\xa5\x58\xb2\x7b\xaa\xba\xc3\xe4\xa1\x41\xac\xdd\xac\xdd\xa6\xb3\xa8\x53\xa6\xb3\xb8\x48\xa4\xf9\xa7\x6b\xa6\x58\xb8\xd3\xb3\x42" /* æª¢æ¥æ¯åæ°åºç¾çè§ä»¥åæ°åºç¾çéï¼ççææ²æç¢çå»å該è; Check each new corner and any new side for pieces that fit. */,
+ "\xa7\xda\xac\xdd\xa4\xa3\xa5\x58\xa8\xd3\xa6\xb3\xa8\xba\xa4\x40\xb6\xf4\xac\x4f\xa4\xa3\xbe\x41\xa6\x58\xaa\xba\xa1\x45" /* æçä¸åºä¾æé£ä¸å¡æ¯ä¸é©åçâ§; I don't see anything out of place. */,
},
};
@@ -803,11 +851,11 @@ const char *solicitStr[][NUM_SOLICIT_REPLIES] = {
},
// Chinese
{
- "Hey, Fox! Would you like a hint?",
- "Would you like some help?",
- "Umm...Umm...",
- "Psst! want a hint?",
- "I would have done this differently, you know."
+ "\xbc\x4b\xa1\x41\xaa\xb0\xaf\x57\xa1\x49\xa7\x41\xbb\xdd\xa4\xa3\xbb\xdd\xad\x6e\xb4\xa3\xa5\xdc\xa1\x48" /* å¿ï¼çç¸ï¼ä½ éä¸éè¦æç¤ºï¼; Hey, Fox! Would you like a hint? */,
+ "\xa7\x41\xbb\xdd\xad\x6e\xc0\xb0\xa7\x55\xb6\xdc\xa1\x48" /* ä½ éè¦å¹«å©åï¼; Would you like some help? */,
+ "\xb6\xe2\x2e\x2e\x2e\xb6\xe2\x2e\x2e\x2e" /* å¯...å¯...; Umm...Umm... */,
+ "\xb3\xde\xa1\x49\xad\x6e\xa4\xa3\xad\x6e\xb4\xa3\xa5\xdc\xa1\x48" /* åï¼è¦ä¸è¦æç¤ºï¼; Psst! want a hint? */,
+ "\xa7\xda\xb7\x7c\xa5\xce\xa4\xa3\xa6\x50\xaa\xba\xa4\xe8\xaa\x6b\xa8\xd3\xb0\xb5\xb3\x6f\xa5\xf3\xa8\xc6\xa1\x45" /* ææç¨ä¸åçæ¹æ³ä¾åéä»¶äºâ§; I would have done this differently, you know. */,
},
};
@@ -868,9 +916,9 @@ const char *sakkaStr[][NUM_SAKKA] = {
},
// Chinese
{
- "Hey, you're not supposed to help the applicants!",
- "Guys! This is supposed to be a test!",
- "C'mon fellows, that's not in the rules!"
+ "\xb3\xde\xa1\x41\xa7\x41\xa4\xa3\xa5\x69\xa5\x48\xc0\xb0\xa7\x55\xc0\xb3\xbc\x78\xaa\xba\xa4\x48\xa1\x49" /* åï¼ä½ ä¸å¯ä»¥å¹«å©æå¾µç人ï¼; Hey, you're not supposed to help the applicants! */,
+ "\xa6\xd1\xa5\x53\xa1\x41\xb3\x6f\xa5\x69\xac\x4f\xb4\xfa\xc5\xe7\xad\xfe\xa1\x49" /* èå
ï¼é坿¯æ¸¬é©åªï¼; Guys! This is supposed to be a test! */,
+ "\xa1\x41\xaa\x42\xa4\xcd\xa1\x41\xb3\x6f\xa5\x69\xac\x4f\xa4\xa3\xa6\x58\xb3\x57\xa9\x77\xaa\xba\xb3\xe1\xa1\x49" /* ï¼æåï¼é坿¯ä¸åè¦å®çåï¼; C'mon fellows, that's not in the rules! */
},
};
@@ -951,11 +999,11 @@ const char *whineStr[][NUM_WHINES] = {
},
// Chinese
{
- "Aww, c'mon Sakka!",
- "One hint won't hurt, will it?",
- "Sigh...",
- "I think that clipboard has gone to your head, Sakka!",
- "Well, I don't recall any specific rule against hinting."
+ "\xbe\xbe\xa1\x41\xa7\x4f\xb3\x6f\xbc\xcb\xa1\x41\xc2\xc4\xa5\x64\xa1\x49" /* å¢ï¼å¥é樣ï¼è©å¡ï¼; Aww, c'mon Sakka! */,
+ "\xa4\x40\xad\xd3\xa4\x70\xb4\xa3\xa5\xdc\xa4\xa3\xb7\x7c\xab\xe7\xbc\xcb\xb9\xc0\xa1\x49" /* ä¸åå°æç¤ºä¸æææ¨£åï¼; One hint won't hurt, will it? */,
+ "\xad\xfc\x2e\x2e\x2e" /* å...; Sigh... */,
+ "\xa7\xda\xac\xdd\xa7\x41\xac\x4f\xa4\xd3\xb9\x4c\xa9\xf3\xb9\x78\xa9\x54\xa4\x46\xa1\x41\xc2\xc4\xa5\x5b\xa1\x49" /* æçä½ æ¯å¤ªéæ¼é åºäºï¼è©å ï¼; I think that clipboard has gone to your head, Sakka! */,
+ "\xb6\xe2\xa1\x41\xa7\xda\xa4\xa3\xb0\x4f\xb1\x6f\xa6\xb3\xa8\xba\xb1\xf8\xb3\x57\xa9\x77\xa4\xa3\xad\xe3\xb4\xa3\xa5\xdc\xa1\x45" /* å¯ï¼æä¸è¨å¾æé£æ¢è¦å®ä¸åæç¤ºâ§; Well, I don't recall any specific rule against hinting. */,
},
};
@@ -1026,10 +1074,10 @@ const char *optionsStr[][4] = {
},
// Chinese
{
- "\"I'll do this puzzle later.\"",
- "\"Yes, I'd like a hint please.\"",
- "\"No, thank you, I'd like to try and solve it myself.\"",
- "I think the %s is in the wrong place."
+ "\xb5\xa5\xa4\x40\xa4\x55\xa7\xda\xa6\x41\xa8\xd3\xb8\xd1\xa8\x4d\xb3\x6f\xad\xd3\xc1\xbc\xc3\x44\xa1\x45" /* çä¸ä¸æåä¾è§£æ±ºéåè¬é¡â§; I'll do this puzzle later. */,
+ "\xbd\xd0\xb5\xb9\xa7\xda\xa4\x40\xa8\xc7\xb4\xa3\xa5\xdc\xa1\x45" /* è«çµ¦æä¸äºæç¤ºâ§; Yes, I'd like a hint please. */,
+ "\xa4\xa3\xa1\x41\xc1\xc2\xc1\xc2\xa7\x41\xa1\x45\xa7\xda\xb7\x51\xb8\xd5\xb8\xd5\xac\xdd\xa6\xdb\xa4\x76\xb8\xd1\xa8\x4d\xb3\x6f\xad\xd3\xb0\xdd\xc3\x44\xa1\x45" /* ä¸ï¼è¬è¬ä½ â§ææ³è©¦è©¦çèªå·±è§£æ±ºéååé¡â§; No, thank you, I'd like to try and solve it myself. */,
+ "\xa7\xda\xc4\xb1\xb1\x6f\x25\x73\xa9\xf1\xbf\xf9\xa6\x61\xa4\xe8\xa4\x46\xa1\x45" /* æè¦ºå¾%sæ¾é¯å°æ¹äºâ§; I think the %s is in the wrong place. */,
},
};
@@ -1222,23 +1270,19 @@ const IntroDialogue introDialogueCave1[][4] = {
} },
{ { // Chinese
0, // cave voice 0
- "We see the sky, we see the land, we see the water, "
- "and we wonder: Are we the only ones?"
+ "\xa9\xef\xc0\x59\xb1\xe6\xa4\xd1\x2c\xad\xc1\xad\xba\xa8\xa3\xa6\x61\x2c\xa9\xf1\xb2\xb4\xb1\xe6\xa5\x68\xa7\xf3\xa6\xb3\xa4\x6a\xae\xfc\xaa\x65\xac\x79\x2c\xa7\xda\xad\xcc\xa4\xa3\xb8\x54\xc3\x68\xba\xc3\x3a\xa7\xda\xad\xcc\xac\x4f\xb6\xc8\xa6\x73\xaa\xba\xb1\xda\xc3\xfe\xb6\xdc\xa1\x48" /* æ¬é æå¤©,俯é¦è¦å°,æ¾ç¼æå»æ´æå¤§æµ·æ²³æµ,æåä¸ç¦æ·ç:æåæ¯å
åçæé¡åï¼; We see the sky, we see the land, we see the water, */
},
{
1, // cave voice 1
- "Long before we came to exist, the humans ruled the "
- "Earth."
+ "\xab\xdc\xa4\x5b\xab\xdc\xa4\x5b\xa5\x48\xab\x65\x2c\xa7\xda\xad\xcc\xc1\xd9\xa8\x53\xa6\xb3\xa5\x58\xb2\x7b\xaa\xba\xae\xc9\xad\xd4\x2c\xa4\x48\xc3\xfe\xb4\x78\xba\xde\xa4\x46\xa6\x61\xb2\x79\x2e" /* å¾ä¹
å¾ä¹
以å,æåéæ²æåºç¾çæå,äººé¡æç®¡äºå°ç.; Long before we came to exist, the humans ruled the Earth. */
},
{
2, // cave voice 2
- "They made marvelous things, and moved whole "
- "mountains."
+ "\xa5\x4c\xad\xcc\xbb\x73\xb3\x79\xaf\xab\xa9\x5f\xaa\xba\xbe\xb9\xa8\xe3\x2c\xa6\xd3\xa5\x42\xb2\xbe\xa5\x68\xa9\xd2\xa6\xb3\xaa\xba\xb0\xaa\xa4\x73\xc2\x4f\xc0\xad\x2e" /* ä»å製é ç¥å¥çå¨å
·,èä¸ç§»å»ææçé«å±±å¢å¶º.; They made marvelous things, and moved whole mountains. */
},
{
3, // cave voice 3
- "They knew the Secret of Flight, the Secret of "
- "Happiness, and other secrets beyond our imagining."
+ "\xa5\x4c\xad\xcc\xa9\xfa\xa5\xd5\xad\xb8\xa6\xe6\xaa\xba\xaf\xb5\xb1\x4b\x2c\xa7\xd6\xbc\xd6\xaa\xba\xaf\xb5\xb1\x4b\x2c\xa5\x48\xa4\xce\xa8\xe4\xa5\xa6\xa7\xda\xad\xcc\xb5\x4c\xaa\x6b\xb7\x51\xb9\xb3\xaa\xba\xaf\xb5\xb1\x4b\x2e" /* ä»åæç½é£è¡çç§å¯,å¿«æ¨çç§å¯,以åå
¶å®æåç¡æ³æ³åçç§å¯.; They knew the Secret of Flight, the Secret of Happiness, and other secrets beyond our imagining. */
} },
};
@@ -1378,17 +1422,15 @@ const IntroDialogue introDialogueCave2[][3] = {
} },
{ { // Chinese
4, // cave voice 4
- "The humans also knew the Secret of Life, and they "
- "used it to give us the Four Great Gifts:"
+ "\xa4\x48\xc3\xfe\xa4\x5d\xaa\xbe\xb9\x44\xa5\xcd\xa9\x52\xaa\xba\xaf\xb5\xb1\x4b\x2c\xa6\xd3\xa5\x42\xa7\x51\xa5\xce\xa5\xa6\xb5\xb9\xa4\x46\xa7\xda\xad\xcc\xa5\x7c\xa4\x6a\xa4\xd1\xbd\xe1\xa1\x47" /* 人é¡ä¹ç¥éçå½çç§å¯,èä¸å©ç¨å®çµ¦äºæåå大天賦ï¼; The humans also knew the Secret of Life, and they used it to give us the Four Great Gifts: */
},
{
5, // cave voice 5
- "Thinking minds, feeling hearts, speaking mouths, and "
- "reaching hands."
+ "\xaf\xe0\xab\xe4\xaf\xe0\xb7\x51\xaa\xba\xb7\x4e\xa7\xd3\x2c\xb7\x50\xa8\xfc\xb1\xd3\xbe\x55\xaa\xba\xa4\xdf\xc6\x46\x2c\x20\xaf\xe0\xbb\xa1\xb5\xbd\xb9\x44\xaa\xba\xa4\x66\xa6\xde\x2c\xa5\x48\xa4\xce\xc6\x46\xa5\xa9\xa4\xe8\xab\x4b\xaa\xba\xc2\xf9\xa4\xe2\x2e" /* è½æè½æ³çæå¿,æåæé³çå¿é, è½èªªåéçå£è,以åéå·§æ¹ä¾¿çéæ.; Thinking minds, feeling hearts, speaking mouths, and reaching hands. */
},
{
6, // cave voice 6
- "We are their children."
+ "\xa7\xda\xad\xcc\xac\x4f\xa5\x4c\xad\xcc\xaa\xba\xa4\x6c\xae\x5d\x2e" /* æåæ¯ä»åçåå«.; We are their children. */
} },
};
@@ -1527,17 +1569,15 @@ const IntroDialogue introDialogueCave3[][3] = {
} },
{ { // Chinese
7, // cave voice 7
- "They taught us how to use our hands, and how to "
- "speak."
+ "\xa5\x4c\xad\xcc\xb1\xd0\xbe\xc9\xa7\xda\xad\xcc\xa6\x70\xa6\xf3\xa8\xcf\xa5\xce\xc2\xf9\xa4\xe2\x2c\xc1\xd9\xa6\xb3\xbb\xa1\xb8\xdc\xaa\xba\xa4\xe8\xaa\x6b\x2e" /* ä»åæå°æåå¦ä½ä½¿ç¨éæ,éæèªªè©±çæ¹æ³.; They taught us how to use our hands, and how to speak. */
},
{
8, // cave voice 8
- "They showed us the joy of using our minds."
+ "\xa5\x4c\xad\xcc\xa8\xcf\xa7\xda\xad\xcc\xa9\xfa\xa5\xd5\xa8\xcf\xa5\xce\xb7\x4e\xa7\xd3\xaa\xba\xb3\xdf\xae\xae\x2e" /* ä»å使æåæç½ä½¿ç¨æå¿çåæ
.; They showed us the joy of using our minds. */
},
{
9, // cave voice 9
- "They loved us, and when we were ready, they surely "
- "would have given us the Secret of Happiness."
+ "\xa5\x4c\xad\xcc\xb7\x52\xc5\x40\xa7\xda\xad\xcc\x2c\xb5\xa5\xa7\xda\xad\xcc\xb9\x77\xb3\xc6\xa6\x6e\xa4\x46\x2c\xa5\x4c\xad\xcc\xa4\x40\xa9\x77\xb7\x7c\xa7\x69\xb6\x44\xa7\xda\xad\xcc\xa7\xd6\xbc\xd6\xaa\xba\xaf\xb5\xb1\x4b\x2e" /* ä»åæè·æå,çæåé å好äº,ä»åä¸å®æå訴æåå¿«æ¨çç§å¯.; They loved us, and when we were ready, they surely would have given us the Secret of Happiness. */
} },
};
@@ -1722,21 +1762,19 @@ const IntroDialogue introDialogueCave4[][4] = {
} },
{ { // Chinese
10, // cave voice 10
- "And now we see the sky, the land, and the water that "
- "we are heirs to, and we wonder: why did they leave?"
+ "\xb5\x4d\xa6\xd3\xb2\x7b\xa6\x62\xa7\xda\xad\xcc\xac\xdd\xa8\xa3\xa7\xda\xad\xcc\xa9\xd2\xc4\x7e\xa9\xd3\xaa\xba\xa4\xd1\xaa\xc5\xa1\x42\xa4\x6a\xa6\x61\x2c\xa5\x48\xa4\xce\xae\xfc\xac\x76\x2c\xa7\xda\xad\xcc\xa4\x5d\xa6\x6e\xa9\x5f\xa1\x47\xa4\x48\xc3\xfe\xac\xb0\xa4\xb0\xbb\xf2\xc2\xf7\xb6\x7d\xa4\x46\xa1\x48" /* ç¶èç¾å¨æåçè¦æåæç¹¼æ¿ç天空ã大å°,以念·æ´,æåä¹å¥½å¥ï¼äººé¡çºä»éº¼é¢éäºï¼; And now we see the sky, the land, and the water that we are heirs to, and we wonder: why did they leave? */
},
{
11, // cave voice 11
- "Do they live still, in the stars? In the oceans "
- "depths? In the wind?"
+ "\xa5\x4c\xad\xcc\xac\x4f\xa4\xa3\xac\x4f\xa4\xb4\xb5\x4d\xa6\xed\xa6\x62\xa4\xd1\xa4\x57\xaa\xba\xac\x50\xb2\x79\xb8\xcc\xa1\x48\xa6\xed\xa6\x62\xae\xfc\xac\x76\xaa\xba\xb2\x60\xb3\x42\xa1\x48\xc1\xd9\xac\x4f\xa9\x7e\xa6\xed\xa6\x62\xad\xb7\xa4\xa4\xa1\x48" /* ä»åæ¯ä¸æ¯ä»ç¶ä½å¨å¤©ä¸çæç裡ï¼ä½å¨æµ·æ´çæ·±èï¼éæ¯å±
ä½å¨é¢¨ä¸ï¼; Do they live still, in the stars? In the oceans depths? In the wind? */
},
{
12, // cave voice 12
- "We wonder, was their fate good or evil?"
+ "\xa7\xda\xad\xcc\xb7\x51\xaa\xbe\xb9\x44\xa1\x47\xa5\x4c\xad\xcc\xaa\xba\xa9\x52\xb9\x42\xac\x4f\xa6\x6e\xac\x4f\xc3\x61\xa1\x48" /* æåæ³ç¥éï¼ä»åçå½éæ¯å¥½æ¯å£ï¼; We wonder, was their fate good or evil? */
},
{
13, // cave voice 13
- "And will we also share the same fate one day?"
+ "\xac\x4f\xa4\xa3\xac\x4f\xb1\x4e\xa8\xd3\xa7\xda\xad\xcc\xa4\x5d\xb7\x7c\xbe\x44\xb9\x4a\xa6\x50\xbc\xcb\xaa\xba\xa9\x52\xb9\x42\xa1\x48" /* æ¯ä¸æ¯å°ä¾æå乿éé忍£çå½éï¼ And will we also share the same fate one day? */
} },
};
@@ -1749,6 +1787,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xEE\xF4\xE9\xF7"},
// "ÐÑодÑÑеÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xCF\xF0\xEE\xE4\xFE\xF1\xE5\xF0"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xbb\x73\xa7\x40\xc1\x60\xba\xca" /* 製ä½ç¸½ç£ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
@@ -1757,6 +1796,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
// "УолÑÐµÑ Ð¥Ð¾Ñ
бÑÑкнеÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD3\xEE\xEB\xF2\xE5\xF0 \xD5\xEE\xF5\xE1\xF0\xFE\xEA\xED\xE5\xF0"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Executive Producer"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Ausf\201hrender Produzent"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Produttore Esecutivo"},
@@ -1765,6 +1805,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xEE\xF4\xE9\xF7 \xE1\xF4\xE5\xF2\xEC"},
// "ÐÑполниÑелÑнÑй пÑодÑÑеÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xC8\xF1\xEF\xEE\xEB\xED\xE8\xF2\xE5\xEB\xFC\xED\xFB\xE9 \xEF\xF0\xEE\xE4\xFE\xF1\xE5\xF0"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb0\xf5\xa6\xe6\xbb\x73\xa7\x40" /* å·è¡è£½ä½ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Robert McNally"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Robert McNally"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Robert McNally"},
@@ -1773,6 +1814,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Robert McNally"},
// "РобеÑÑ Ðакнелли"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD0\xEE\xE1\xE5\xF0\xF2 \xCC\xE0\xEA\xED\xE5\xEB\xEB\xE8"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Robert McNally"},
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsHeader, "2nd Executive Producer"},
{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsHeader, "Publisher"},
{Common::DE_DEU, kITECreditsNotWyrmKeep, kITECreditsHeader, "Herausgeber"},
@@ -1782,6 +1824,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsNotWyrmKeep, kITECreditsHeader, "\xF2\xF8\xE9\xEB\xE4"},
// "ÐздаÑелÑ"
{Common::RU_RUS, kITECreditsNotWyrmKeep, kITECreditsHeader, "\xC8\xE7\xE4\xE0\xF2\xE5\xEB\xFC"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xa5\x58\xab\x7e\xa4\x48" /* åºå人 */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
@@ -1789,7 +1832,8 @@ const IntroCredit creditsValley[] = {
{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
// "Ðжон Ðан Ðанегем"
- {Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xC4\xE6\xEE\xED \xC2\xE0\xED \xCA\xE0\xED\xE5\xE3\xE5\xEC"}
+ {Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xC4\xE6\xEE\xED \xC2\xE0\xED \xCA\xE0\xED\xE5\xE3\xE5\xEC"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
};
const IntroCredit creditsTreeHouse1[] = {
@@ -1801,6 +1845,7 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xF2\xE9\xF6\xE5\xE1 \xE4\xEE\xF9\xE7\xF7"},
// "Ðизайн игÑÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xC4\xE8\xE7\xE0\xE9\xED \xE8\xE3\xF0\xFB"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb9\x43\xc0\xb8\xb3\x5d\xad\x70" /* éæ²è¨è¨ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
@@ -1809,6 +1854,7 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
// "Талин, Ðжо ÐиÑÑ, РобеÑÑ Ðакнелли"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD2\xE0\xEB\xE8\xED, \xC4\xE6\xEE \xCF\xE8\xF0\xF1, \xD0\xEE\xE1\xE5\xF0\xF2 \xCC\xE0\xEA\xED\xE5\xEB\xEB\xE8"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "and Carolly Hauksdottir"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "und Carolly Hauksdottir"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "e Carolly Hauksdottir"},
@@ -1817,6 +1863,7 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "and Carolly Hauksdottir"},
// "и ÐÑÑолли Ð¥ÑйÑ
ÑдоÑÑиÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xE8 \xCA\xFD\xF0\xEE\xEB\xEB\xE8 \xD5\xB8\xE9\xF5\xF1\xE4\xEE\xF2\xF2\xE8\xF0"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "\xa4\xce Carolly Hauksdottir" /* å Carolly Hauksdottir */},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Screenplay and Dialog"},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein, and Bill Rotsler"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Geschichte und Dialoge"},
@@ -1833,12 +1880,17 @@ const IntroCredit creditsTreeHouse1[] = {
// "СÑенаÑий и диалоги"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xD1\xF6\xE5\xED\xE0\xF0\xE8\xE9 \xE8 \xE4\xE8\xE0\xEB\xEE\xE3\xE8"},
// "РобеÑÑ Ðе, Ðен УÑйн и Ðилл РоÑÑлеÑ"
- {Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD0\xEE\xE1\xE5\xF0\xF2 \xCB\xE5, \xCB\xE5\xED \xD3\xFD\xE9\xED \xE8 \xC1\xE8\xEB\xEB \xD0\xEE\xF2\xF1\xEB\xE5\xF0"}
+ {Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD0\xEE\xE1\xE5\xF0\xF2 \xCB\xE5, \xCB\xE5\xED \xD3\xFD\xE9\xED \xE8 \xC1\xE8\xEB\xEB \xD0\xEE\xF2\xF1\xEB\xE5\xF0"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb5\x65\xad\xb1\xa4\xce\xb9\xef\xa5\xd5" /* ç«é¢åå°ç½ */},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "\xa4\xce Bill Rotsler" /* å Bill Rotsler */},
};
const IntroCredit creditsTreeHouse2[] = {
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsHeader, "Art Direction"},
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsText, "Allison Hershey"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xac\xfc\xa4\x75\xab\xfc\xbe\xc9" /* ç¾å·¥æå° */},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Allison Hershey"},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Art"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Grafiken"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Grafica"},
@@ -1905,6 +1957,7 @@ const IntroCredit creditsFairePath1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xF4\xE9\xFA\xE5\xE7"},
// "ÐÑогÑаммиÑование"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xCF\xF0\xEE\xE3\xF0\xE0\xEC\xEC\xE8\xF0\xEE\xE2\xE0\xED\xE8\xE5"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb5\x7b\xa6\xa1\xb3\x5d\xad\x70" /* ç¨å¼è¨è¨ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
@@ -1921,6 +1974,7 @@ const IntroCredit creditsFairePath1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Joe Burks and Robert Wiggins"},
// "Ðжо ÐÑÑÐºÑ Ð¸ РобеÑÑ ÐиггинÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xC4\xE6\xEE \xC1\xF3\xF0\xEA\xF1 \xE8 \xD0\xEE\xE1\xE5\xF0\xF2 \xC2\xE8\xE3\xE3\xE8\xED\xF1"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Joe Burks \xa4\xce Robert Wiggins" /* Joe Burks å Robert Wiggins */},
{Common::EN_ANY, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Additional Programming"},
{Common::FR_FRA, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Programmeur Additionnel"},
{Common::HE_ISR, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "\xF4\xE9\xFA\xE5\xE7 \xF0\xE5\xF1\xF3"},
@@ -1941,6 +1995,7 @@ const IntroCredit creditsFairePath1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xEE\xE5\xE6\xE9\xF7\xE4 \xE5\xF6\xEC\xE9\xEC\xE9\xED"},
// "ÐÑзÑка и звÑк"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xCC\xF3\xE7\xFB\xEA\xE0 \xE8 \xE7\xE2\xF3\xEA"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xCC\xF3\xE7\xFB\xEA\xE0 \xE8 \xE7\xE2\xF3\xEA" "\xad\xb5\xbc\xd6\xa4\xce\xad\xb5\xae\xc4" /* 鳿¨å鳿 */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Matt Nathan"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Matt Nathan"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Matt Nathan"},
@@ -1948,7 +2003,8 @@ const IntroCredit creditsFairePath1[] = {
{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Matt Nathan"},
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Matt Nathan"},
// "ÐÑÑÑ ÐаÑан"
- {Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xCC\xFD\xF2\xF2 \xCD\xE0\xF2\xE0\xED"}
+ {Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xCC\xFD\xF2\xF2 \xCD\xE0\xF2\xE0\xED"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Matt Nathan"},
};
const IntroCredit creditsFairePath2[] = {
@@ -1960,12 +2016,14 @@ const IntroCredit creditsFairePath2[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xE1\xE9\xEE\xE5\xE9"},
// "ÐиÑекÑÐ¾Ñ Ð¿ÑоекÑа"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xC4\xE8\xF0\xE5\xEA\xF2\xEE\xF0 \xEF\xF0\xEE\xE5\xEA\xF2\xE0"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb9\x43\xc0\xb8\xbe\xc9\xba\x74" /* 鿲尿¼ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Talin"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Talin"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Talin"},
{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Talin"},
{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Talin"},
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Talin"},
+ {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Talin"},
// "Талин"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD2\xE0\xEB\xE8\xED"},
{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Traduction Francaise"},
diff --git a/engines/saga/itedata.h b/engines/saga/itedata.h
index a74eb0e4f33..103890b67b8 100644
--- a/engines/saga/itedata.h
+++ b/engines/saga/itedata.h
@@ -137,11 +137,11 @@ extern const IntroDialogue introDialogueCave2[][3];
extern const IntroDialogue introDialogueCave3[][3];
extern const IntroDialogue introDialogueCave4[][4];
-extern const IntroCredit creditsValley[43];
-extern const IntroCredit creditsTreeHouse1[36];
-extern const IntroCredit creditsTreeHouse2[51];
-extern const IntroCredit creditsFairePath1[45];
-extern const IntroCredit creditsFairePath2[21];
+extern const IntroCredit creditsValley[49];
+extern const IntroCredit creditsTreeHouse1[42];
+extern const IntroCredit creditsTreeHouse2[53];
+extern const IntroCredit creditsFairePath1[49];
+extern const IntroCredit creditsFairePath2[23];
extern const IntroCredit creditsTent[6];
} // End of namespace Saga
Commit: 396f14105cede9f2e027bd6e178c0a71dc31d4e7
https://github.com/scummvm/scummvm/commit/396f14105cede9f2e027bd6e178c0a71dc31d4e7
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Replace Chinese floppy language id from Simplified to Traditional
Changed paths:
engines/saga/detection_tables.h
engines/saga/font.cpp
engines/saga/interface.cpp
engines/saga/itedata.cpp
engines/saga/metaengine.cpp
engines/saga/saga.cpp
diff --git a/engines/saga/detection_tables.h b/engines/saga/detection_tables.h
index 48154e9ffa7..76643f99be0 100644
--- a/engines/saga/detection_tables.h
+++ b/engines/saga/detection_tables.h
@@ -1178,7 +1178,7 @@ static const SAGAGameDescription gameDescriptions[] = {
{"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef", 281071},
AD_LISTEND
},
- Common::ZH_CHN,
+ Common::ZH_TWN,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOSPEECH)
diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp
index 8f314b535b9..e70b26c64f6 100644
--- a/engines/saga/font.cpp
+++ b/engines/saga/font.cpp
@@ -153,7 +153,7 @@ DefaultFont::DefaultFont(SagaEngine *vm) : Font(vm), _fontMapping(0), _chineseFo
loadFont(&_fonts[i], _vm->getFontDescription(i)->fontResourceId);
}
- if (_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_CHN)
+ if (_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_TWN)
loadChineseFontITE("ite.fnt");
}
diff --git a/engines/saga/interface.cpp b/engines/saga/interface.cpp
index e37d84a0860..a876a1a8a87 100644
--- a/engines/saga/interface.cpp
+++ b/engines/saga/interface.cpp
@@ -229,7 +229,7 @@ Interface::Interface(SagaEngine *vm) : _vm(vm) {
_mainPanel.y = _vm->getDisplayInfo().mainPanelYOffset;
_mainPanel.currentButton = nullptr;
- if (_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_CHN) {
+ if (_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_TWN) {
ByteArray n;
static const int kSkipLines = 4;
_mainPanel.imageHeight -= kSkipLines;
@@ -772,7 +772,7 @@ void Interface::drawVerbPanel(PanelButton* panelButton) {
point.y = _mainPanel.y + panelButton->yOffset;
// TODO: Find the correct sprite for Chinese version.
- if (!(_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_CHN)) {
+ if (!(_vm->getGameId() == GID_ITE && _vm->getLanguage() == Common::ZH_TWN)) {
_vm->_sprite->draw(_mainPanel.sprites, spriteNumber, point, 256);
}
diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index 9b5693f165c..47f04bca53f 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -1787,7 +1787,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xEE\xF4\xE9\xF7"},
// "ÐÑодÑÑеÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xCF\xF0\xEE\xE4\xFE\xF1\xE5\xF0"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xbb\x73\xa7\x40\xc1\x60\xba\xca" /* 製ä½ç¸½ç£ */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xbb\x73\xa7\x40\xc1\x60\xba\xca" /* 製ä½ç¸½ç£ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
@@ -1796,7 +1796,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
// "УолÑÐµÑ Ð¥Ð¾Ñ
бÑÑкнеÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD3\xEE\xEB\xF2\xE5\xF0 \xD5\xEE\xF5\xE1\xF0\xFE\xEA\xED\xE5\xF0"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Executive Producer"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Ausf\201hrender Produzent"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Produttore Esecutivo"},
@@ -1805,7 +1805,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xEE\xF4\xE9\xF7 \xE1\xF4\xE5\xF2\xEC"},
// "ÐÑполниÑелÑнÑй пÑодÑÑеÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xC8\xF1\xEF\xEE\xEB\xED\xE8\xF2\xE5\xEB\xFC\xED\xFB\xE9 \xEF\xF0\xEE\xE4\xFE\xF1\xE5\xF0"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb0\xf5\xa6\xe6\xbb\x73\xa7\x40" /* å·è¡è£½ä½ */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xb0\xf5\xa6\xe6\xbb\x73\xa7\x40" /* å·è¡è£½ä½ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Robert McNally"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Robert McNally"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Robert McNally"},
@@ -1814,7 +1814,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Robert McNally"},
// "РобеÑÑ Ðакнелли"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD0\xEE\xE1\xE5\xF0\xF2 \xCC\xE0\xEA\xED\xE5\xEB\xEB\xE8"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Robert McNally"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Robert McNally"},
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsHeader, "2nd Executive Producer"},
{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsHeader, "Publisher"},
{Common::DE_DEU, kITECreditsNotWyrmKeep, kITECreditsHeader, "Herausgeber"},
@@ -1824,7 +1824,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsNotWyrmKeep, kITECreditsHeader, "\xF2\xF8\xE9\xEB\xE4"},
// "ÐздаÑелÑ"
{Common::RU_RUS, kITECreditsNotWyrmKeep, kITECreditsHeader, "\xC8\xE7\xE4\xE0\xF2\xE5\xEB\xFC"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xa5\x58\xab\x7e\xa4\x48" /* åºå人 */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xa5\x58\xab\x7e\xa4\x48" /* åºå人 */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
@@ -1833,7 +1833,7 @@ const IntroCredit creditsValley[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
// "Ðжон Ðан Ðанегем"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xC4\xE6\xEE\xED \xC2\xE0\xED \xCA\xE0\xED\xE5\xE3\xE5\xEC"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"},
};
const IntroCredit creditsTreeHouse1[] = {
@@ -1845,7 +1845,7 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xF2\xE9\xF6\xE5\xE1 \xE4\xEE\xF9\xE7\xF7"},
// "Ðизайн игÑÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xC4\xE8\xE7\xE0\xE9\xED \xE8\xE3\xF0\xFB"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb9\x43\xc0\xb8\xb3\x5d\xad\x70" /* éæ²è¨è¨ */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xb9\x43\xc0\xb8\xb3\x5d\xad\x70" /* éæ²è¨è¨ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
@@ -1854,7 +1854,7 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
// "Талин, Ðжо ÐиÑÑ, РобеÑÑ Ðакнелли"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD2\xE0\xEB\xE8\xED, \xC4\xE6\xEE \xCF\xE8\xF0\xF1, \xD0\xEE\xE1\xE5\xF0\xF2 \xCC\xE0\xEA\xED\xE5\xEB\xEB\xE8"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "and Carolly Hauksdottir"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "und Carolly Hauksdottir"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "e Carolly Hauksdottir"},
@@ -1863,7 +1863,7 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "and Carolly Hauksdottir"},
// "и ÐÑÑолли Ð¥ÑйÑ
ÑдоÑÑиÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xE8 \xCA\xFD\xF0\xEE\xEB\xEB\xE8 \xD5\xB8\xE9\xF5\xF1\xE4\xEE\xF2\xF2\xE8\xF0"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "\xa4\xce Carolly Hauksdottir" /* å Carolly Hauksdottir */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "\xa4\xce Carolly Hauksdottir" /* å Carolly Hauksdottir */},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Screenplay and Dialog"},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein, and Bill Rotsler"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Geschichte und Dialoge"},
@@ -1881,16 +1881,16 @@ const IntroCredit creditsTreeHouse1[] = {
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xD1\xF6\xE5\xED\xE0\xF0\xE8\xE9 \xE8 \xE4\xE8\xE0\xEB\xEE\xE3\xE8"},
// "РобеÑÑ Ðе, Ðен УÑйн и Ðилл РоÑÑлеÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD0\xEE\xE1\xE5\xF0\xF2 \xCB\xE5, \xCB\xE5\xED \xD3\xFD\xE9\xED \xE8 \xC1\xE8\xEB\xEB \xD0\xEE\xF2\xF1\xEB\xE5\xF0"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb5\x65\xad\xb1\xa4\xce\xb9\xef\xa5\xd5" /* ç«é¢åå°ç½ */},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "\xa4\xce Bill Rotsler" /* å Bill Rotsler */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xb5\x65\xad\xb1\xa4\xce\xb9\xef\xa5\xd5" /* ç«é¢åå°ç½ */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "\xa4\xce Bill Rotsler" /* å Bill Rotsler */},
};
const IntroCredit creditsTreeHouse2[] = {
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsHeader, "Art Direction"},
{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsText, "Allison Hershey"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xac\xfc\xa4\x75\xab\xfc\xbe\xc9" /* ç¾å·¥æå° */},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Allison Hershey"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xac\xfc\xa4\x75\xab\xfc\xbe\xc9" /* ç¾å·¥æå° */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Allison Hershey"},
{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Art"},
{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Grafiken"},
{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Grafica"},
@@ -1957,7 +1957,7 @@ const IntroCredit creditsFairePath1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xF4\xE9\xFA\xE5\xE7"},
// "ÐÑогÑаммиÑование"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xCF\xF0\xEE\xE3\xF0\xE0\xEC\xEC\xE8\xF0\xEE\xE2\xE0\xED\xE8\xE5"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb5\x7b\xa6\xa1\xb3\x5d\xad\x70" /* ç¨å¼è¨è¨ */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xb5\x7b\xa6\xa1\xb3\x5d\xad\x70" /* ç¨å¼è¨è¨ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
@@ -1974,7 +1974,7 @@ const IntroCredit creditsFairePath1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Joe Burks and Robert Wiggins"},
// "Ðжо ÐÑÑÐºÑ Ð¸ РобеÑÑ ÐиггинÑ"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xC4\xE6\xEE \xC1\xF3\xF0\xEA\xF1 \xE8 \xD0\xEE\xE1\xE5\xF0\xF2 \xC2\xE8\xE3\xE3\xE8\xED\xF1"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Joe Burks \xa4\xce Robert Wiggins" /* Joe Burks å Robert Wiggins */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Joe Burks \xa4\xce Robert Wiggins" /* Joe Burks å Robert Wiggins */},
{Common::EN_ANY, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Additional Programming"},
{Common::FR_FRA, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Programmeur Additionnel"},
{Common::HE_ISR, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "\xF4\xE9\xFA\xE5\xE7 \xF0\xE5\xF1\xF3"},
@@ -1995,7 +1995,7 @@ const IntroCredit creditsFairePath1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xEE\xE5\xE6\xE9\xF7\xE4 \xE5\xF6\xEC\xE9\xEC\xE9\xED"},
// "ÐÑзÑка и звÑк"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xCC\xF3\xE7\xFB\xEA\xE0 \xE8 \xE7\xE2\xF3\xEA"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xCC\xF3\xE7\xFB\xEA\xE0 \xE8 \xE7\xE2\xF3\xEA" "\xad\xb5\xbc\xd6\xa4\xce\xad\xb5\xae\xc4" /* 鳿¨å鳿 */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xCC\xF3\xE7\xFB\xEA\xE0 \xE8 \xE7\xE2\xF3\xEA" "\xad\xb5\xbc\xd6\xa4\xce\xad\xb5\xae\xc4" /* 鳿¨å鳿 */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Matt Nathan"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Matt Nathan"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Matt Nathan"},
@@ -2004,7 +2004,7 @@ const IntroCredit creditsFairePath1[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Matt Nathan"},
// "ÐÑÑÑ ÐаÑан"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xCC\xFD\xF2\xF2 \xCD\xE0\xF2\xE0\xED"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Matt Nathan"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Matt Nathan"},
};
const IntroCredit creditsFairePath2[] = {
@@ -2016,14 +2016,14 @@ const IntroCredit creditsFairePath2[] = {
{Common::HE_ISR, kITECreditsAny, kITECreditsHeader, "\xE1\xE9\xEE\xE5\xE9"},
// "ÐиÑекÑÐ¾Ñ Ð¿ÑоекÑа"
{Common::RU_RUS, kITECreditsAny, kITECreditsHeader, "\xC4\xE8\xF0\xE5\xEA\xF2\xEE\xF0 \xEF\xF0\xEE\xE5\xEA\xF2\xE0"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsHeader, "\xb9\x43\xc0\xb8\xbe\xc9\xba\x74" /* 鿲尿¼ */},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsHeader, "\xb9\x43\xc0\xb8\xbe\xc9\xba\x74" /* 鿲尿¼ */},
{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Talin"},
{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Talin"},
{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Talin"},
{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Talin"},
{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Talin"},
{Common::HE_ISR, kITECreditsAny, kITECreditsText, "Talin"},
- {Common::ZH_CHN, kITECreditsAny, kITECreditsText, "Talin"},
+ {Common::ZH_TWN, kITECreditsAny, kITECreditsText, "Talin"},
// "Талин"
{Common::RU_RUS, kITECreditsAny, kITECreditsText, "\xD2\xE0\xEB\xE8\xED"},
{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Traduction Francaise"},
diff --git a/engines/saga/metaengine.cpp b/engines/saga/metaengine.cpp
index 07601a34d91..043f69700f4 100644
--- a/engines/saga/metaengine.cpp
+++ b/engines/saga/metaengine.cpp
@@ -253,7 +253,7 @@ bool SagaEngine::initGame() {
const GameDisplayInfo &SagaEngine::getDisplayInfo() {
switch (_gameDescription->gameId) {
case GID_ITE:
- if (getLanguage() == Common::ZH_CHN)
+ if (getLanguage() == Common::ZH_TWN)
return ITE_DisplayInfo_ZH;
return ITE_DisplayInfo;
#ifdef ENABLE_IHNM
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index 497b077c0a6..6a1f9e9a0d4 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -488,7 +488,7 @@ int SagaEngine::getLanguageIndex() {
return 6;
case Common::HE_ISR:
return 7;
- case Common::ZH_CHN:
+ case Common::ZH_TWN:
return 8;
default:
return 0;
Commit: c43e8f2cec921b063bb2dd4d25e7bb368ce148d4
https://github.com/scummvm/scummvm/commit/c43e8f2cec921b063bb2dd4d25e7bb368ce148d4
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Fix inconsistencies in big5 variable use
Changed paths:
engines/saga/font.cpp
diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp
index e70b26c64f6..30d60095210 100644
--- a/engines/saga/font.cpp
+++ b/engines/saga/font.cpp
@@ -337,7 +337,7 @@ int DefaultFont::getStringWidth(FontId fontId, const char *text, size_t count, F
const byte *txt;
FontData *font = getFont(fontId);
txt = (const byte *) text;
- byte isBig5 = _chineseFont ? true : false;
+ bool isBig5 = !!_chineseFont;
for (ct = count; *txt && (!count || ct > 0); txt++, ct--) {
ch = *txt & 0xFFU;
@@ -504,7 +504,7 @@ void DefaultFont::outFont(const FontStyle &drawFont, const char *text, size_t co
textPointer = (const byte *)text;
ct = count;
- byte isBig5 = _chineseFont ? true : false;
+ bool isBig5 = !!_chineseFont;
// Draw string one character at a time, maximum of 'draw_str'_ct
// characters, or no limit if 'draw_str_ct' is 0
Commit: c61ec5664fb2c904e6eb8c436e0c0121dff5e80f
https://github.com/scummvm/scummvm/commit/c61ec5664fb2c904e6eb8c436e0c0121dff5e80f
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Fix position of asterisk in pointer declaration
Changed paths:
engines/saga/font.cpp
diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp
index 30d60095210..59d62a2d806 100644
--- a/engines/saga/font.cpp
+++ b/engines/saga/font.cpp
@@ -469,7 +469,7 @@ int DefaultFont::getHeight(FontId fontId, const char *text) {
if (!_chineseFont || _chineseFontHeight < singleByteHeight)
return singleByteHeight;
- for (const byte* textPointer = (const byte *)text; *textPointer; textPointer++)
+ for (const byte *textPointer = (const byte *)text; *textPointer; textPointer++)
if (*textPointer & 0x80)
return _chineseFontHeight;
Commit: e1aa80ec9389921c526a393828c5742d8e70f0e3
https://github.com/scummvm/scummvm/commit/e1aa80ec9389921c526a393828c5742d8e70f0e3
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-11-14T00:39:47+01:00
Commit Message:
SAGA: Add TODOs for missing Chinese strings
Changed paths:
engines/saga/itedata.cpp
diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index 47f04bca53f..ec569db07a6 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -591,17 +591,17 @@ const char *ITEinterfaceTextStrings[][53] = {
"\xb8\xfc\xa4\x4a\xa6\xa8\xa5\x5c" /* è¼å
¥æå, Load Successful! */,
"\xbd\xd0\xbf\xe9\xa4\x4a\xa6\x73\xc0\xc9\xa6\x57\xba\xd9" /* è«è¼¸å
¥åæªå稱, Enter Save Game Name */,
- "Give %s to %s",
- "Use %s with %s",
+ "Give %s to %s", // TODO: Find string for this
+ "Use %s with %s", // TODO: Find string for this
"[New Save Game]",
- "I can't pick that up.",
- "I see nothing special about it.",
- "There's no place to open it.",
- "There's no opening to close.",
- "I don't know how to do that.",
- "Show Dialog",
+ "I can't pick that up.", // TODO: Find string for this
+ "I see nothing special about it.", // TODO: Find string for this
+ "There's no place to open it.", // TODO: Find string for this
+ "There's no opening to close.", // TODO: Find string for this
+ "I don't know how to do that.", // TODO: Find string for this
+ "Show Dialog", // TODO: Find string for this
"\xa7\x51\xa4\xd2\xaa\xba\xa6\x5e\xb5\xaa\xac\x4f\xa4\xb0\xbb\xf2\xa1\x48" /* å©å¤«çåçæ¯ä»éº¼ï¼; What is Rif's reply? */,
- "Loading a saved game"
+ "Loading a saved game" // TODO: Find string for this
},
};
More information about the Scummvm-git-logs
mailing list