aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/engine
diff options
context:
space:
mode:
authorathrxx2019-03-25 21:46:18 +0100
committerathrxx2019-04-13 18:55:00 +0200
commit02000cfe371784fe5eb46e063a0391fa1ec2001f (patch)
tree7eb1b3b63285fea3c823c06a6ba705daaf79d5f2 /engines/kyra/engine
parentc94b6a438952c9d20b9a07d0a8712e9e2be25c7c (diff)
downloadscummvm-rg350-02000cfe371784fe5eb46e063a0391fa1ec2001f.tar.gz
scummvm-rg350-02000cfe371784fe5eb46e063a0391fa1ec2001f.tar.bz2
scummvm-rg350-02000cfe371784fe5eb46e063a0391fa1ec2001f.zip
KYRA: (EOB2/Amiga) - add special gfx decoder for localized version
Diffstat (limited to 'engines/kyra/engine')
-rw-r--r--engines/kyra/engine/eobcommon.cpp36
-rw-r--r--engines/kyra/engine/scene_eob.cpp7
2 files changed, 32 insertions, 11 deletions
diff --git a/engines/kyra/engine/eobcommon.cpp b/engines/kyra/engine/eobcommon.cpp
index 792cf10008..1c75c78d70 100644
--- a/engines/kyra/engine/eobcommon.cpp
+++ b/engines/kyra/engine/eobcommon.cpp
@@ -1346,10 +1346,15 @@ void EoBCoreEngine::npcSequence(int npcIndex) {
drawNpcScene(npcIndex);
Common::SeekableReadStream *s = _res->createReadStream("TEXT.DAT");
- if (s)
+ if (s) {
_screen->loadFileDataToPage(s, 5, 32000);
- else
- _screen->loadBitmap("TEXT.CPS", 5, 5, 0, true);
+ } else {
+ s = _res->createReadStream("TEXT.CPS");
+ if (s->readSint32BE() + 12 == s->size())
+ _screen->loadSpecialAmigaCPS("TEXT.CPS", 5, false);
+ else
+ _screen->loadBitmap("TEXT.CPS", 5, 5, 0, true);
+ }
delete s;
gui_drawBox(0, 121, 320, 79, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
@@ -1597,12 +1602,18 @@ void EoBCoreEngine::initDialogueSequence() {
snd_stopSound();
Common::SeekableReadStream *s = _res->createReadStream("TEXT.DAT");
- if (s)
+ if (s) {
_screen->loadFileDataToPage(s, 5, 32000);
- else
- _screen->loadBitmap("TEXT.CPS", 5, 5, 0, true);
- _txt->setupField(9, 0);
+ } else {
+ s = _res->createReadStream("TEXT.CPS");
+ if (s->readSint32BE() + 12 == s->size())
+ _screen->loadSpecialAmigaCPS("TEXT.CPS", 5, false);
+ else
+ _screen->loadBitmap("TEXT.CPS", 5, 5, 0, true);
+ }
delete s;
+
+ _txt->setupField(9, 0);
}
void EoBCoreEngine::restoreAfterDialogueSequence() {
@@ -1804,10 +1815,15 @@ void EoBCoreEngine::displayParchment(int id) {
if (id >= 0) {
// display text
Common::SeekableReadStream *s = _res->createReadStream("TEXT.DAT");
- if (s)
+ if (s) {
_screen->loadFileDataToPage(s, 5, 32000);
- else
- _screen->loadBitmap("TEXT.CPS", 5, 5, 0, true);
+ } else {
+ s = _res->createReadStream("TEXT.CPS");
+ if (s->readSint32BE() + 12 == s->size())
+ _screen->loadSpecialAmigaCPS("TEXT.CPS", 5, false);
+ else
+ _screen->loadBitmap("TEXT.CPS", 5, 5, 0, true);
+ }
delete s;
_screen->set16bitShadingLevel(4);
gui_drawBox(0, 0, 176, 175, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
diff --git a/engines/kyra/engine/scene_eob.cpp b/engines/kyra/engine/scene_eob.cpp
index f010069f63..9a2f4e2f93 100644
--- a/engines/kyra/engine/scene_eob.cpp
+++ b/engines/kyra/engine/scene_eob.cpp
@@ -132,7 +132,12 @@ void EoBCoreEngine::readLevelFileData(int level) {
if (s) {
s->seek(0);
- _screen->loadFileDataToPage(s, 5, 15000);
+ if (s->readSint32BE() + 12 == s->size()) {
+ _screen->loadSpecialAmigaCPS(file.c_str(), 5, false);
+ } else {
+ s->seek(0);
+ _screen->loadFileDataToPage(s, 5, 15000);
+ }
delete s;
}
}