[Scummvm-git-logs] scummvm master -> 9a131c6cb1038a3f39158e36f70c89af1a1b80df

sev- sev at scummvm.org
Tue May 19 10:36:03 UTC 2020


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:
4ebfe85f3d SAGA: add PC-98 CD version of Inherit the Earth
a87d8ca778 SAGA: skip music for PC-98 version of ITE
90e6bd8e3d SAGA: add support for PC-98 ITE voices
925e9e6fbc SAGA: (ITE/PC98) - digital sfx fine tuning
c22d9ea086 SAGA: (ITE/PC98) - add music support
4189c2acfa SAGA: add introduction text for Japanese versions
6327fbd129 SAGA: add Japanese puzzle strings
8fc6187c5e SAGA: add menu Japanese menu strings
9a131c6cb1 SAGA: store Japanese strings as escaped Shift JIS


Commit: 4ebfe85f3dec82b2e13aa62e9d1b710a00d89c24
    https://github.com/scummvm/scummvm/commit/4ebfe85f3dec82b2e13aa62e9d1b710a00d89c24
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: add PC-98 CD version of Inherit the Earth

Changed paths:
    engines/saga/detection_tables.h
    engines/saga/saga.h


diff --git a/engines/saga/detection_tables.h b/engines/saga/detection_tables.h
index 31baaaaae4..afae9fdc4c 100644
--- a/engines/saga/detection_tables.h
+++ b/engines/saga/detection_tables.h
@@ -599,6 +599,30 @@ static const SAGAGameDescription gameDescriptions[] = {
 	},
 #endif
 
