diff options
author | Filippos Karapetis | 2015-12-18 05:42:26 +0200 |
---|---|---|
committer | Willem Jan Palenstijn | 2015-12-23 21:34:09 +0100 |
commit | c5528a631d63e47b830c89258507ebb681d5b261 (patch) | |
tree | ede1c9171e876c5a2d594ff4559e9d5e3ed1a4dc | |
parent | 1c02487a00e100dcae1755742d2ab4412688c5aa (diff) | |
download | scummvm-rg350-c5528a631d63e47b830c89258507ebb681d5b261.tar.gz scummvm-rg350-c5528a631d63e47b830c89258507ebb681d5b261.tar.bz2 scummvm-rg350-c5528a631d63e47b830c89258507ebb681d5b261.zip |
LAB: Handle some differences of the Amiga version
The Amiga version is still not working, as the CONTROL and INV files
are missing, and the format of the font files is different
-rw-r--r-- | engines/lab/detection.cpp | 2 | ||||
-rw-r--r-- | engines/lab/dispman.cpp | 2 | ||||
-rw-r--r-- | engines/lab/engine.cpp | 5 | ||||
-rw-r--r-- | engines/lab/intro.cpp | 2 | ||||
-rw-r--r-- | engines/lab/resource.cpp | 25 | ||||
-rw-r--r-- | engines/lab/special.cpp | 12 |
6 files changed, 34 insertions, 14 deletions
diff --git a/engines/lab/detection.cpp b/engines/lab/detection.cpp index 52d284562e..7bb9821891 100644 --- a/engines/lab/detection.cpp +++ b/engines/lab/detection.cpp @@ -87,7 +87,7 @@ static const ADGameDescription labDescriptions[] = { AD_ENTRY1s("doors", "7bf458df6ec30cc8ef4665e4d7c77f59", 2537), // game/doors Common::EN_ANY, Common::kPlatformAmiga, - ADGF_NO_FLAGS, + Lab::GF_LOWRES, GUIO0() }, AD_TABLE_END_MARKER diff --git a/engines/lab/dispman.cpp b/engines/lab/dispman.cpp index 77245ef843..3702e70b74 100644 --- a/engines/lab/dispman.cpp +++ b/engines/lab/dispman.cpp @@ -405,6 +405,7 @@ void DisplayMan::setUpScreens() { createScreen(_vm->_isHiRes); + // TODO: The CONTROL file is not present in the Amiga version Common::File *controlFile = _vm->_resource->openDataFile("P:Control"); for (uint16 i = 0; i < 20; i++) _vm->_moveImages[i] = new Image(controlFile, _vm); @@ -426,6 +427,7 @@ void DisplayMan::setUpScreens() { moveButtonList->push_back(e->createButton(257, y, 8, VKEY_RTARROW, moveImages[18], moveImages[19])); moveButtonList->push_back(e->createButton(289, y, 9, 'p', moveImages[10], moveImages[11])); + // TODO: The INV file is not present in the Amiga version Common::File *invFile = _vm->_resource->openDataFile("P:Inv"); if (_vm->getPlatform() == Common::kPlatformWindows) { for (uint16 imgIdx = 0; imgIdx < 10; imgIdx++) diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp index 9b6ab6f936..70fe2fa00e 100644 --- a/engines/lab/engine.cpp +++ b/engines/lab/engine.cpp @@ -1154,7 +1154,10 @@ void LabEngine::go() { _graphics->setUpScreens(); _event->initMouse(); - _msgFont = _resource->getFont("P:AvanteG.12"); + if (getPlatform() != Common::kPlatformAmiga) + _msgFont = _resource->getFont("F:AvanteG.12"); + else + _msgFont = _resource->getFont("F:Map.fon"); _event->mouseHide(); Intro *intro = new Intro(this); diff --git a/engines/lab/intro.cpp b/engines/lab/intro.cpp index abd7018b59..22ad25abfc 100644 --- a/engines/lab/intro.cpp +++ b/engines/lab/intro.cpp @@ -325,7 +325,7 @@ void Intro::introSequence() { _vm->_graphics->blackAllScreen(); _vm->_music->updateMusic(); - TextFont *msgFont = _vm->_resource->getFont("P:Map.fon"); + TextFont *msgFont = _vm->_resource->getFont("F:Map.fon"); _vm->_anim->_noPalChange = true; nReadPict("Intro.1", true); diff --git a/engines/lab/resource.cpp b/engines/lab/resource.cpp index 668b31b6d2..7629d0c389 100644 --- a/engines/lab/resource.cpp +++ b/engines/lab/resource.cpp @@ -51,6 +51,7 @@ void Resource::readStaticText() { } TextFont *Resource::getFont(const char *fileName) { + // TODO: Add support for the font format of the Amiga version Common::File *dataFile = openDataFile(fileName, MKTAG('V', 'G', 'A', 'F')); uint32 headerSize = 4 + 2 + 256 * 3 + 4; @@ -154,15 +155,29 @@ Common::String Resource::translateFileName(Common::String filename) { filename.toUppercase(); Common::String fileNameStrFinal; - if (filename.hasPrefix("P:")) { + if (filename.hasPrefix("P:") || filename.hasPrefix("F:")) { if (_vm->_isHiRes) fileNameStrFinal = "GAME/SPICT/"; else fileNameStrFinal = "GAME/PICT/"; - } else if (filename.hasPrefix("LAB:")) - fileNameStrFinal = "GAME/"; - else if (filename.hasPrefix("MUSIC:")) - fileNameStrFinal = "GAME/MUSIC/"; + + if (_vm->getPlatform() == Common::kPlatformAmiga) { + if (filename.hasPrefix("P:")) { + fileNameStrFinal = "PICT/"; + } else { + fileNameStrFinal = "LABFONTS/"; + filename += "T"; // all the Amiga fonts have a ".FONT" suffix + } + } + } else if (filename.hasPrefix("LAB:")) { + if (_vm->getPlatform() != Common::kPlatformAmiga) + fileNameStrFinal = "GAME/"; + } else if (filename.hasPrefix("MUSIC:")) { + if (_vm->getPlatform() != Common::kPlatformAmiga) + fileNameStrFinal = "GAME/MUSIC/"; + else + fileNameStrFinal = "MUSIC/"; + } if (filename.contains(':')) { while (filename[0] != ':') { diff --git a/engines/lab/special.cpp b/engines/lab/special.cpp index bf0938b45c..6e69578444 100644 --- a/engines/lab/special.cpp +++ b/engines/lab/special.cpp @@ -51,7 +51,7 @@ namespace Lab { * Does the things to properly set up the detective notes. */ void LabEngine::doNotes() { - TextFont *noteFont = _resource->getFont("P:Note.fon"); + TextFont *noteFont = _resource->getFont("F:Note.fon"); char *noteText = _resource->getText("Lab:Rooms/Notes"); Common::Rect textRect = Common::Rect(_utils->vgaScaleX(25) + _utils->svgaCord(15), _utils->vgaScaleY(50), _utils->vgaScaleX(295) - _utils->svgaCord(15), _utils->vgaScaleY(148)); @@ -66,7 +66,7 @@ void LabEngine::doNotes() { * OpenHiRes already called. */ void LabEngine::doWestPaper() { - TextFont *paperFont = _resource->getFont("P:News22.fon"); + TextFont *paperFont = _resource->getFont("F:News22.fon"); char *paperText = _resource->getText("Lab:Rooms/Date"); Common::Rect textRect = Common::Rect(_utils->vgaScaleX(57), _utils->vgaScaleY(77) + _utils->svgaCord(2), _utils->vgaScaleX(262), _utils->vgaScaleY(91)); @@ -74,7 +74,7 @@ void LabEngine::doWestPaper() { _graphics->closeFont(paperFont); delete[] paperText; - paperFont = _resource->getFont("P:News32.fon"); + paperFont = _resource->getFont("F:News32.fon"); paperText = _resource->getText("Lab:Rooms/Headline"); int fileLen = strlen(paperText) - 1; @@ -93,7 +93,7 @@ void LabEngine::doWestPaper() { _graphics->closeFont(paperFont); delete[] paperText; - paperFont = _resource->getFont("P:Note.fon"); + paperFont = _resource->getFont("F:Note.fon"); paperText = _resource->getText("Lab:Rooms/Col1"); charsPrinted = _graphics->flowText(paperFont, -4, 0, 0, false, false, false, true, _utils->vgaRectScale(45, y, 158, 148), paperText); delete[] paperText; @@ -109,7 +109,7 @@ void LabEngine::doWestPaper() { * Loads in the data for the journal. */ void LabEngine::loadJournalData() { - _journalFont = _resource->getFont("P:Journal.fon"); + _journalFont = _resource->getFont("F:Journal.fon"); _music->updateMusic(); char filename[20]; @@ -496,7 +496,7 @@ void LabEngine::doMonitor(char *background, char *textfile, bool isinteractive, _lastPage = false; _graphics->_fadePalette = _highPalette; - TextFont *monitorFont = _resource->getFont("P:Map.fon"); + TextFont *monitorFont = _resource->getFont("F:Map.fon"); Common::File *buttonFile = _resource->openDataFile("P:MonImage"); _monitorButton = new Image(buttonFile, this); delete buttonFile; |