+	// Inherit the Earth - Japanese PC-98 CD version
+ 	{
+ 		{
+ 			"ite",
+ 			"CD",
+ 			{
+			 	{"ite.rsc",		GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54", 8921524},
+			 	{"scripts.rsc",	GAME_SCRIPTFILE, "875ffcf269efc49088423fc4572859ae", 477849},
+			 	AD_LISTEND
+ 			},
+ 			Common::JA_JPN,
+ 			Common::kPlatformPC98,
+ 			ADGF_CD,
+ 			GUIO0()
+ 		},
+ 		GID_ITE,
+ 		0,
+ 		ITE_DEFAULT_SCENE,
+ 		&ITE_Resources,
+ 		ARRAYSIZE(ITE_GameFonts),
+ 		ITE_GameFonts,
+ 		NULL,
+ 	},
+
 	// ITE floppy versions ////////////////////////////////////////////////////////////////////////////////////
 
 	// Inherit the earth - German Floppy version
diff --git a/engines/saga/saga.h b/engines/saga/saga.h
index f69c4893e1..235a4d0eaa 100644
--- a/engines/saga/saga.h
+++ b/engines/saga/saga.h
@@ -140,7 +140,8 @@ enum GameFeatures {
 	GF_ITE_DOS_DEMO      = 1 << 1,
 	GF_EXTRA_ITE_CREDITS = 1 << 2,
 	GF_8BIT_UNSIGNED_PCM = 1 << 3,
-	GF_IHNM_COLOR_FIX    = 1 << 4
+	GF_IHNM_COLOR_FIX    = 1 << 4,
+	GF_ITE_PC98          = 1 << 5
 };
 
 enum VerbTypeIds {


Commit: a87d8ca778483e3dae76a640ea07005675aa0bd6
    https://github.com/scummvm/scummvm/commit/a87d8ca778483e3dae76a640ea07005675aa0bd6
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: skip music for PC-98 version of ITE

The PC-98 version of ITE has music in a different format I haven't
identified yet, so normal music handling code chokes on it. For now,
simply skipping all music allows the game to run.

Changed paths:
    engines/saga/music.cpp


diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp
index 2d3566c222..f70d7e52cb 100644
--- a/engines/saga/music.cpp
+++ b/engines/saga/music.cpp
@@ -284,6 +284,12 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
 	if (isPlaying() && _trackNumber == resourceId)
 		return;
 
+	// PC-98 version features music in a different, unidentified format.
+	if (_vm->getFeatures() & GF_ITE_PC98) {
+		warning("TODO: Music::play %d, %d for ITE PC-98", resourceId, flags);
+		return;
+	}
+
 	if (_vm->getFeatures() & GF_ITE_DOS_DEMO) {
 		warning("TODO: Music::play %d, %d for ITE DOS demo", resourceId, flags);
 		return;


Commit: 90e6bd8e3d7dcc510580587ed514cf09b10503ed
    https://github.com/scummvm/scummvm/commit/90e6bd8e3d7dcc510580587ed514cf09b10503ed
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: add support for PC-98 ITE voices

Changed paths:
    engines/saga/sndres.cpp


diff --git a/engines/saga/sndres.cpp b/engines/saga/sndres.cpp
index b8d03c9c08..02735e80b6 100644
--- a/engines/saga/sndres.cpp
+++ b/engines/saga/sndres.cpp
@@ -288,6 +288,8 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff
 		} else if (_vm->getFeatures() & GF_8BIT_UNSIGNED_PCM) {	// older ITE demos
 			rawFlags |= Audio::FLAG_UNSIGNED;
 			rawFlags &= ~Audio::FLAG_16BITS;
+		} else if (_vm->getFeatures() & GF_ITE_PC98) { // PC-98 versions are 8-bit signed
+			rawFlags &= ~Audio::FLAG_16BITS;
 		} else if (!uncompressedSound && !scumm_stricmp(context->fileName(), "voicesd.rsc")) {
 			// Voice files in newer ITE demo versions are OKI ADPCM (VOX) encoded.
 			resourceType = kSoundVOX;
@@ -310,7 +312,15 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff
 		if ((soundResourceLength & 1) && (rawFlags & Audio::FLAG_16BITS))
 			soundResourceLength &= ~1;
 
-		Audio::SeekableAudioStream *audStream = Audio::makeRawStream(READ_STREAM(soundResourceLength), 22050, rawFlags);
+		int frequency;
+		// PC-98 is 8-bit PCM at a lower frequency than other releases.
+		if (_vm->getFeatures() & GF_ITE_PC98) {
+			frequency = 10000;
+		} else {
+			frequency = 22050;
+		}
+
+		Audio::SeekableAudioStream *audStream = Audio::makeRawStream(READ_STREAM(soundResourceLength), frequency, rawFlags);
 		buffer.stream = audStream;
 		buffer.streamLength = audStream->getLength();
 		result = true;


Commit: 925e9e6fbc8b2cf0483d9c47f2e0da4527cf5fce
    https://github.com/scummvm/scummvm/commit/925e9e6fbc8b2cf0483d9c47f2e0da4527cf5fce
Author: athrxx (athrxx at scummvm.org)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: (ITE/PC98) - digital sfx fine tuning

The experimental/guessed approach works fair enough, but there is a bit more to it.

I also removed the GF_ITE_PC98, since the platform is not exactly a game feature and can just as well be queried via _vm->getPlatform().

This commit doesn't fix the missing speech during the chess game sequence. Might be a resource issue. I haven't looked into it...

Changed paths:
    engines/saga/music.cpp
    engines/saga/saga.h
    engines/saga/sndres.cpp


diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp
index f70d7e52cb..9853c3057c 100644
--- a/engines/saga/music.cpp
+++ b/engines/saga/music.cpp
@@ -285,7 +285,7 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
 		return;
 
 	// PC-98 version features music in a different, unidentified format.
-	if (_vm->getFeatures() & GF_ITE_PC98) {
+	if (_vm->getPlatform() == Common::kPlatformPC98) {
 		warning("TODO: Music::play %d, %d for ITE PC-98", resourceId, flags);
 		return;
 	}
diff --git a/engines/saga/saga.h b/engines/saga/saga.h
index 235a4d0eaa..f69c4893e1 100644
--- a/engines/saga/saga.h
+++ b/engines/saga/saga.h
@@ -140,8 +140,7 @@ enum GameFeatures {
 	GF_ITE_DOS_DEMO      = 1 << 1,
 	GF_EXTRA_ITE_CREDITS = 1 << 2,
 	GF_8BIT_UNSIGNED_PCM = 1 << 3,
-	GF_IHNM_COLOR_FIX    = 1 << 4,
-	GF_ITE_PC98          = 1 << 5
+	GF_IHNM_COLOR_FIX    = 1 << 4
 };
 
 enum VerbTypeIds {
diff --git a/engines/saga/sndres.cpp b/engines/saga/sndres.cpp
index 02735e80b6..ab4468edde 100644
--- a/engines/saga/sndres.cpp
+++ b/engines/saga/sndres.cpp
@@ -188,7 +188,8 @@ enum GameSoundType {
 	kSoundFLAC = 6,
 	kSoundAIFF = 7,
 	kSoundShorten = 8,
-	kSoundMacSND = 9
+	kSoundMacSND = 9,
+	kSoundPC98 = 10
 };
 
 // Use a macro to read in the sound data based on if we actually want to buffer it or not
@@ -275,7 +276,6 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff
 				resourceType = kSoundFLAC;
 			}
 		}
-
 	}
 
 	// Default sound type is 16-bit signed PCM, used in ITE
@@ -285,11 +285,11 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff
 		if (context->fileType() & GAME_MACBINARY) {
 			// ITE Mac has sound in the Mac snd format
 			resourceType = kSoundMacSND;
+		} else if (_vm->getPlatform() == Common::kPlatformPC98) {
+			resourceType = kSoundPC98;
 		} else if (_vm->getFeatures() & GF_8BIT_UNSIGNED_PCM) {	// older ITE demos
 			rawFlags |= Audio::FLAG_UNSIGNED;
 			rawFlags &= ~Audio::FLAG_16BITS;
-		} else if (_vm->getFeatures() & GF_ITE_PC98) { // PC-98 versions are 8-bit signed
-			rawFlags &= ~Audio::FLAG_16BITS;
 		} else if (!uncompressedSound && !scumm_stricmp(context->fileName(), "voicesd.rsc")) {
 			// Voice files in newer ITE demo versions are OKI ADPCM (VOX) encoded.
 			resourceType = kSoundVOX;
@@ -312,15 +312,7 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff
 		if ((soundResourceLength & 1) && (rawFlags & Audio::FLAG_16BITS))
 			soundResourceLength &= ~1;
 
-		int frequency;
-		// PC-98 is 8-bit PCM at a lower frequency than other releases.
-		if (_vm->getFeatures() & GF_ITE_PC98) {
-			frequency = 10000;
-		} else {
-			frequency = 22050;
-		}
-
-		Audio::SeekableAudioStream *audStream = Audio::makeRawStream(READ_STREAM(soundResourceLength), frequency, rawFlags);
+		Audio::SeekableAudioStream *audStream = Audio::makeRawStream(READ_STREAM(soundResourceLength), 22050, rawFlags);
 		buffer.stream = audStream;
 		buffer.streamLength = audStream->getLength();
 		result = true;
@@ -336,6 +328,63 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff
 		buffer.streamLength = audStream->getLength();
 		result = true;
 		} break;
+	case kSoundPC98: {
+		const uint32 clock[] = { 24576000, 16934400 };
+		const uint16 divide[] = { 3072, 1536, 896, 768, 448, 384, 512, 2560 };
+		const uint16 ctrlBits[] = { 0x0B, 0x0D, 0x07, 0x02, 0x03, 0x00, 0x01, 0x01 };
+
+		uint16 rateIndex = readS.readUint16LE() & 7;
+		uint16 sfxRate = clock[ctrlBits[rateIndex] & 1] / divide[ctrlBits[rateIndex] >> 1];
+		readS.seek(-2, SEEK_CUR);
+
+		Common::MemoryWriteStreamDynamic cstream(DisposeAfterUse::NO);
+
+		for (int srcBytesLeft = soundResourceLength; srcBytesLeft; ) {
+			uint32 srcPos = readS.pos();
+
+			uint16 r = readS.readUint16LE() & 7;
+			if (r != rateIndex) {
+				// I am quite optimistic that this won't come up. But let's see...
+				warning("SndRes::load(): PCM resource with changing playback rates encountered. Currently not implemented.");
+			}
+
+			uncompressedSound = !(readS.readUint16LE() & 1);
+			uint32 chunkSize = readS.readUint32LE();
+
+			if (!chunkSize)
+				break;
+
+			uint8 *chunk = new uint8[chunkSize];
+			uint8 *dst = chunk;
+
+			if (!uncompressedSound) {
+				for (uint32 i = chunkSize; i;) {
+					uint8 cnt = readS.readByte();
+					if (cnt & 0x80) {
+						cnt &= 0x7F;
+						uint8 val = readS.readByte();
+						memset(dst, val, cnt);
+					} else {
+						readS.read(dst, cnt);
+					}
+					dst += cnt;
+					i -= cnt;
+				}
+			} else {
+				readS.read(dst, chunkSize);
+			}
+
+			cstream.write(chunk, chunkSize);
+			srcBytesLeft -= (readS.pos() - srcPos);
+			delete[] chunk;
+		}
+
+		cstream.finalize();
+		Audio::SeekableAudioStream *audStream = Audio::makeRawStream(cstream.getData(), cstream.size(), sfxRate, 0, DisposeAfterUse::YES);
+		buffer.stream = audStream;
+		buffer.streamLength = audStream->getLength();
+		result = true;
+	} break;
 	case kSoundAIFF: {
 		Audio::RewindableAudioStream *audStream = Audio::makeAIFFStream(READ_STREAM(soundResourceLength), DisposeAfterUse::YES);
 		Audio::SeekableAudioStream *seekStream = dynamic_cast<Audio::SeekableAudioStream *>(audStream);


Commit: c22d9ea086faee010e43d138484e93399fa79985
    https://github.com/scummvm/scummvm/commit/c22d9ea086faee010e43d138484e93399fa79985
Author: athrxx (athrxx at scummvm.org)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: (ITE/PC98) - add music support

We had an existing driver for that, so that could be hooked up rather quickly.

I haven't targeted the non-digital sfx for now, since I haven't fully analyzed whether they are even used. And it would require the reading of static data from the executable which we'd rather avoid.

Changed paths:
    engines/saga/music.cpp
    engines/saga/music.h


diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp
index 9853c3057c..88473e9094 100644
--- a/engines/saga/music.cpp
+++ b/engines/saga/music.cpp
@@ -36,6 +36,7 @@
 #include "audio/decoders/mp3.h"
 #include "audio/decoders/raw.h"
 #include "audio/decoders/vorbis.h"
+#include "audio/softsynth/fmtowns_pc98/towns_pc98_driver.h"
 #include "common/config-manager.h"
 #include "common/file.h"
 #include "common/substream.h"
@@ -162,15 +163,24 @@ void MusicDriver::resume() {
 }
 
 
-Music::Music(SagaEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) {
+Music::Music(SagaEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer), _player(0), _playerPC98(0), _musicContext(0) {
 	_currentVolume = 0;
 	_currentMusicBuffer = NULL;
-	_player = new MusicDriver();
+
+	if (_vm->getPlatform() == Common::kPlatformPC98) {
+		_playerPC98 = new TownsPC98_AudioDriver(mixer, PC98AudioPluginDriver::kType86);
+		_playerPC98->init();
+	} else {
+		_player = new MusicDriver();
+	}
 
 	_digitalMusicContext = _vm->_resource->getContext(GAME_DIGITALMUSICFILE);
-	if (!_player->isAdlib())
-		_musicContext = _vm->_resource->getContext(GAME_MUSICFILE_GM);
-	else
+	if (_player) {
+		if (!_player->isAdlib())
+			_musicContext = _vm->_resource->getContext(GAME_MUSICFILE_GM);
+	}
+
+	if (!_musicContext)
 		_musicContext = _vm->_resource->getContext(GAME_MUSICFILE_FM);
 
 	if (!_musicContext) {
@@ -218,6 +228,7 @@ Music::~Music() {
 	_vm->getTimerManager()->removeTimerProc(&musicVolumeGaugeCallback);
 	_mixer->stopHandle(_musicHandle);
 	delete _player;
+	delete _playerPC98;
 }
 
 void Music::musicVolumeGaugeCallback(void *refCon) {
@@ -262,7 +273,11 @@ void Music::setVolume(int volume, int time) {
 			volume = 0;
 
 		_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, volume);
-		_player->setVolume(volume);
+		if (_player)
+			_player->setVolume(volume);
+		if (_playerPC98)
+			_playerPC98->setMusicVolume(volume);
+
 		_vm->getTimerManager()->removeTimerProc(&musicVolumeGaugeCallback);
 		_currentVolume = volume;
 		return;
@@ -272,7 +287,8 @@ void Music::setVolume(int volume, int time) {
 }
 
 bool Music::isPlaying() {
-	return _mixer->isSoundHandleActive(_musicHandle) || _player->isPlaying();
+	
+	return _mixer->isSoundHandleActive(_musicHandle) || (_player ? _player->isPlaying() : false) || (_playerPC98 ? _playerPC98->musicPlaying() : false);
 }
 
 void Music::play(uint32 resourceId, MusicFlags flags) {
@@ -284,12 +300,6 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
 	if (isPlaying() && _trackNumber == resourceId)
 		return;
 
-	// PC-98 version features music in a different, unidentified format.
-	if (_vm->getPlatform() == Common::kPlatformPC98) {
-		warning("TODO: Music::play %d, %d for ITE PC-98", resourceId, flags);
-		return;
-	}
-
 	if (_vm->getFeatures() & GF_ITE_DOS_DEMO) {
 		warning("TODO: Music::play %d, %d for ITE DOS demo", resourceId, flags);
 		return;
@@ -297,8 +307,11 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
 
 	_trackNumber = resourceId;
 	_mixer->stopHandle(_musicHandle);
-	_player->stop();
-
+	if (_player)
+		_player->stop();
+	if (_playerPC98)
+		_playerPC98->reset();
+	
 	int realTrackNumber = 0;
 
 	if (_vm->getGameId() == GID_ITE) {
@@ -414,24 +427,38 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
 		}
 
 		_vm->_resource->loadResource(_musicContext, resourceId, *_currentMusicBuffer);
-		_player->play(_vm, _currentMusicBuffer, (flags & MUSIC_LOOP));
+		if (_player)
+			_player->play(_vm, _currentMusicBuffer, (flags & MUSIC_LOOP));
+		else if (_playerPC98)
+			_playerPC98->loadMusicData(_currentMusicBuffer->data() + 4);
 	}
 
 	setVolume(_vm->_musicVolume);
 }
 
 void Music::pause() {
-	_player->pause();
-	_player->setVolume(0);
+	if (_player) {
+		_player->pause();
+		_player->setVolume(0);
+	} else if (_playerPC98) {
+		_playerPC98->pause();
+	}
 }
 
 void Music::resume() {
-	_player->resume();
-	_player->setVolume(_vm->_musicVolume);
+	if (_player) {
+		_player->resume();
+		_player->setVolume(_vm->_musicVolume);
+	} else if (_playerPC98) {
+		_playerPC98->cont();
+	}
 }
 
 void Music::stop() {
-	_player->stop();
+	if (_player)
+		_player->stop();
+	else if (_playerPC98)
+		_playerPC98->reset();
 }
 
 } // End of namespace Saga
diff --git a/engines/saga/music.h b/engines/saga/music.h
index a3e378fca7..5d76005c9b 100644
--- a/engines/saga/music.h
+++ b/engines/saga/music.h
@@ -29,6 +29,9 @@
 #include "audio/midiplayer.h"
 #include "audio/midiparser.h"
 #include "audio/mixer.h"
+#include "audio/softsynth/fmtowns_pc98/towns_pc98_driver.h"
+
+class TownsPC98_AudioDriver;
 
 namespace Saga {
 
@@ -86,6 +89,7 @@ private:
 	Audio::Mixer *_mixer;
 
 	MusicDriver *_player;
+	TownsPC98_AudioDriver *_playerPC98;
 	Audio::SoundHandle _musicHandle;
 	uint32 _trackNumber;
 


Commit: 4189c2acfa46331d93206c46fa6379cb2a08376d
    https://github.com/scummvm/scummvm/commit/4189c2acfa46331d93206c46fa6379cb2a08376d
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: add introduction text for Japanese versions

Contains the intro text and opening credits.

This is currently in Unicode; may need to make it Shift JIS later,
depending on how multibyte handling goes.

Changed paths:
    engines/saga/introproc_ite.cpp
    engines/saga/itedata.cpp
    engines/saga/itedata.h


diff --git a/engines/saga/introproc_ite.cpp b/engines/saga/introproc_ite.cpp
index 824a94a663..aed35177c8 100644
--- a/engines/saga/introproc_ite.cpp
+++ b/engines/saga/introproc_ite.cpp
@@ -384,6 +384,8 @@ int Scene::ITEIntroCaveCommonProc(int param, int caveScene) {
 		lang = 2;
 	else if (_vm->getLanguage() == Common::FR_FRA)
 		lang = 3;
+	else if (_vm->getLanguage() == Common::JA_JPN)
+		lang = 4;
 
 	int n_dialogues = 0;
 
diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index 7ef957b8f9..a2dfd0cf5d 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -739,6 +739,26 @@ const IntroDialogue introDialogueCave1[][4] = {
 		"Ils savaient comment Voler, poss\202daient le "
 		"secret du Bonheur et d'autres secrets au "
 		"del\205 de notre imagination."
+	} },
+	// -----------------------------------------------------
+	{ { // Japanese PC-98 version
+		0,		// cave voice 0
+		"私達は空を眺め、地上を眺め、海を眺め、こう思います:"
+		"この世に存在しているのは私達だけなのだろうか?"
+	},
+	{
+		1,		// cave voice 1
+		"私達が存在する以前のはるか昔、"
+		"人間達が地球を支配していました。"
+	},
+	{
+		2,		// cave voice 2
+		"彼らはあらゆる努力を払い、驚異的な物を創造しました。"
+	},
+	{
+		3,		// cave voice 3
+		"彼らは、飛行の秘密や、幸福の秘密、他にも、"
+		"我々の想像を越えた多くの秘密を知っていたのです。"
 	} }
 };
 
@@ -803,6 +823,21 @@ const IntroDialogue introDialogueCave2[][3] = {
 	{
 		6,		// cave voice 6
 		"Nous sommes leurs enfants."
+	} },
+	// -----------------------------------------------------
+	{ { // Japanese PC-98 version
+		4,		// cave voice 4
+		"人間達は生活の秘密も知っていました。 "
+		"彼らはそれを使って、私達に4つの偉大な贈り物・・・"
+	},
+	{
+		5,		// cave voice 5
+		"「考える心や、感じる心、言葉を言う口や、"
+		"物をつかむ手」を授けました。"
+	},
+	{
+		6,		// cave voice 6
+		"私達は彼らの子供なのです。"
 	} }
 };
 
@@ -868,7 +903,23 @@ const IntroDialogue introDialogueCave3[][3] = {
 		"Ils nous aim\212rent, et le moment venu, ils "
 		"nous auraient s\223rement livr\202 le Secret du "
 		"Bonheur."
-	} }
+	} },
+	// -----------------------------------------------------
+	{ { // Japanese PC-98 version
+		7,		// cave voice 7
+		"彼らは手の使い方や、話の仕方を教えてくれました。"
+	},
+	{
+		8,		// cave voice 8
+		"心で喜ぶことを教えてくれました。"
+	},
+	{
+		9,		// cave voice 9
+		"彼らは私達を可愛がりました。 "
+		"私達さえその気があったら、"
+		"幸福の秘密も教えてくれていたことでしょう。"
+	}
+	}
 };
 
 const IntroDialogue introDialogueCave4[][4] = {
@@ -951,7 +1002,29 @@ const IntroDialogue introDialogueCave4[][4] = {
 	{
 		13,		// cave voice 13
 		"Et aurons-nous un jour un sort identique?"
-	} }
+	} },
+	// -----------------------------------------------------
+	{ { // Japanese PC-98 version
+		10,		// cave voice 10
+		"今こうして、自分達に受け継がれた空を眺め、地上を眺め、"
+		"海を眺めながら、こう思うのです:"
+		"彼らはなぜ去ってしまったのだろうか?"
+	},
+	{
+		11,		// cave voice 11
+		"まだ生きているのだろうか? 星達の中で? "
+		"大海の底で? 風の中で?"
+	},
+	{
+		12,		// cave voice 12
+		"彼らは幸運に導かれたのだろうか?"
+	},
+	{
+		13,		// cave voice 13
+		"それとも悲運に導かれたのだろうか? そして私達も、"
+		"ある日同じ運命に導かれるのだろうか?"
+	}
+	}
 };
 
 const IntroCredit creditsValley[] = {
@@ -959,17 +1032,20 @@ const IntroCredit creditsValley[] = {
 	{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Produzent"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Produttore"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Producteur"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Producer"},
 	{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Walter Hochbrueckner"},
 	{Common::EN_ANY, kITECreditsAny, kITECreditsHeader, "Executive Producer"},
 	{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Ausf\201hrender Produzent"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Produttore Esecutivo"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Producteur Executif"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Executive Producer"},
 	{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Robert McNally"},
 	{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsHeader, "2nd Executive Producer"},
 	{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsHeader, "Publisher"},
 	{Common::DE_DEU, kITECreditsNotWyrmKeep, kITECreditsHeader, "Herausgeber"},
 	{Common::IT_ITA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Editore"},
 	{Common::FR_FRA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Editeur"},
+	{Common::JA_JPN, kITECreditsNotWyrmKeep, kITECreditsHeader, "Publisher"},
 	{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Jon Van Caneghem"}
 };
 
@@ -978,6 +1054,7 @@ const IntroCredit creditsTreeHouse1[] = {
 	{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Spielentwurf"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Progetto"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Conception"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Game Design"},
 	{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Talin, Joe Pearce, Robert McNally"},
 	{Common::EN_ANY, kITECreditsAny, kITECreditsText, "and Carolly Hauksdottir"},
 	{Common::DE_DEU, kITECreditsAny, kITECreditsText, "und Carolly Hauksdottir"},
@@ -990,7 +1067,9 @@ const IntroCredit creditsTreeHouse1[] = {
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Sceneggiatura e Dialoghi"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein e Bill Rotsler"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Sc\202nario et Dialogues"},
-	{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein et Bill Rotsler"}
+	{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein et Bill Rotsler"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Screenplay and Dialog"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Robert Leh, Len Wein, and Bill Rotsler"},
 };
 
 const IntroCredit creditsTreeHouse2[] = {
@@ -1000,6 +1079,7 @@ const IntroCredit creditsTreeHouse2[] = {
 	{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Grafiken"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Grafica"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Graphismes"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Art"},
 	{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsText, "Ed Lacabanne, Glenn Price, April Lee,"},
 	{Common::UNK_LANG, kITECreditsNotWyrmKeep, kITECreditsText, "Edward Lacabanne, Glenn Price, April Lee,"},
 	{Common::UNK_LANG, kITECreditsWyrmKeep, kITECreditsText, "Lisa Sample, Brian Dowrick, Reed Waller,"},
@@ -1009,6 +1089,8 @@ const IntroCredit creditsTreeHouse2[] = {
 	{Common::FR_FRA, kITECreditsWyrmKeep, kITECreditsText, "Allison Hershey et Talin"},
 	{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsText, "Lisa Iennaco, Brian Dowrick, Reed"},
 	{Common::EN_ANY, kITECreditsNotWyrmKeep, kITECreditsText, "Waller, Allison Hershey and Talin"},
+	{Common::JA_JPN, kITECreditsNotWyrmKeep, kITECreditsText, "Lisa Iennaco, Brian Dowrick, Reed"},
+	{Common::JA_JPN, kITECreditsNotWyrmKeep, kITECreditsText, "Waller, Allison Hershey and Talin"},
 	{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Waller, Allison Hershey und Talin"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Waller, Allison Hershey e Talin"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Waller, Allison Hershey et Talin"},
@@ -1016,6 +1098,7 @@ const IntroCredit creditsTreeHouse2[] = {
 	{Common::DE_DEU, kITECreditsNotWyrmKeep, kITECreditsHeader, "Grafische Leitung"},
 	{Common::IT_ITA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Direzione Grafica"},
 	{Common::FR_FRA, kITECreditsNotWyrmKeep, kITECreditsHeader, "Directeur Artistique"},
+	{Common::JA_JPN, kITECreditsNotWyrmKeep, kITECreditsHeader, "Art Direction"},
 	{Common::UNK_LANG, kITECreditsNotWyrmKeep, kITECreditsText, "Allison Hershey"}
 };
 
@@ -1024,11 +1107,13 @@ const IntroCredit creditsFairePath1[] = {
 	{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Programmiert von"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Programmazione"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Programmeurs"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Programming (original)"},
 	{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Talin, Walter Hochbrueckner,"},
 	{Common::EN_ANY, kITECreditsAny, kITECreditsText, "Joe Burks and Robert Wiggins"},
 	{Common::DE_DEU, kITECreditsAny, kITECreditsText, "Joe Burks und Robert Wiggins"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsText, "Joe Burks e Robert Wiggins"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Joe Burks et Robert Wiggins"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Joe Burks and Robert Wiggins"},
 	{Common::EN_ANY, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Additional Programming"},
 	{Common::FR_FRA, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsHeader, "Programmeur Additionnel"},
 	{Common::EN_ANY, kITECreditsPCCD | kITECreditsWyrmKeep, kITECreditsText, "John Bolton"},
@@ -1039,6 +1124,7 @@ const IntroCredit creditsFairePath1[] = {
 	{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Musik und Sound"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Musica e Sonoro"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Musique et Sons"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Music and Sound (original)"},
 	{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Matt Nathan"}
 };
 
@@ -1047,9 +1133,16 @@ const IntroCredit creditsFairePath2[] = {
 	{Common::DE_DEU, kITECreditsAny, kITECreditsHeader, "Regie"},
 	{Common::IT_ITA, kITECreditsAny, kITECreditsHeader, "Regia"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Dirig\202 par"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Directed by"},
 	{Common::UNK_LANG, kITECreditsAny, kITECreditsText, "Talin"},
 	{Common::FR_FRA, kITECreditsAny, kITECreditsHeader, "Traduction Francaise"},
-	{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Ryfatwork, Momo le Yetty et Darknior"}
+	{Common::FR_FRA, kITECreditsAny, kITECreditsText, "Ryfatwork, Momo le Yetty et Darknior"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "NEC PC-9821 version by"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsText, "STARCRAFT,Inc."},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Programming"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Toshio Sato"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsHeader, "Music and Sound"},
+	{Common::JA_JPN, kITECreditsAny, kITECreditsText, "Takeshi Abo"}
 };
 
 } // End of namespace Saga
diff --git a/engines/saga/itedata.h b/engines/saga/itedata.h
index 1ad73f7137..e58882328c 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[16];
-extern const IntroCredit creditsTreeHouse1[17];
-extern const IntroCredit creditsTreeHouse2[23];
-extern const IntroCredit creditsFairePath1[20];
-extern const IntroCredit creditsFairePath2[7];
+extern const IntroCredit creditsValley[19];
+extern const IntroCredit creditsTreeHouse1[20];
+extern const IntroCredit creditsTreeHouse2[27];
+extern const IntroCredit creditsFairePath1[23];
+extern const IntroCredit creditsFairePath2[14];
 
 } // End of namespace Saga
 


Commit: 6327fbd1292ef6bad81ec8c7e4163caf405b2df4
    https://github.com/scummvm/scummvm/commit/6327fbd1292ef6bad81ec8c7e4163caf405b2df4
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: add Japanese puzzle strings

Changed paths:
    engines/saga/itedata.cpp
    engines/saga/puzzle.cpp


diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index a2dfd0cf5d..aa3fd86f8e 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -509,6 +509,11 @@ const char *pieceNames[][PUZZLE_PIECES] = {
 		"tournevis", "pince", "\202tau \205 vis", "pince \205 bois", "niveau",
 		"ficelle", "rabot \205 bois", "marteau", "m\212tre ruban", "hachette",
 		"ciseaux", "r\212gle", "scie", "maillet", "pinceau"
+	},
+	{
+		"ドライバー", "釘抜き", "C形クランプ", "木のクランプ", "レベル",
+		"麻ヒモ", "かんな", "金づち", "巻尺", "斧",
+		"ハサミ", "曲尺", "のこぎり", "木づち", "ペンキブラシ"
 	}
 };
 
@@ -537,6 +542,12 @@ const char *hintStr[][4] = {
 		"V\202rifie quel coin a le moins de pi\212ces qui correspondent et part de l\205.",
 		"Evalue chaque coin et bord pour voir les pi\212ces qui collent.",
 		"Je ne vois rien de mal plac\202."
+	},
+	{
+		"まず、四隅に合うピースを\n捜してごらん。",
+		"辺同士が合いそうなピースを\n捜してごらん。",
+		"新しくできた空間と形が合う\nピースを捜してごらん。",
+		"置いたピースの位置は\nどれも合ってるよ。"
 	}
 };
 
@@ -568,6 +579,13 @@ const char *solicitStr[][NUM_SOLICIT_REPLIES] = {
 		"Umm...Umm...",
 		"Psst! Un indice?",
 		"Tu sais, j'aurais fait ça autrement."
+	},
+	{
+		"ねぇ君!\nヒント欲しい?",
+		"手助けしようか?",
+		"フム・・・",
+		"ちょっと!\nヒント欲しい?",
+		"私なら違う方法で\nやってるだろうな。"
 	}
 };
 
@@ -591,6 +609,11 @@ const char *sakkaStr[][NUM_SAKKA] = {
 		"H\202, vous n'\210tes pas suppos\202s aider les concurrents!",
 		"Les gars! C'est suppos\202 être un test!",
 		"Allez les gars, c'est pas dans les r\212gles!"
+	},
+	{
+		"ねぇ、どう?",
+		"なかなかね!",
+		"どうしたの!"
 	}
 };
 
@@ -622,6 +645,13 @@ const char *whineStr[][NUM_WHINES] = {
 		"Pfff...",
 		"Je crois que ton carnet te monte \205 la t\210te, Sakka!",
 		"Bon, je ne me souviens d'aucune r\212gle concernant les indices."
+	},
+	{
+		"アゥ、\nちょっと、サッカ!",
+		"ヒントの一つ位\nいいかい?",
+		"フー・・・",
+		"サッカの頭の中では\nもう完成してるんだ!",
+		"ああ、ヒントに対抗できる\nルールが思い出せない。"
 	}
 };
 
@@ -649,6 +679,12 @@ const char *optionsStr[][4] = {
 		"\"Oui, j'aimerais un indice s'il vous plait.\"",
 		"\"Non merci, je voudrais r\202soudre cela par moi m\210me.\"",
 		"Je crois que t'as mal plac\202 l'%s."
+	},
+	{
+		"「後でやろうかな。」",
+		"「はい、ヒントをお願いします。」",
+		"「いいえ、自分で解きたいんです。」",
+		"%sの位置が違うんじゃないかな。"
 	}
 };
 
diff --git a/engines/saga/puzzle.cpp b/engines/saga/puzzle.cpp
index be209370f3..62999f90fb 100644
--- a/engines/saga/puzzle.cpp
+++ b/engines/saga/puzzle.cpp
@@ -75,6 +75,8 @@ Puzzle::Puzzle(SagaEngine *vm) : _vm(vm), _solved(false), _active(false) {
 		_lang = 2;
 	else if (_vm->getLanguage() == Common::FR_FRA)
 		_lang = 3;
+	else if (_vm->getLanguage() == Common::JA_JPN)
+		_lang = 4;
 
 	_hintRqState = kRQNoHint;
 	_hintOffer = 0;


Commit: 8fc6187c5e0e73f1267f2cce8797269c3a33cdc2
    https://github.com/scummvm/scummvm/commit/8fc6187c5e0e73f1267f2cce8797269c3a33cdc2
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: add menu Japanese menu strings

Changed paths:
    engines/saga/itedata.cpp
    engines/saga/saga.cpp


diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index aa3fd86f8e..7fe2fa3460 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -467,6 +467,27 @@ const char *ITEinterfaceTextStrings[][53] = {
 		"Sous-titre",
 		"Que r\202pond Rif?",
 		"Charger une sauvegarde"
+	},
+	// Japanese
+	{
+		"歩 く", "見 る", "拾 う", "話 す", "開ける",
+		"閉める", "使 う", "与える", "Options", "Test",
+		"Demo", "Help", "ゲーム終了", "速い", "遅い",
+		"オン", "オフ", "ゲーム再開", "ロード", "セーブ",
+		"ゲームオプション", "表示速度", "音楽", "効果音", "無効",
+		"終了", "OK", "普通", "クリック", "10%",
+		"20%", "30%", "40%", "50%", "60%",
+		"70%", "80%", "90%", "最大", "ゲームを中断しますか?",
+		"?", "ゲーム名は?", "%sに%sを与える", "%sを%sに使う",
+		"[New Save Game]",
+		"拾えないね。",
+		"変わったものはないね。",
+		"どこも開きそうにないよ。",
+		"どこも閉められない。",
+		"どうすればいいか分からないね。",
+		"?",
+		"リフの返事は?",
+		"?"
 	}
 };
 
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index a16f505c5a..ff18a3a259 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -512,6 +512,9 @@ const char *SagaEngine::getTextString(int textStringId) {
 		case Common::FR_FRA:
 			lang = 5;
 			break;
+		case Common::JA_JPN:
+			lang = 6;
+			break;
 		default:
 			lang = 0;
 			break;


Commit: 9a131c6cb1038a3f39158e36f70c89af1a1b80df
    https://github.com/scummvm/scummvm/commit/9a131c6cb1038a3f39158e36f70c89af1a1b80df
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2020-05-19T12:35:54+02:00

Commit Message:
SAGA: store Japanese strings as escaped Shift JIS

Changed paths:
    engines/saga/itedata.cpp


diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index 7fe2fa3460..932572ad1b 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -470,23 +470,38 @@ const char *ITEinterfaceTextStrings[][53] = {
 	},
 	// Japanese
 	{
-		"歩 く", "見 る", "拾 う", "話 す", "開ける",
-		"閉める", "使 う", "与える", "Options", "Test",
-		"Demo", "Help", "ゲーム終了", "速い", "遅い",
-		"オン", "オフ", "ゲーム再開", "ロード", "セーブ",
-		"ゲームオプション", "表示速度", "音楽", "効果音", "無効",
-		"終了", "OK", "普通", "クリック", "10%",
-		"20%", "30%", "40%", "50%", "60%",
-		"70%", "80%", "90%", "最大", "ゲームを中断しますか?",
-		"?", "ゲーム名は?", "%sに%sを与える", "%sを%sに使う",
+		// "歩 く", "見 る", "拾 う", "話 す", "開ける",
+		"\x95\xE0\x81@\x82\xAD", "\x8C\xA9\x81@\x82\xE9", "\x8F\x45\x81@\x82\xA4", "\x98\x62\x81@\x82\xB7", "\x8AJ\x82\xAF\x82\xE9"
+		// "閉める", "使 う", "与える", "Options", "Test",
+		"\x95\xC2\x82\xDF\x82\xE9", "\x8Eg\x81@\x82\xA4", "\x97^\x82\xA6\x82\xE9", "Options", "Test",
+		// "Demo", "Help", "ゲーム終了", "速い", "遅い",
+		"Demo", "Help", "\x83Q\x81[\x83\x80\x8FI\x97\xB9", "\x91\xAC\x82\xA2", "\x92x\x82\xA2",
+		// "オン", "オフ", "ゲーム再開", "ロード", "セーブ",
+		"\x83I\x83\x93", "\x83I\x83t", "\x83Q\x81[\x83\x80\x8D\xC4\x8AJ", "\x83\x8D\x81[\x83h", "\x83Z\x81[\x83u",
+		// "ゲームオプション", "表示速度", "音楽", "効果音", "無効",
+		"\x83Q\x81[\x83\x80\x83I\x83v\x83V\x83\x87\x83\x93", "\x95\\x8E\xA6\x91\xAC\x93x", "\x89\xB9\x8Ay", "\x8C\xF8\x89\xCA\x89\xB9", "\x96\xB3\x8C\xF8",
+		// "終了", "OK", "普通", "クリック", "10%",
+		"\x8FI\x97\xB9", "\x82n\x82j", "\x95\x81\x92\xCA", "\x83N\x83\x8A\x83\x62\x83N", "\x82P\x82O\x81\x93",
+		// "20%", "30%", "40%", "50%", "60%",
+		"\x82Q\x82O\x81\x93", "\x82R\x82O\x81\x93", "\x82S\x82O\x81\x93", "\x82T\x82O\x81\x93", "\x82U\x82O\x81\x93",
+		// "70%", "80%", "90%", "最大", "ゲームを中断しますか?",
+		"\x82V\x82O\x81\x93", "\x82W\x82O\x81\x93", "\x82X\x82O\x81\x93", "\x8D\xC5\x91\xE5", "\x83Q\x81[\x83\x80\x82\xF0\x92\x86\x92\x66\x82\xB5\x82\xDC\x82\xB7\x82\xA9\x81H",
+		// "?", "ゲーム名は?", "%sに%sを与える", "%sを%sに使う",
+		"?", "\x83Q\x81[\x83\x80\x96\xBC\x82\xCD\x81H", "%s\x82\xC9%s\x82\xF0\x97^\x82\xA6\x82\xE9", "%s\x82\xF0%s\x82\xC9\x8Eg\x82\xA4",
 		"[New Save Game]",
-		"拾えないね。",
-		"変わったものはないね。",
-		"どこも開きそうにないよ。",
-		"どこも閉められない。",
-		"どうすればいいか分からないね。",
+		// "拾えないね。",
+		"\x8F\x45\x82\xA6\x82\xC8\x82\xA2\x82\xCB\x81\x42",
+		// "変わったものはないね。",
+		"\x95\xCF\x82\xED\x82\xC1\x82\xBD\x82\xE0\x82\xCC\x82\xCD\x82\xC8\x82\xA2\x82\xCB\x81\x42",
+		// "どこも開きそうにないよ。",
+		"\x82\xC7\x82\xB1\x82\xE0\x8AJ\x82\xAB\x82\xBB\x82\xA4\x82\xC9\x82\xC8\x82\xA2\x82\xE6\x81\x42",
+		// "どこも閉められない。",
+		"\x82\xC7\x82\xB1\x82\xE0\x95\xC2\x82\xDF\x82\xE7\x82\xEA\x82\xC8\x82\xA2\x81\x42",
+		// "どうすればいいか分からないね。",
+		"\x82\xC7\x82\xA4\x82\xB7\x82\xEA\x82\xCE\x82\xA2\x82\xA2\x82\xA9\x95\xAA\x82\xA9\x82\xE7\x82\xC8\x82\xA2\x82\xCB\x81\x42",
 		"?",
-		"リフの返事は?",
+		// "リフの返事は?",
+		"\x83\x8A\x83t\x82\xCC\x95\xD4\x8E\x96\x82\xCD\x81H",
 		"?"
 	}
 };
@@ -532,9 +547,12 @@ const char *pieceNames[][PUZZLE_PIECES] = {
 		"ciseaux", "r\212gle", "scie", "maillet", "pinceau"
 	},
 	{
-		"ドライバー", "釘抜き", "C形クランプ", "木のクランプ", "レベル",
-		"麻ヒモ", "かんな", "金づち", "巻尺", "斧",
-		"ハサミ", "曲尺", "のこぎり", "木づち", "ペンキブラシ"
+		// "ドライバー", "釘抜き", "C形クランプ", "木のクランプ", "レベル",
+		"\x83h\x83\x89\x83\x43\x83o\x81[", "\x93\x42\x94\xB2\x82\xAB", "\x82\x62\x8C`\x83N\x83\x89\x83\x93\x83v", "\x96\xD8\x82\xCC\x83N\x83\x89\x83\x93\x83v", "\x83\x8C\x83x\x83\x8B",
+		// "麻ヒモ", "かんな", "金づち", "巻尺", "斧",
+		"\x96\x83\x83q\x83\x82", "\x82\xA9\x82\xF1\x82\xC8", "\x8B\xE0\x82\xC3\x82\xBF", "\x8A\xAA\x8E\xDA", "\x95\x80",
+		// "ハサミ", "曲尺", "のこぎり", "木づち", "ペンキブラシ"
+		"\x83n\x83T\x83~", "\x8B\xC8\x8E\xDA", "\x82\xCC\x82\xB1\x82\xAC\x82\xE8", "\x96\xD8\x82\xC3\x82\xBF", "\x83y\x83\x93\x83L\x83u\x83\x89\x83V"
 	}
 };
 
@@ -565,10 +583,14 @@ const char *hintStr[][4] = {
 		"Je ne vois rien de mal plac\202."
 	},
 	{
-		"まず、四隅に合うピースを\n捜してごらん。",
-		"辺同士が合いそうなピースを\n捜してごらん。",
-		"新しくできた空間と形が合う\nピースを捜してごらん。",
-		"置いたピースの位置は\nどれも合ってるよ。"
+		// "まず、四隅に合うピースを\n捜してごらん。",
+		"\x82\xDC\x82\xB8\x81\x41\x8El\x8B\xF7\x82\xC9\x8D\x87\x82\xA4\x83s\x81[\x83X\x82\xF0\n\x91{\x82\xB5\x82\xC4\x82\xB2\x82\xE7\x82\xF1\x81\x42",
+		// "辺同士が合いそうなピースを\n捜してごらん。",
+		"\x95\xD3\x93\xAF\x8Em\x82\xAA\x8D\x87\x82\xA2\x82\xBB\x82\xA4\x82\xC8\x83s\x81[\x83X\x82\xF0\n\x91{\x82\xB5\x82\xC4\x82\xB2\x82\xE7\x82\xF1\x81\x42",
+		// "新しくできた空間と形が合う\nピースを捜してごらん。",
+		"\x90V\x82\xB5\x82\xAD\x82\xC5\x82\xAB\x82\xBD\x8B\xF3\x8A\xD4\x82\xC6\x8C`\x82\xAA\x8D\x87\x82\xA4\n\x83s\x81[\x83X\x82\xF0\x91{\x82\xB5\x82\xC4\x82\xB2\x82\xE7\x82\xF1\x81\x42",
+		// "置いたピースの位置は\nどれも合ってるよ。"
+		"\x92u\x82\xA2\x82\xBD\x83s\x81[\x83X\x82\xCC\x88\xCA\x92u\x82\xCD\n\x82\xC7\x82\xEA\x82\xE0\x8D\x87\x82\xC1\x82\xC4\x82\xE9\x82\xE6\x81\x42"
 	}
 };
 
@@ -602,11 +624,16 @@ const char *solicitStr[][NUM_SOLICIT_REPLIES] = {
 		"Tu sais, j'aurais fait ça autrement."
 	},
 	{
-		"ねぇ君!\nヒント欲しい?",
-		"手助けしようか?",
-		"フム・・・",
-		"ちょっと!\nヒント欲しい?",
-		"私なら違う方法で\nやってるだろうな。"
+		// "ねぇ君!\nヒント欲しい?",
+		"\x82\xCB\x82\xA5\x8CN\x81I\n\x83q\x83\x93\x83g\x97~\x82\xB5\x82\xA2\x81H",
+		// "手助けしようか?",
+		"\x8E\xE8\x8F\x95\x82\xAF\x82\xB5\x82\xE6\x82\xA4\x82\xA9\x81H",
+		// "フム・・・",
+		"\x83t\x83\x80\x81\x45\x81\x45\x81\x45",
+		// "ちょっと!\nヒント欲しい?",
+		"\x82\xBF\x82\xE5\x82\xC1\x82\xC6\x81I\n\x83q\x83\x93\x83g\x97~\x82\xB5\x82\xA2\x81H",
+		// "私なら違う方法で\nやってるだろうな。"
+		"\x8E\x84\x82\xC8\x82\xE7\x88\xE1\x82\xA4\x95\xFB\x96@\x82\xC5\n\x82\xE2\x82\xC1\x82\xC4\x82\xE9\x82\xBE\x82\xEB\x82\xA4\x82\xC8\x81\x42"
 	}
 };
 
@@ -632,9 +659,12 @@ const char *sakkaStr[][NUM_SAKKA] = {
 		"Allez les gars, c'est pas dans les r\212gles!"
 	},
 	{
-		"ねぇ、どう?",
-		"なかなかね!",
-		"どうしたの!"
+		// "ねぇ、どう?",
+		"\x82\xCB\x82\xA5\x81\x41\x82\xC7\x82\xA4\x81H",
+		// "なかなかね!",
+		"\x82\xC8\x82\xA9\x82\xC8\x82\xA9\x82\xCB\x81I",
+		// "どうしたの!"
+		"\x82\xC7\x82\xA4\x82\xB5\x82\xBD\x82\xCC\x81I"
 	}
 };
 
@@ -668,11 +698,16 @@ const char *whineStr[][NUM_WHINES] = {
 		"Bon, je ne me souviens d'aucune r\212gle concernant les indices."
 	},
 	{
-		"アゥ、\nちょっと、サッカ!",
-		"ヒントの一つ位\nいいかい?",
-		"フー・・・",
-		"サッカの頭の中では\nもう完成してるんだ!",
-		"ああ、ヒントに対抗できる\nルールが思い出せない。"
+		// "アゥ、\nちょっと、サッカ!",
+		"\x83\x41\x83\x44\x81\x41\n\x82\xBF\x82\xE5\x82\xC1\x82\xC6\x81\x41\x83T\x83\x62\x83J\x81I",
+		// "ヒントの一つ位\nいいかい?",
+		"\x83q\x83\x93\x83g\x82\xCC\x88\xEA\x82\xC2\x88\xCA\n\x82\xA2\x82\xA2\x82\xA9\x82\xA2\x81H",
+		// "フー・・・",
+		"\x83t\x81[\x81\x45\x81\x45\x81\x45",
+		// "サッカの頭の中では\nもう完成してるんだ!",
+		"\x83T\x83\x62\x83J\x82\xCC\x93\xAA\x82\xCC\x92\x86\x82\xC5\x82\xCD\n\x82\xE0\x82\xA4\x8A\xAE\x90\xAC\x82\xB5\x82\xC4\x82\xE9\x82\xF1\x82\xBE\x81I",
+		// "ああ、ヒントに対抗できる\nルールが思い出せない。"
+		"\x82\xA0\x82\xA0\x81\x41\x83q\x83\x93\x83g\x82\xC9\x91\xCE\x8DR\x82\xC5\x82\xAB\x82\xE9\n\x83\x8B\x81[\x83\x8B\x82\xAA\x8Ev\x82\xA2\x8Fo\x82\xB9\x82\xC8\x82\xA2\x81\x42"
 	}
 };
 
@@ -702,10 +737,14 @@ const char *optionsStr[][4] = {
 		"Je crois que t'as mal plac\202 l'%s."
 	},
 	{
-		"「後でやろうかな。」",
-		"「はい、ヒントをお願いします。」",
-		"「いいえ、自分で解きたいんです。」",
-		"%sの位置が違うんじゃないかな。"
+		// "「後でやろうかな。」",
+		"\x81u\x8C\xE3\x82\xC5\x82\xE2\x82\xEB\x82\xA4\x82\xA9\x82\xC8\x81\x42\x81v",
+		// "「はい、ヒントをお願いします。」",
+		"\x81u\x82\xCD\x82\xA2\x81\x41\x83q\x83\x93\x83g\x82\xF0\x82\xA8\x8A\xE8\x82\xA2\x82\xB5\x82\xDC\x82\xB7\x81\x42\x81v",
+		// "「いいえ、自分で解きたいんです。」",
+		"\x81u\x82\xA2\x82\xA2\x82\xA6\x81\x41\x8E\xA9\x95\xAA\x82\xC5\x89\xF0\x82\xAB\x82\xBD\x82\xA2\x82\xF1\x82\xC5\x82\xB7\x81\x42\x81v",
+		// "%sの位置が違うんじゃないかな。"
+		"%s\x82\xCC\x88\xCA\x92u\x82\xAA\x88\xE1\x82\xA4\x82\xF1\x82\xB6\x82\xE1\x82\xC8\x82\xA2\x82\xA9\x82\xC8\x81\x42"
 	}
 };
 
@@ -800,22 +839,29 @@ const IntroDialogue introDialogueCave1[][4] = {
 	// -----------------------------------------------------
 	{ { // Japanese PC-98 version
 		0,		// cave voice 0
-		"私達は空を眺め、地上を眺め、海を眺め、こう思います:"
-		"この世に存在しているのは私達だけなのだろうか?"
+		// "私達は空を眺め、地上を眺め、海を眺め、こう思います:"
+		"\x8E\x84\x92\x42\x82\xCD\x8B\xF3\x82\xF0\x92\xAD\x82\xDF\x81\x41\x92n\x8F\xE3\x82\xF0\x92\xAD\x82\xDF\x81\x41\x8A\x43\x82\xF0\x92\xAD\x82\xDF\x81\x41\x82\xB1\x82\xA4\x8Ev\x82\xA2\x82\xDC\x82\xB7\x81\x46"
+		// "この世に存在しているのは私達だけなのだろうか?"
+		"\x82\xB1\x82\xCC\x90\xA2\x82\xC9\x91\xB6\x8D\xDD\x82\xB5\x82\xC4\x82\xA2\x82\xE9\x82\xCC\x82\xCD\x8E\x84\x92\x42\x82\xBE\x82\xAF\x82\xC8\x82\xCC\x82\xBE\x82\xEB\x82\xA4\x82\xA9\x81H"
 	},
 	{
 		1,		// cave voice 1
-		"私達が存在する以前のはるか昔、"
-		"人間達が地球を支配していました。"
+		// "私達が存在する以前のはるか昔、"
+		"\x8E\x84\x92\x42\x82\xAA\x91\xB6\x8D\xDD\x82\xB7\x82\xE9\x88\xC8\x91O\x82\xCC\x82\xCD\x82\xE9\x82\xA9\x90\xCC\x81\x41"
+		// "人間達が地球を支配していました。"
+		"\x90l\x8A\xD4\x92\x42\x82\xAA\x92n\x8B\x85\x82\xF0\x8Ex\x94z\x82\xB5\x82\xC4\x82\xA2\x82\xDC\x82\xB5\x82\xBD\x81\x42"
 	},
 	{
 		2,		// cave voice 2
-		"彼らはあらゆる努力を払い、驚異的な物を創造しました。"
+		// "彼らはあらゆる努力を払い、驚異的な物を創造しました。"
+		"\x94\xDE\x82\xE7\x82\xCD\x82\xA0\x82\xE7\x82\xE4\x82\xE9\x93w\x97\xCD\x82\xF0\x95\xA5\x82\xA2\x81\x41\x8B\xC1\x88\xD9\x93I\x82\xC8\x95\xA8\x82\xF0\x91n\x91\xA2\x82\xB5\x82\xDC\x82\xB5\x82\xBD\x81\x42"
 	},
 	{
 		3,		// cave voice 3
-		"彼らは、飛行の秘密や、幸福の秘密、他にも、"
-		"我々の想像を越えた多くの秘密を知っていたのです。"
+		// "彼らは、飛行の秘密や、幸福の秘密、他にも、"
+		"\x94\xDE\x82\xE7\x82\xCD\x81\x41\x94\xF2\x8Ds\x82\xCC\x94\xE9\x96\xA7\x82\xE2\x81\x41\x8DK\x95\x9F\x82\xCC\x94\xE9\x96\xA7\x81\x41\x91\xBC\x82\xC9\x82\xE0\x81\x41"
+		// "我々の想像を越えた多くの秘密を知っていたのです。"
+		"\x89\xE4\x81X\x82\xCC\x91z\x91\x9C\x82\xF0\x89z\x82\xA6\x82\xBD\x91\xBD\x82\xAD\x82\xCC\x94\xE9\x96\xA7\x82\xF0\x92m\x82\xC1\x82\xC4\x82\xA2\x82\xBD\x82\xCC\x82\xC5\x82\xB7\x81\x42"
 	} }
 };
 
@@ -884,17 +930,22 @@ const IntroDialogue introDialogueCave2[][3] = {
 	// -----------------------------------------------------
 	{ { // Japanese PC-98 version
 		4,		// cave voice 4
-		"人間達は生活の秘密も知っていました。 "
-		"彼らはそれを使って、私達に4つの偉大な贈り物・・・"
+		// "人間達は生活の秘密も知っていました。 "
+		"\x90l\x8A\xD4\x92\x42\x82\xCD\x90\xB6\x8A\x88\x82\xCC\x94\xE9\x96\xA7\x82\xE0\x92m\x82\xC1\x82\xC4\x82\xA2\x82\xDC\x82\xB5\x82\xBD\x81\x42\x81@"
+		// "彼らはそれを使って、私達に4つの偉大な贈り物・・・"
+		"\x94\xDE\x82\xE7\x82\xCD\x82\xBB\x82\xEA\x82\xF0\x8Eg\x82\xC1\x82\xC4\x81\x41\x8E\x84\x92\x42\x82\xC9\x82S\x82\xC2\x82\xCC\x88\xCC\x91\xE5\x82\xC8\x91\xA1\x82\xE8\x95\xA8\x81\x45\x81\x45\x81\x45"
 	},
 	{
 		5,		// cave voice 5
-		"「考える心や、感じる心、言葉を言う口や、"
-		"物をつかむ手」を授けました。"
+		// "「考える心や、感じる心、言葉を言う口や、"
+		"\x81u\x8Dl\x82\xA6\x82\xE9\x90S\x82\xE2\x81\x41\x8A\xB4\x82\xB6\x82\xE9\x90S\x81\x41\x8C\xBE\x97t\x82\xF0\x8C\xBE\x82\xA4\x8C\xFB\x82\xE2\x81\x41"
+		// "物をつかむ手」を授けました。"
+		"\x95\xA8\x82\xF0\x82\xC2\x82\xA9\x82\xDE\x8E\xE8\x81v\x82\xF0\x8E\xF6\x82\xAF\x82\xDC\x82\xB5\x82\xBD\x81\x42"
 	},
 	{
 		6,		// cave voice 6
-		"私達は彼らの子供なのです。"
+		// "私達は彼らの子供なのです。"
+		"\x8E\x84\x92\x42\x82\xCD\x94\xDE\x82\xE7\x82\xCC\x8Eq\x8B\x9F\x82\xC8\x82\xCC\x82\xC5\x82\xB7\x81\x42"
 	} }
 };
 
@@ -964,17 +1015,22 @@ const IntroDialogue introDialogueCave3[][3] = {
 	// -----------------------------------------------------
 	{ { // Japanese PC-98 version
 		7,		// cave voice 7
-		"彼らは手の使い方や、話の仕方を教えてくれました。"
+		// "彼らは手の使い方や、話の仕方を教えてくれました。"
+		"\x94\xDE\x82\xE7\x82\xCD\x8E\xE8\x82\xCC\x8Eg\x82\xA2\x95\xFB\x82\xE2\x81\x41\x98\x62\x82\xCC\x8E\x64\x95\xFB\x82\xF0\x8B\xB3\x82\xA6\x82\xC4\x82\xAD\x82\xEA\x82\xDC\x82\xB5\x82\xBD\x81\x42"
 	},
 	{
 		8,		// cave voice 8
-		"心で喜ぶことを教えてくれました。"
+		// "心で喜ぶことを教えてくれました。"
+		"\x90S\x82\xC5\x8A\xEC\x82\xD4\x82\xB1\x82\xC6\x82\xF0\x8B\xB3\x82\xA6\x82\xC4\x82\xAD\x82\xEA\x82\xDC\x82\xB5\x82\xBD\x81\x42"
 	},
 	{
 		9,		// cave voice 9
-		"彼らは私達を可愛がりました。 "
-		"私達さえその気があったら、"
-		"幸福の秘密も教えてくれていたことでしょう。"
+		// "彼らは私達を可愛がりました。 "
+		"\x94\xDE\x82\xE7\x82\xCD\x8E\x84\x92\x42\x82\xF0\x89\xC2\x88\xA4\x82\xAA\x82\xE8\x82\xDC\x82\xB5\x82\xBD\x81\x42\x81@"
+		// "私達さえその気があったら、"
+		"\x8E\x84\x92\x42\x82\xB3\x82\xA6\x82\xBB\x82\xCC\x8B\x43\x82\xAA\x82\xA0\x82\xC1\x82\xBD\x82\xE7\x81\x41"
+		// "幸福の秘密も教えてくれていたことでしょう。"
+		"\x8DK\x95\x9F\x82\xCC\x94\xE9\x96\xA7\x82\xE0\x8B\xB3\x82\xA6\x82\xC4\x82\xAD\x82\xEA\x82\xC4\x82\xA2\x82\xBD\x82\xB1\x82\xC6\x82\xC5\x82\xB5\x82\xE5\x82\xA4\x81\x42"
 	}
 	}
 };
@@ -1063,23 +1119,31 @@ const IntroDialogue introDialogueCave4[][4] = {
 	// -----------------------------------------------------
 	{ { // Japanese PC-98 version
 		10,		// cave voice 10
-		"今こうして、自分達に受け継がれた空を眺め、地上を眺め、"
-		"海を眺めながら、こう思うのです:"
-		"彼らはなぜ去ってしまったのだろうか?"
+		// "今こうして、自分達に受け継がれた空を眺め、地上を眺め、"
+		"\x8D\xA1\x82\xB1\x82\xA4\x82\xB5\x82\xC4\x81\x41\x8E\xA9\x95\xAA\x92\x42\x82\xC9\x8E\xF3\x82\xAF\x8Cp\x82\xAA\x82\xEA\x82\xBD\x8B\xF3\x82\xF0\x92\xAD\x82\xDF\x81\x41\x92n\x8F\xE3\x82\xF0\x92\xAD\x82\xDF\x81\x41"
+		// "海を眺めながら、こう思うのです:"
+		"\x8A\x43\x82\xF0\x92\xAD\x82\xDF\x82\xC8\x82\xAA\x82\xE7\x81\x41\x82\xB1\x82\xA4\x8Ev\x82\xA4\x82\xCC\x82\xC5\x82\xB7\x81\x46"
+		// "彼らはなぜ去ってしまったのだろうか?"
+		"\x94\xDE\x82\xE7\x82\xCD\x82\xC8\x82\xBA\x8B\x8E\x82\xC1\x82\xC4\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x82\xCC\x82\xBE\x82\xEB\x82\xA4\x82\xA9\x81H"
 	},
 	{
 		11,		// cave voice 11
-		"まだ生きているのだろうか? 星達の中で? "
-		"大海の底で? 風の中で?"
+		// "まだ生きているのだろうか? 星達の中で? "
+		"\x82\xDC\x82\xBE\x90\xB6\x82\xAB\x82\xC4\x82\xA2\x82\xE9\x82\xCC\x82\xBE\x82\xEB\x82\xA4\x82\xA9\x81H\x81@\x90\xAF\x92\x42\x82\xCC\x92\x86\x82\xC5\x81H\x81@"
+		// "大海の底で? 風の中で?"
+		"\x91\xE5\x8A\x43\x82\xCC\x92\xEA\x82\xC5\x81H\x81@\x95\x97\x82\xCC\x92\x86\x82\xC5\x81H"
 	},
 	{
 		12,		// cave voice 12
-		"彼らは幸運に導かれたのだろうか?"
+		// "彼らは幸運に導かれたのだろうか?"
+		"\x94\xDE\x82\xE7\x82\xCD\x8DK\x89^\x82\xC9\x93\xB1\x82\xA9\x82\xEA\x82\xBD\x82\xCC\x82\xBE\x82\xEB\x82\xA4\x82\xA9\x81H"
 	},
 	{
 		13,		// cave voice 13
-		"それとも悲運に導かれたのだろうか? そして私達も、"
-		"ある日同じ運命に導かれるのだろうか?"
+		// "それとも悲運に導かれたのだろうか? そして私達も、"
+		"\x82\xBB\x82\xEA\x82\xC6\x82\xE0\x94\xDF\x89^\x82\xC9\x93\xB1\x82\xA9\x82\xEA\x82\xBD\x82\xCC\x82\xBE\x82\xEB\x82\xA4\x82\xA9\x81H\x81@\x82\xBB\x82\xB5\x82\xC4\x8E\x84\x92\x42\x82\xE0\x81\x41"
+		// "ある日同じ運命に導かれるのだろうか?"
+		"\x82\xA0\x82\xE9\x93\xFA\x93\xAF\x82\xB6\x89^\x96\xBD\x82\xC9\x93\xB1\x82\xA9\x82\xEA\x82\xE9\x82\xCC\x82\xBE\x82\xEB\x82\xA4\x82\xA9\x81H"
 	}
 	}
 };




More information about the Scummvm-git-logs mailing list