diff options
-rw-r--r-- | engines/access/access.h | 2 | ||||
-rw-r--r-- | engines/access/amazon/amazon_game.cpp | 2 | ||||
-rw-r--r-- | engines/access/data.h | 2 | ||||
-rw-r--r-- | engines/access/detection.cpp | 5 | ||||
-rw-r--r-- | engines/access/detection_tables.h | 18 | ||||
-rw-r--r-- | engines/access/files.cpp | 4 | ||||
-rw-r--r-- | engines/access/inventory.cpp | 8 | ||||
-rw-r--r-- | engines/access/martian/martian_game.cpp | 172 | ||||
-rw-r--r-- | engines/access/martian/martian_game.h | 79 | ||||
-rw-r--r-- | engines/access/martian/martian_resources.cpp | 649 | ||||
-rw-r--r-- | engines/access/martian/martian_resources.h | 48 | ||||
-rw-r--r-- | engines/access/martian/martian_room.cpp | 139 | ||||
-rw-r--r-- | engines/access/martian/martian_room.h | 62 | ||||
-rw-r--r-- | engines/access/martian/martian_scripts.cpp | 48 | ||||
-rw-r--r-- | engines/access/martian/martian_scripts.h | 49 | ||||
-rw-r--r-- | engines/access/module.mk | 6 |
16 files changed, 1288 insertions, 5 deletions
diff --git a/engines/access/access.h b/engines/access/access.h index 5423354800..2185916c5a 100644 --- a/engines/access/access.h +++ b/engines/access/access.h @@ -59,7 +59,7 @@ namespace Access { enum { GType_Amazon = 1, - GType_MeanStreets = 2, + GType_MartianMemorandum = 2, GType_Noctropolis = 3 }; diff --git a/engines/access/amazon/amazon_game.cpp b/engines/access/amazon/amazon_game.cpp index c7fa6a7bdc..286a7126bc 100644 --- a/engines/access/amazon/amazon_game.cpp +++ b/engines/access/amazon/amazon_game.cpp @@ -175,8 +175,8 @@ void AmazonEngine::setupGame() { } // Miscellaneous + _fonts._font1.load(FONT6x6_INDEX, FONT6x6_DATA); _fonts._font2.load(FONT2_INDEX, FONT2_DATA); - _fonts._font6x6.load(FONT6x6_INDEX, FONT6x6_DATA); // Set player room and position _player->_roomNumber = 4; diff --git a/engines/access/data.h b/engines/access/data.h index e7a6d13fa1..1601c689bf 100644 --- a/engines/access/data.h +++ b/engines/access/data.h @@ -145,7 +145,7 @@ public: Common::Point _printOrg; Common::Point _printStart; int _printMaxX; - Font _font6x6; + Font _font1; Font _font2; public: FontManager(); diff --git a/engines/access/detection.cpp b/engines/access/detection.cpp index 47f7af6191..dd75b28177 100644 --- a/engines/access/detection.cpp +++ b/engines/access/detection.cpp @@ -23,6 +23,7 @@ #include "access/access.h" #include "access/amazon/amazon_game.h" +#include "access/martian/martian_game.h" #include "base/plugins.h" #include "common/savefile.h" @@ -73,6 +74,7 @@ Common::Platform AccessEngine::getPlatform() const { static const PlainGameDescriptor AccessGames[] = { {"Access", "Access"}, {"amazon", "Amazon: Guardians of Eden"}, + { "martian", "Martian Memorandum"}, {0, 0} }; @@ -123,6 +125,9 @@ bool AccessMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGa case Access::GType_Amazon: *engine = new Access::Amazon::AmazonEngine(syst, gd); break; + case Access::GType_MartianMemorandum: + *engine = new Access::Martian::MartianEngine(syst, gd); + break; default: error("Unknown game"); } diff --git a/engines/access/detection_tables.h b/engines/access/detection_tables.h index ad962f47b2..6a281a7e96 100644 --- a/engines/access/detection_tables.h +++ b/engines/access/detection_tables.h @@ -59,6 +59,24 @@ static const AccessGameDescription gameDescriptions[] = { 0 }, + { + // Martian Memorandum + { + "martian", + nullptr, + { + { "r00.ap", 0, "af98db5ee7f9ef86c6b1f43187a3691b", 31 }, + AD_LISTEND + }, + Common::EN_ANY, + Common::kPlatformDOS, + ADGF_NO_FLAGS, + GUIO1(GUIO_NONE) + }, + GType_MartianMemorandum, + 0 + }, + { AD_TABLE_END_MARKER, 0, 0 } }; diff --git a/engines/access/files.cpp b/engines/access/files.cpp index 1ebc2fa8eb..970b0b9019 100644 --- a/engines/access/files.cpp +++ b/engines/access/files.cpp @@ -22,6 +22,7 @@ #include "access/files.h" #include "access/amazon/amazon_resources.h" +#include "access/martian/martian_resources.h" #include "access/access.h" namespace Access { @@ -31,6 +32,9 @@ FileManager::FileManager(AccessEngine *vm): _vm(vm) { case GType_Amazon: _filenames = &Amazon::FILENAMES[0]; break; + case GType_MartianMemorandum: + _filenames = &Martian::FILENAMES[0]; + break; default: error("Unknown game"); } diff --git a/engines/access/inventory.cpp b/engines/access/inventory.cpp index 15668b0bc2..e90ad62344 100644 --- a/engines/access/inventory.cpp +++ b/engines/access/inventory.cpp @@ -23,6 +23,7 @@ #include "access/inventory.h" #include "access/access.h" #include "access/amazon/amazon_resources.h" +#include "access/martian/martian_resources.h" namespace Access { @@ -35,11 +36,16 @@ InventoryManager::InventoryManager(AccessEngine *vm) : Manager(vm) { _startAboutItem = 0; _startTravelItem = 0; - const char *const *names = Amazon::INVENTORY_NAMES; + const char *const *names; switch (vm->getGameID()) { case GType_Amazon: + names = Amazon::INVENTORY_NAMES; _inv.resize(85); break; + case GType_MartianMemorandum: + names = Martian::INVENTORY_NAMES; + _inv.resize(54); + break; default: error("Unknown game"); } diff --git a/engines/access/martian/martian_game.cpp b/engines/access/martian/martian_game.cpp new file mode 100644 index 0000000000..f087b56ac6 --- /dev/null +++ b/engines/access/martian/martian_game.cpp @@ -0,0 +1,172 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "access/resources.h" +#include "access/martian/martian_game.h" +#include "access/martian/martian_resources.h" +#include "access/martian/martian_room.h" +#include "access/martian/martian_scripts.h" +#include "access/amazon/amazon_resources.h" + +namespace Access { + +namespace Martian { + +MartianEngine::MartianEngine(OSystem *syst, const AccessGameDescription *gameDesc) : + AccessEngine(syst, gameDesc) { +} + +MartianEngine::~MartianEngine() { +} + +void MartianEngine::playGame() { + // Do introduction + doIntroduction(); + if (shouldQuit()) + return; + + // Setup the game + setupGame(); + + _screen->clearScreen(); + _screen->setPanel(0); + _screen->forceFadeOut(); + + _events->showCursor(); + + // Setup and execute the room + _room = new MartianRoom(this); + _scripts = new MartianScripts(this); + _room->doRoom(); +} + +void MartianEngine::doIntroduction() { + _screen->setInitialPalettte(); + _events->setCursor(CURSOR_ARROW); + _events->showCursor(); + _screen->setPanel(0); + + // TODO: Worry about implementing full intro sequence later + return; + + doTitle(); + if (shouldQuit()) + return; + + if (!_skipStart) { + _screen->setPanel(3); + doOpening(); + if (shouldQuit()) + return; + + if (!_skipStart) { + doTent(); + if (shouldQuit()) + return; + } + } + + doTitle(); +} + +void MartianEngine::doTitle() { + _screen->setDisplayScan(); + _destIn = &_buffer2; + + _screen->forceFadeOut(); + _events->hideCursor(); + + _sound->queueSound(0, 98, 30); + _sound->_soundPriority[0] = 1; + + _screen->_loadPalFlag = false; + _files->loadScreen(0, 3); + + _buffer2.copyFrom(*_screen); + _buffer1.copyFrom(*_screen); + _screen->forceFadeIn(); + _sound->playSound(1); + + byte *spriteData = _files->loadFile(0, 2); + _objectsTable[0] = new SpriteResource(this, spriteData, _files->_filesize, + DisposeAfterUse::YES); + + _sound->playSound(1); + + _screen->_loadPalFlag = false; + _files->loadScreen(0, 4); + _sound->playSound(1); + + _buffer2.copyFrom(*_screen); + _buffer1.copyFrom(*_screen); + _sound->playSound(1); + + const int COUNTDOWN[6] = { 2, 0x80, 1, 0x7d, 0, 0x87 }; + for (_pCount = 0; _pCount < 3; ++_pCount) { + _buffer2.copyFrom(_buffer1); + int id = READ_LE_UINT16(COUNTDOWN + _pCount * 4); + int xp = READ_LE_UINT16(COUNTDOWN + _pCount * 4 + 2); + _screen->plotImage(_objectsTable[0], id, Common::Point(xp, 71)); + } + // TODO: More to do + + delete _objectsTable[0]; +} + +void MartianEngine::doOpening() { + warning("TODO doOpening"); +} + +void MartianEngine::doTent() { + warning("TODO doTent"); +} + +void MartianEngine::setupGame() { + + // Setup timers + const int TIMER_DEFAULTS[] = { 4, 10, 8, 1, 1, 1, 1, 2 }; + for (int i = 0; i < 32; ++i) { + TimerEntry te; + te._initTm = te._timer = (i < 8) ? TIMER_DEFAULTS[i] : 1; + te._flag = 1; + + _timers.push_back(te); + } + + // Miscellaneous + // TODO: Replace with Martian fonts when located + _fonts._font1.load(Amazon::FONT6x6_INDEX, Amazon::FONT6x6_DATA); + _fonts._font2.load(Amazon::FONT2_INDEX, Amazon::FONT2_DATA); + + // Set player room and position + _player->_roomNumber = 7; + _player->_playerX = _player->_rawPlayer.x = TRAVEL_POS[_player->_roomNumber][0]; + _player->_playerY = _player->_rawPlayer.y = TRAVEL_POS[_player->_roomNumber][1]; +} + +void MartianEngine::drawHelp() { + error("TODO: drawHelp"); +} + +} // End of namespace Martian + +} // End of namespace Access diff --git a/engines/access/martian/martian_game.h b/engines/access/martian/martian_game.h new file mode 100644 index 0000000000..29fdd1b2ce --- /dev/null +++ b/engines/access/martian/martian_game.h @@ -0,0 +1,79 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef ACCESS_MARTIAN_GAME_H +#define ACCESS_MARTIAN_GAME_H + +#include "access/access.h" + +namespace Access { + +namespace Martian { + +class MartianEngine : public AccessEngine { +private: + bool _skipStart; + + /** + * Do the game introduction + */ + void doIntroduction(); + + /** + * Do title sequence + */ + void doTitle(); + + /** + * Do opening sequence + */ + void doOpening(); + + /** + * Do tent scene of introduction + */ + void doTent(); + + /** + * Setup variables for the game + */ + void setupGame(); + +protected: + /** + * Play the game + */ + virtual void playGame(); +public: +public: + MartianEngine(OSystem *syst, const AccessGameDescription *gameDesc); + + virtual ~MartianEngine(); + + void drawHelp(); +}; + +} // End of namespace Martian + +} // End of namespace Access + +#endif /* ACCESS_MARTIAN_GAME_H */ diff --git a/engines/access/martian/martian_resources.cpp b/engines/access/martian/martian_resources.cpp new file mode 100644 index 0000000000..6e881f3b36 --- /dev/null +++ b/engines/access/martian/martian_resources.cpp @@ -0,0 +1,649 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "access/martian/martian_resources.h" +#include "access/access.h" + +namespace Access { + +namespace Martian { + +const char *const FILENAMES[] = { + "R00.AP", "R01.AP", "R02.AP", "R03.AP", "R04.AP", "R05.AP", "R06.AP", "R07.AP", + "R08.AP", "R09.AP", "R10.AP", "R11.AP", "R12.AP", "R13.AP", "R14.AP", "R15.AP", + "R16.AP", "R17.AP", "R18.AP", "R19.AP", "R20.AP", "R21.AP", "R22.AP", "R23.AP", + "R24.AP", "R25.AP", "R26.AP", "R27.AP", "R28.AP", "R29.AP", "R30.AP", "R31.AP", + "R32.AP", "R34.AP", "R35.AP", "R36.AP", "R37.AP", "R38.AP", "R39.AP", "R40.AP", + "TITLE.AP","R42.AP","S01.AP", "R45.AP","SOUND.AP","MUSIC.AP","DEAD.AP","EST.AP", + "W02.AP", "C02.AP", "C05.AP", "C04.AP", "C10.AP", "C03.AP", "C07.AP", "LOVE.AP", + "CAFE.AP","C08.AP", "C18.AP", "C19.AP", "C21.AP", "C23.AP", "C12.AP", "C16.AP", + "CAFE1.AP","C05A.AP","C06.AP","C11.AP", "C13.AP", "C20.AP", "C16A.AP","C09.AP", + "R45.AP", "R46.AP", "R47.AP", "R48.AP", "R49.AP" +}; + +const byte MOUSE0[] = { + 0, 0, 0, 0, 0, 2, 0xF7, 5, 0, 3, 0xF7, 0xF7, 5, 0, 3, + 0xF7, 0xF7, 5, 0, 4, 0xF7, 0xF7, 0xF7, 5, 0, 4, 0xF7, + 0xF7, 0xF7, 5, 0, 5, 0xF7, 0xF7, 0xF7, 0xF7, 5, 0, 5, + 0xF7, 0xF7, 0xF7, 0xF7, 5, 0, 6, 0xF7, 0xF7, 0xF7, 0xF7, + 0xF7, 5, 0, 6, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 5, 0, 7, + 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 5, 0, 6, 0xF7, 0xF7, + 0xF7, 0xF7, 0xF7, 5, 0, 5, 0xF7, 0xF7, 0xF7, 0xF7, 5, + 2, 3, 0xF7, 0xF7, 5, 3, 3, 0xF7, 0xF7, 5, 3, 3, 0xF7, + 0xF7, 5, 4, 2, 0xF7, 5 +}; +const byte MOUSE1[] = { + 7, 0, 7, 0, 6, 1, 0xF7, 4, 5, 0xFF, 0xFF, 0, 0xFF, 0xFF, + 3, 7, 0xFF, 0, 0, 0, 0, 0, 0xFF, 2, 9, 0xFF, 0, 0, 0, + 0xF7, 0, 0, 0, 0xFF, 1, 11, 0xFF, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0xFF, 1, 11, 0xFF, 0, 0, 0, 0, 0xF7, 0, 0, + 0, 0, 0xFF, 0, 13, 0xF7, 0, 0, 0xF7, 0, 0xF7, 0, 0xF7, + 0, 0xF7, 0, 0, 0xF7, 1, 11, 0xFF, 0, 0, 0, 0, 0xF7, + 0, 0, 0, 0, 0xFF, 1, 11, 0xFF, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0xFF, 2, 9, 0xFF, 0, 0, 0, 0xF7, 0, 0, 0, 0xFF, + 3, 7, 0xFF, 0, 0, 0, 0, 0, 0xFF, 4, 5, 0xFF, 0xFF, 0, + 0xFF, 0xFF, 6, 1, 0xF7, 0, 0, 0, 0, 0, 0 +}; +const byte MOUSE2[] = { + 8, 0, 8, 0, 0, 0, 0, 0, 7, 2, 4, 5, 7, 2, 4, 5, 7, 2, + 4, 5, 7, 2, 4, 5, 7, 2, 4, 5, 2, 12, 4, 4, 4, 4, 4, + 0, 4, 4, 4, 4, 4, 5, 7, 2, 4, 5, 7, 2, 4, 5, 7, 2, 4, + 5, 7, 2, 4, 5, 7, 2, 4, 5, 0, 0, 0, 0, 0, 0 +}; +const byte MOUSE3[] = { + 0, 0, 0, 0, 0, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 0, 12, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 5, 0, 12, + 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 5, 5, 0, 12, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 5, 0, 12, 6, 6, 6, 6, 6, 5, + 6, 6, 6, 6, 6, 5, 0, 12, 6, 6, 6, 6, 5, 0, 0, 6, 6, + 6, 6, 5, 0, 12, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 5, + 0, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 0, 12, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 0, 12, 6, 6, 6, + 6, 6, 5, 6, 6, 6, 6, 6, 5, 0, 12, 6, 6, 6, 6, 6, 5, + 6, 6, 6, 6, 6, 5, 0, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 5, 1, 11, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, + 0, 0, 0, 0, 0 +}; +const byte *CURSORS[4] = { MOUSE0, MOUSE1, MOUSE2, MOUSE3 }; + +const int TRAVEL_POS[][2] = { + { -1, 0 }, + { 228, 117 }, + { 28, 98 }, + { 161, 140 }, + { 160, 116 }, + { 34, 119 }, + { 166, 105 }, + { 260, 126 }, + { 37, 107 }, + { 78, 139 }, + { 0, 0 }, + { 13, 112 }, + { 0, 0 }, + { 16, 122 }, + { 33, 126 }, + { 10, 160 }, + { 150, 102 }, + { 134, 160 }, + { 160, 76 }, + { 0, 0 }, + { 0, 0 }, + { 36, 116 }, + { 214, 113 }, + { 30, 127 }, + { 143, 131 }, + { 163, 103 }, + { 254, 106 }, + { 28, 161 }, + { 11, 164 }, + { 276, 134 }, + { 93, 118 }, + { 22, 150 }, + { 282, 156 }, + { 149, 92 }, + { 0, 0 }, + { 43, 410 }, + { 0, 0 }, + { 10, 136 }, + { 41, 100 }, + { 157, 97 }, + { -1, 5 }, + { -1, 4 }, + { -1, 10 }, + { -1, 7 }, + { -1, 3 }, + { -1, 8 }, + { -1, 6 }, + { -1, 20 }, + { -1, 18 }, + { -1, 19 }, + { -1, 21 } +}; + +const char *const INVENTORY_NAMES[] = { + "CAMERA", "LENS", "PHOTOS", "MAIL", "GUN", "CASH", "COMLINK", "AMMO", + "LOCKPICK KIT", "EARRING", "RECIEPTS", "PAPER", "LADDER", "BOOTS", + "DOCUMENTS", "KNIFE", "DAGGER", "KEYS", "ROCK", "LOG", "SHOVEL", + "STONE", "REMOTE CONTROL", "FOOD AND WATER", "DOOR CARD KEY", + "FLASHLIGHT", "INTERLOCK KEY", "TOOLS", "REBREATHER", "JET PACK", + "ROD", "HCL2", "SAFE CARD KEY", "TUNING FORK", "STONE", "ROSE", + "KEY", "NOTE", "ALLEN WRENCH", "HOVER BOARD", "BLUE PRINTS", + "LETTER", "MEMORANDUM", "MARKERS", "FILM", "ANDRETTI FILM", + "GLASSES", "AMULET", "FACIAL KIT", "CAT FOOD", "MONKEY WRENCH", + "BIG DICK CARD", "BRA", "BOLT" +}; + +const byte ROOM_TABLE1[] = { + 0x00, 0x2f, 0x00, 0x0d, 0x00, 0x30, 0x22, 0x30, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xc0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x05, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE2[] = { + 0x00, 0x2f, 0x00, 0x0d, 0x00, 0x32, 0x28, 0x25, 0x02, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0x00, 0xff, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0xc8, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x06, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE3[] = { + 0x00, 0x2f, 0x00, 0x0f, 0x00, 0x1e, 0x19, 0x24, 0x03, 0x00, + 0x00, 0x00, 0x03, 0x03, 0x00, 0x03, 0x00, 0xff, 0x03, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x78, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x06, 0x00, 0x01, 0x00, 0x2e, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE4[] = { + 0x00, 0x2f, 0x00, 0x06, 0x00, 0x36, 0x27, 0x32, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x04, 0x00, 0x03, 0x00, 0xff, 0x04, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0xc8, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x07, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x05, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE5[] = { + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x28, 0x19, 0x36, 0x05, 0x00, + 0x00, 0x00, 0x05, 0x05, 0x00, 0x03, 0x00, 0xff, 0x05, 0x00, + 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0xa0, 0x20, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x02, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x03, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE6[] = { + 0x00, 0x2f, 0x00, 0x07, 0x00, 0x40, 0x36, 0x36, 0x06, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x00, 0x03, 0x00, 0xff, 0x06, 0x00, + 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0xfe, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x13, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x08, 0x00, + 0x01, 0x00, 0x2e, 0x00, 0x14, 0x00, 0x01, 0x00, 0x2e, 0x00, + 0x07, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE7[] = { + 0x00, 0x2f, 0x00, 0x0e, 0x00, 0x40, 0x32, 0x3b, 0x07, 0x00, + 0x00, 0x00, 0x07, 0x07, 0x00, 0x03, 0x00, 0xff, 0x07, 0x00, + 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0xfe, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x14, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE8[] = { + 0x00, 0x2f, 0x00, 0x0a, 0x00, 0x30, 0x22, 0x46, 0x08, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x03, 0x00, 0xff, 0x08, 0x00, + 0x02, 0x00, 0x08, 0x00, 0x01, 0x00, 0xc0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, +}; +const byte ROOM_TABLE9[] = { + 0x00, 0x2f, 0x00, 0x07, 0x00, 0x32, 0x0c, 0x29, 0x09, 0x00, + 0x00, 0x00, 0x09, 0x09, 0x00, 0x03, 0x00, 0xff, 0x09, 0x00, + 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0xc8, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, +}; +const byte ROOM_TABLE11[] = { + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x40, 0x3a, 0x22, 0x0b, 0x00, + 0x00, 0x00, 0x0b, 0x0b, 0x00, 0x03, 0x00, 0xff, 0x0b, 0x00, + 0x02, 0x00, 0x0b, 0x00, 0x01, 0x00, 0xfe, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, +}; +const byte ROOM_TABLE13[] = { + 0x00, 0x2f, 0x00, 0x0c, 0x00, 0x40, 0x36, 0x2c, 0x0d, 0x00, + 0x00, 0x00, 0x0d, 0x0d, 0x00, 0x03, 0x00, 0xff, 0x0d, 0x00, + 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0xe6, 0x40, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0x2e, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x2e, 0x00, + 0x15, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE14[] = { + 0x00, 0x2f, 0x00, 0x05, 0x00, 0x40, 0x3e, 0x33, 0x0e, 0x00, + 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x03, 0x00, 0xff, 0x0e, 0x00, + 0x02, 0x00, 0x0e, 0x00, 0x01, 0x00, 0xfe, 0x40, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x09, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0x2e, 0x00, 0x13, 0x00, 0x01, 0x00, 0x2e, 0x00, + 0x0a, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE15[] = { + 0x00, 0x2f, 0x00, 0x0c, 0x00, 0x28, 0x0c, 0x5e, 0x0f, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x03, 0x00, 0xff, 0x0f, 0x00, + 0x02, 0x00, 0x0f, 0x00, 0x01, 0x00, 0xb4, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x11, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE16[] = { + 0x00, 0x2f, 0x00, 0x05, 0x00, 0x28, 0x1e, 0x24, 0x10, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x00, 0x03, 0x00, 0xff, 0x10, 0x00, + 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0xa0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x07, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE17[] = { + 0x00, 0x2f, 0x00, 0x06, 0x00, 0x28, 0x19, 0x2b, 0x11, 0x00, + 0x00, 0x00, 0x11, 0x11, 0x00, 0x03, 0x00, 0xff, 0x11, 0x00, + 0x02, 0x00, 0x11, 0x00, 0x01, 0x00, 0xa0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x05, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE18[] = { + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2d, 0x14, 0x3c, 0x12, 0x00, + 0x00, 0x00, 0x12, 0x12, 0x00, 0x03, 0x00, 0xff, 0x12, 0x00, + 0x02, 0x00, 0x12, 0x00, 0x01, 0x00, 0xb1, 0x40, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x05, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE21[] = { + 0x00, 0x2f, 0x00, 0x07, 0x00, 0x3c, 0x2a, 0x29, 0x15, 0x00, + 0x00, 0x00, 0x15, 0x15, 0x00, 0x03, 0x00, 0xff, 0x15, 0x00, + 0x02, 0x00, 0x15, 0x00, 0x01, 0x00, 0xf0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x12, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE22[] = { + 0x00, 0x2f, 0x00, 0x0a, 0x00, 0x40, 0x2d, 0x27, 0x16, 0x00, + 0x00, 0x00, 0x16, 0x16, 0x00, 0x03, 0x00, 0xff, 0x16, 0x00, + 0x02, 0x00, 0x16, 0x00, 0x01, 0x00, 0xfe, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x16, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE23[] = { + 0x00, 0x2f, 0x00, 0x0a, 0x00, 0x40, 0x38, 0x24, 0x17, 0x00, + 0x00, 0x00, 0x17, 0x17, 0x00, 0x03, 0x00, 0xff, 0x17, 0x00, + 0x02, 0x00, 0x17, 0x00, 0x01, 0x00, 0xfe, 0x40, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x17, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE24[] = { + 0x00, 0x2f, 0x00, 0x06, 0x00, 0x3e, 0x10, 0x62, 0x18, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x03, 0x00, 0xff, 0x18, 0x00, + 0x02, 0x00, 0x18, 0x00, 0x01, 0x00, 0xf8, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x16, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE25[] = { + 0x00, 0x2f, 0x00, 0x0e, 0x00, 0x3e, 0x37, 0x19, 0x19, 0x00, + 0x00, 0x00, 0x19, 0x19, 0x00, 0x03, 0x00, 0xff, 0x19, 0x00, + 0x02, 0x00, 0x19, 0x00, 0x01, 0x00, 0xf8, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x10, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE26[] = { + 0x00, 0x2f, 0x00, 0x06, 0x00, 0x34, 0x28, 0x28, 0x1a, 0x00, + 0x00, 0x00, 0x1a, 0x1a, 0x00, 0x03, 0x00, 0xff, 0x1a, 0x00, + 0x02, 0x00, 0x1a, 0x00, 0x01, 0x00, 0xd0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x07, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE27[] = { + 0x00, 0x2f, 0x00, 0x0f, 0x00, 0x1b, 0x16, 0x18, 0x1b, 0x00, + 0x00, 0x00, 0x1b, 0x1b, 0x00, 0x03, 0x00, 0xff, 0x1b, 0x00, + 0x02, 0x00, 0x1b, 0x00, 0x01, 0x00, 0x70, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE28[] = { + 0x00, 0x2f, 0x00, 0x09, 0x00, 0x25, 0x10, 0x43, 0x1c, 0x00, + 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x03, 0x00, 0xff, 0x1c, 0x00, + 0x02, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x94, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, +}; +const byte ROOM_TABLE29[] = { + 0x00, 0x2f, 0x00, 0x0a, 0x00, 0x20, 0x18, 0x56, 0x1d, 0x00, + 0x00, 0x00, 0x1d, 0x1d, 0x00, 0x03, 0x00, 0xff, 0x1d, 0x00, + 0x02, 0x00, 0x1d, 0x00, 0x01, 0x00, 0x80, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x17, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x10, 0x00, + 0x02, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE30[] = { + 0x00, 0x2f, 0x00, 0x07, 0x00, 0x3f, 0x1c, 0x27, 0x1e, 0x00, + 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x03, 0x00, 0xff, 0x1e, 0x00, + 0x02, 0x00, 0x1e, 0x00, 0x01, 0x00, 0xfe, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x1e, 0x00, 0x04, 0x00, 0xff, 0xff, 0x2e, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x15, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE31[] = { + 0x00, 0x2f, 0x00, 0x0d, 0x00, 0x32, 0x2e, 0x69, 0x1f, 0x00, + 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x03, 0x00, 0xff, 0x1f, 0x00, + 0x02, 0x00, 0x1f, 0x00, 0x01, 0x00, 0xc8, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, +}; +const byte ROOM_TABLE32[] = { + 0x00, 0x2f, 0x00, 0x07, 0x00, 0x40, 0x3b, 0x4b, 0x20, 0x00, + 0x00, 0x00, 0x20, 0x20, 0x00, 0x03, 0x00, 0xff, 0x20, 0x00, + 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0xfe, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x05, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE33[] = { + 0x00, 0x2f, 0x00, 0x0b, 0x00, 0x30, 0x10, 0x51, 0x21, 0x00, + 0x00, 0x00, 0x21, 0x21, 0x00, 0x03, 0x00, 0xff, 0x21, 0x00, + 0x02, 0x00, 0x21, 0x00, 0x01, 0x00, 0xc0, 0x40, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, +}; +const byte ROOM_TABLE35[] = { + 0x00, 0x2f, 0x00, 0x0f, 0x00, 0x1e, 0x18, 0x25, 0x23, 0x00, + 0x00, 0x00, 0x23, 0x23, 0x00, 0x03, 0x00, 0xff, 0x23, 0x00, + 0x02, 0x00, 0x23, 0x00, 0x01, 0x00, 0x78, 0x18, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x07, 0x00, + 0x01, 0x00, 0x2e, 0x00, 0x16, 0x00, 0x01, 0x00, 0x2e, 0x00, + 0x0c, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE37[] = { + 0x00, 0x2f, 0x00, 0x0f, 0x00, 0x3f, 0x3a, 0x1a, 0x25, 0x00, + 0x00, 0x00, 0x25, 0x25, 0x00, 0x03, 0x00, 0xff, 0x25, 0x00, + 0x02, 0x00, 0x25, 0x00, 0x01, 0x00, 0xfe, 0x40, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x0d, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE38[] = { + 0x00, 0x2f, 0x00, 0x0d, 0x00, 0x40, 0x32, 0x32, 0x26, 0x00, + 0x00, 0x00, 0x26, 0x26, 0x00, 0x03, 0x00, 0xff, 0x26, 0x00, + 0x02, 0x00, 0x26, 0x00, 0x01, 0x00, 0xf0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x0b, 0x00, 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE39[] = { + 0x00, 0x2f, 0x00, 0x0a, 0x00, 0x3c, 0x10, 0x4c, 0x27, 0x00, + 0x00, 0x00, 0x27, 0x27, 0x00, 0x03, 0x00, 0xff, 0x27, 0x00, + 0x02, 0x00, 0x27, 0x00, 0x01, 0x00, 0xf0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x2e, 0x00, 0x11, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x0f, 0x00, + 0x01, 0x00, 0xff, 0xff, +}; +const byte ROOM_TABLE47[] = { + 0x00, 0x2f, 0x00, 0x06, 0x00, 0x28, 0x1e, 0x32, 0x2b, 0x00, + 0x00, 0x00, 0x46, 0x2b, 0x00, 0x03, 0x00, 0xff, 0x2b, 0x00, + 0x02, 0x00, 0x2b, 0x00, 0x01, 0x00, 0xf0, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x2b, 0x00, 0x04, 0x00, 0xff, 0xff, 0x2e, 0x00, + 0x04, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, +}; +const byte *ROOM_TABLE[] = { + nullptr, ROOM_TABLE1, ROOM_TABLE2, ROOM_TABLE3, ROOM_TABLE4, ROOM_TABLE5, ROOM_TABLE6, + ROOM_TABLE7, ROOM_TABLE8, ROOM_TABLE9, nullptr, ROOM_TABLE11, nullptr, ROOM_TABLE13, + ROOM_TABLE14, ROOM_TABLE15, ROOM_TABLE16, ROOM_TABLE17, ROOM_TABLE18, nullptr, nullptr, + ROOM_TABLE21, ROOM_TABLE22, ROOM_TABLE23, ROOM_TABLE24, ROOM_TABLE25, ROOM_TABLE26, ROOM_TABLE27, + ROOM_TABLE28, ROOM_TABLE29, ROOM_TABLE30, ROOM_TABLE31, ROOM_TABLE32, ROOM_TABLE33, nullptr, + ROOM_TABLE35, nullptr, ROOM_TABLE37, ROOM_TABLE38, ROOM_TABLE39, nullptr, nullptr, + nullptr, nullptr, nullptr, nullptr, nullptr, ROOM_TABLE47 +}; + +const byte CHAR_TABLE0[] = { + 0x02, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, +}; +const byte CHAR_TABLE2[] = { + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x32, 0x33, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x33, + 0x00, 0x02, 0x00, 0x33, 0x00, 0x0b, 0x00, 0x33, 0x00, 0x03, + 0x00, 0x33, 0x00, 0x0c, 0x00, 0x33, 0x00, 0x04, 0x00, 0x33, + 0x00, 0x0d, 0x00, 0x33, 0x00, 0x05, 0x00, 0x33, 0x00, 0x0e, + 0x00, 0x33, 0x00, 0x06, 0x00, 0x33, 0x00, 0x0f, 0x00, 0x33, + 0x00, 0x07, 0x00, 0x33, 0x00, 0x10, 0x00, 0x33, 0x00, 0x08, + 0x00, 0x33, 0x00, 0x11, 0x00, 0x33, 0x00, 0x09, 0x00, 0x33, + 0x00, 0x12, 0x00, 0x33, 0x00, 0x0a, 0x00, 0x33, 0x00, 0x13, + 0x00, 0xff, 0xff, +}; +const byte CHAR_TABLE3[] = { + 0x02, 0x31, 0x00, 0x03, 0x00, 0x35, 0x00, 0x37, 0x00, 0x02, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x4b, 0x37, 0x00, 0x01, 0x00, + 0xff, 0x37, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE4[] = { + 0x01, 0x31, 0x00, 0x0a, 0x00, 0x36, 0x00, 0x35, 0x00, 0x02, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x49, 0x35, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x35, + 0x00, 0x03, 0x00, 0x35, 0x00, 0x0c, 0x00, 0x35, 0x00, 0x04, + 0x00, 0x35, 0x00, 0x0d, 0x00, 0x35, 0x00, 0x05, 0x00, 0x35, + 0x00, 0x0e, 0x00, 0x35, 0x00, 0x06, 0x00, 0x35, 0x00, 0x0f, + 0x00, 0x35, 0x00, 0x07, 0x00, 0x35, 0x00, 0x10, 0x00, 0x35, + 0x00, 0x08, 0x00, 0x35, 0x00, 0x11, 0x00, 0x35, 0x00, 0x09, + 0x00, 0x35, 0x00, 0x12, 0x00, 0x35, 0x00, 0x0a, 0x00, 0x35, + 0x00, 0x13, 0x00, 0x35, 0x00, 0x0b, 0x00, 0x35, 0x00, 0x14, + 0x00, 0xff, 0xff, +}; +const byte CHAR_TABLE5[] = { + 0x01, 0x31, 0x00, 0x08, 0x00, 0x37, 0x00, 0x34, 0x00, 0x02, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x48, 0x34, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, 0x43, + 0x00, 0x00, 0x00, 0x34, 0x00, 0x03, 0x00, 0x43, 0x00, 0x01, + 0x00, 0x34, 0x00, 0x04, 0x00, 0x43, 0x00, 0x02, 0x00, 0x34, + 0x00, 0x05, 0x00, 0x43, 0x00, 0x03, 0x00, 0x34, 0x00, 0x06, + 0x00, 0x43, 0x00, 0x04, 0x00, 0x34, 0x00, 0x07, 0x00, 0x43, + 0x00, 0x05, 0x00, 0x34, 0x00, 0x08, 0x00, 0x43, 0x00, 0x06, + 0x00, 0x34, 0x00, 0x09, 0x00, 0x43, 0x00, 0x07, 0x00, 0x34, + 0x00, 0x0a, 0x00, 0x43, 0x00, 0x08, 0x00, 0x34, 0x00, 0x0b, + 0x00, 0x43, 0x00, 0x09, 0x00, 0x34, 0x00, 0x0c, 0x00, 0x43, + 0x00, 0x0a, 0x00, 0x34, 0x00, 0x0d, 0x00, 0x43, 0x00, 0x0b, + 0x00, 0x34, 0x00, 0x0e, 0x00, 0x43, 0x00, 0x0c, 0x00, 0x34, + 0x00, 0x0f, 0x00, 0x43, 0x00, 0x0d, 0x00, 0x34, 0x00, 0x10, + 0x00, 0xff, 0xff, +}; +const byte CHAR_TABLE6[] = { + 0x02, 0x31, 0x00, 0x03, 0x00, 0x38, 0x00, 0x44, 0x00, 0x03, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x4e, 0x44, 0x00, 0x01, 0x00, + 0xff, 0x44, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE7[] = { + 0x02, 0x31, 0x00, 0x01, 0x00, 0x39, 0x00, 0x38, 0x00, 0x02, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x4c, 0x38, 0x00, 0x01, 0x00, + 0xff, 0x38, 0x00, 0x03, 0x00, 0x38, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE8[] = { + 0x03, 0xff, 0xff, 0xff, 0xff, 0x3a, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x3b, 0x00, 0x01, 0x00, + 0xff, 0x3b, 0x00, 0x02, 0x00, 0x3b, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE9[] = { + 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x59, 0x4a, 0x00, 0x01, 0x00, + 0xff, 0x4a, 0x00, 0x02, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE10[] = { + 0x01, 0x31, 0x00, 0x0a, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x02, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x4a, 0x36, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x36, 0x00, 0x00, 0x00, 0x36, + 0x00, 0x03, 0x00, 0x36, 0x00, 0x13, 0x00, 0x36, 0x00, 0x04, + 0x00, 0x36, 0x00, 0x14, 0x00, 0x36, 0x00, 0x05, 0x00, 0x36, + 0x00, 0x15, 0x00, 0x36, 0x00, 0x06, 0x00, 0x36, 0x00, 0x16, + 0x00, 0x36, 0x00, 0x07, 0x00, 0x36, 0x00, 0x17, 0x00, 0x36, + 0x00, 0x08, 0x00, 0x36, 0x00, 0x18, 0x00, 0x36, 0x00, 0x09, + 0x00, 0x36, 0x00, 0x19, 0x00, 0x36, 0x00, 0x0a, 0x00, 0x36, + 0x00, 0x1a, 0x00, 0x36, 0x00, 0x0b, 0x00, 0x36, 0x00, 0x1b, + 0x00, 0x36, 0x00, 0x0c, 0x00, 0x36, 0x00, 0x1c, 0x00, 0x36, + 0x00, 0x0d, 0x00, 0x36, 0x00, 0x1d, 0x00, 0x36, 0x00, 0x0e, + 0x00, 0x36, 0x00, 0x1e, 0x00, 0x36, 0x00, 0x0f, 0x00, 0x36, + 0x00, 0x1f, 0x00, 0x36, 0x00, 0x10, 0x00, 0x36, 0x00, 0x20, + 0x00, 0x36, 0x00, 0x11, 0x00, 0x36, 0x00, 0x21, 0x00, 0x36, + 0x00, 0x12, 0x00, 0x36, 0x00, 0x22, 0x00, 0xff, 0xff, +}; +const byte CHAR_TABLE11[] = { + 0x03, 0xff, 0xff, 0xff, 0xff, 0x3d, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x55, 0x45, 0x00, 0x01, 0x00, + 0xff, 0x45, 0x00, 0x02, 0x00, 0x45, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE12[] = { + 0x03, 0xff, 0xff, 0xff, 0xff, 0x3e, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x40, 0x00, 0x01, 0x00, + 0xff, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE13[] = { + 0x00, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x46, 0x00, 0x02, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x56, 0x46, 0x00, 0x01, 0x00, + 0xff, 0x46, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x46, + 0x00, 0x04, 0x00, 0x46, 0x00, 0x0d, 0x00, 0x46, 0x00, 0x05, + 0x00, 0x46, 0x00, 0x0e, 0x00, 0x46, 0x00, 0x06, 0x00, 0x46, + 0x00, 0x0f, 0x00, 0x46, 0x00, 0x07, 0x00, 0x46, 0x00, 0x10, + 0x00, 0x46, 0x00, 0x08, 0x00, 0x46, 0x00, 0x11, 0x00, 0x46, + 0x00, 0x09, 0x00, 0x46, 0x00, 0x12, 0x00, 0x46, 0x00, 0x0a, + 0x00, 0x46, 0x00, 0x13, 0x00, 0x46, 0x00, 0x0b, 0x00, 0x46, + 0x00, 0x14, 0x00, 0x46, 0x00, 0x0c, 0x00, 0x46, 0x00, 0x15, + 0x00, 0xff, 0xff, +}; +const byte CHAR_TABLE15[] = { + 0x00, 0xff, 0xff, 0xff, 0xff, 0x41, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x57, 0x47, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0x47, + 0x00, 0x02, 0x00, 0x47, 0x00, 0x05, 0x00, 0x47, 0x00, 0x03, + 0x00, 0x47, 0x00, 0x06, 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, + 0x00, 0x07, 0x00, 0xff, 0xff, +}; +const byte CHAR_TABLE16[] = { + 0x03, 0xff, 0xff, 0xff, 0xff, 0x42, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x54, 0x41, 0x00, 0x01, 0x00, + 0xff, 0x41, 0x00, 0x02, 0x00, 0x41, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE18[] = { + 0x02, 0x31, 0x00, 0x07, 0x00, 0x44, 0x00, 0x3c, 0x00, 0x03, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x50, 0x3c, 0x00, 0x01, 0x00, + 0xff, 0x3c, 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE19[] = { + 0x02, 0x31, 0x00, 0x07, 0x00, 0x45, 0x00, 0x3d, 0x00, 0x03, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x51, 0x3d, 0x00, 0x01, 0x00, + 0xff, 0x3d, 0x00, 0x02, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE20[] = { + 0x02, 0x31, 0x00, 0x02, 0x00, 0x46, 0x00, 0x48, 0x00, 0x02, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x58, 0x48, 0x00, 0x01, 0x00, + 0xff, 0x48, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE21[] = { + 0x02, 0x31, 0x00, 0x07, 0x00, 0x47, 0x00, 0x3e, 0x00, 0x03, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x52, 0x3e, 0x00, 0x01, 0x00, + 0xff, 0x3e, 0x00, 0x02, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE23[] = { + 0x02, 0x31, 0x00, 0x08, 0x00, 0x49, 0x00, 0x3f, 0x00, 0x03, + 0x00, 0x80, 0x00, 0xf7, 0x00, 0x53, 0x3f, 0x00, 0x01, 0x00, + 0xff, 0x3f, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xff, + 0xff, +}; +const byte CHAR_TABLE24[] = { + 0x02, 0x32, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x47, 0x32, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x32, 0x00, 0x01, 0x00, 0x32, + 0x00, 0x03, 0x00, 0x32, 0x00, 0x0a, 0x00, 0x32, 0x00, 0x04, + 0x00, 0x32, 0x00, 0x0b, 0x00, 0x32, 0x00, 0x05, 0x00, 0x32, + 0x00, 0x0c, 0x00, 0x32, 0x00, 0x06, 0x00, 0x32, 0x00, 0x0d, + 0x00, 0x32, 0x00, 0x07, 0x00, 0x32, 0x00, 0x0e, 0x00, 0x32, + 0x00, 0x08, 0x00, 0x32, 0x00, 0x0f, 0x00, 0x32, 0x00, 0x09, + 0x00, 0x32, 0x00, 0x10, 0x00, 0xff, 0xff +}; +const byte CHAR_TABLE25[] = { + 0x02, 0x39, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF +}; +const byte CHAR_TABLE26[] = { + 0x01, 0x3a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x3a, 0x00, 0x02, 0x00, + 0xff, 0x3a, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x42, + 0x00, 0x00, 0x00, 0x3a, 0x00, 0x04, 0x00, 0x42, 0x00, 0x01, + 0x00, 0x3a, 0x00, 0x05, 0x00, 0x42, 0x00, 0x02, 0x00, 0x3a, + 0x00, 0x06, 0x00, 0x42, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x07, + 0x00, 0x42, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x08, 0x00, 0x42, + 0x00, 0x05, 0x00, 0x3a, 0x00, 0x09, 0x00, 0x42, 0x00, 0x06, + 0x00, 0x3a, 0x00, 0x0a, 0x00, 0x42, 0x00, 0x07, 0x00, 0x3a, + 0x00, 0x0b, 0x00, 0x42, 0x00, 0x08, 0x00, 0x3a, 0x00, 0x0c, + 0x00, 0x42, 0x00, 0x09, 0x00, 0x3a, 0x00, 0x0d, 0x00, 0x42, + 0x00, 0x0a, 0x00, 0x3a, 0x00, 0x0e, 0x00, 0x42, 0x00, 0x0b, + 0x00, 0x3a, 0x00, 0x0f, 0x00, 0x42, 0x00, 0x0c, 0x00, 0x3a, + 0x00, 0x10, 0x00, 0x42, 0x00, 0x0d, 0x00, 0x3a, 0x00, 0x11, + 0x00, 0x42, 0x00, 0x0e, 0x00, 0x3a, 0x00, 0x12, 0x00, 0x42, + 0x00, 0x0f, 0x00, 0x3a, 0x00, 0x13, 0x00, 0x42, 0x00, 0x10, + 0x00, 0x3a, 0x00, 0x14, 0x00, 0x42, 0x00, 0x11, 0x00, 0x3a, + 0x00, 0x15, 0x00, 0xff, 0xff +}; +const byte CHAR_TABLE27[] = { + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x58, 0x49, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x49, 0x00, 0x00, 0x00, 0x49, + 0x00, 0x02, 0x00, 0x49, 0x00, 0x0a, 0x00, 0x49, 0x00, 0x03, + 0x00, 0x49, 0x00, 0x0b, 0x00, 0x49, 0x00, 0x04, 0x00, 0x49, + 0x00, 0x0c, 0x00, 0x49, 0x00, 0x05, 0x00, 0x49, 0x00, 0x0d, + 0x00, 0x49, 0x00, 0x06, 0x00, 0x49, 0x00, 0x0e, 0x00, 0x49, + 0x00, 0x07, 0x00, 0x49, 0x00, 0x0f, 0x00, 0x49, 0x00, 0x08, + 0x00, 0x49, 0x00, 0x10, 0x00, 0x49, 0x00, 0x09, 0x00, 0x49, + 0x00, 0x11, 0x00, 0xff, 0xff, +}; +const byte *CHAR_TABLE[] = { + CHAR_TABLE0, nullptr, CHAR_TABLE2, CHAR_TABLE3, CHAR_TABLE4, CHAR_TABLE5, + CHAR_TABLE6, CHAR_TABLE7, CHAR_TABLE8, CHAR_TABLE9, CHAR_TABLE10, + CHAR_TABLE11, CHAR_TABLE12, CHAR_TABLE13, nullptr, CHAR_TABLE15, + CHAR_TABLE16, nullptr, CHAR_TABLE18, CHAR_TABLE19, CHAR_TABLE20, + CHAR_TABLE21, nullptr, CHAR_TABLE23, CHAR_TABLE24, CHAR_TABLE25, + CHAR_TABLE26, CHAR_TABLE27 +}; + +} // End of namespace Martian + +} // End of namespace Access diff --git a/engines/access/martian/martian_resources.h b/engines/access/martian/martian_resources.h new file mode 100644 index 0000000000..a6ababeec3 --- /dev/null +++ b/engines/access/martian/martian_resources.h @@ -0,0 +1,48 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef ACCESS_MARTIAN_RESOURCES_H +#define ACCESS_MARTIAN_RESOURCES_H + +#include "common/scummsys.h" + +namespace Access { + +namespace Martian { + +extern const char *const FILENAMES[]; + +extern const byte *CURSORS[4]; + +extern const int TRAVEL_POS[][2]; + +extern const char *const INVENTORY_NAMES[]; + +extern const byte *ROOM_TABLE[]; + +extern const byte *CHAR_TABLE[]; + +} // End of namespace Martian + +} // End of namespace Access + +#endif /* ACCESS_MARTIAN_RESOURCES_H */ diff --git a/engines/access/martian/martian_room.cpp b/engines/access/martian/martian_room.cpp new file mode 100644 index 0000000000..80eaf59fec --- /dev/null +++ b/engines/access/martian/martian_room.cpp @@ -0,0 +1,139 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/scummsys.h" +#include "access/access.h" +#include "access/resources.h" +#include "access/martian/martian_game.h" +#include "access/martian/martian_resources.h" +#include "access/martian/martian_room.h" + +namespace Access { + +namespace Martian { + +MartianRoom::MartianRoom(AccessEngine *vm): Room(vm) { + _game = (MartianEngine *)vm; +} + +MartianRoom::~MartianRoom() { +} + +void MartianRoom::loadRoom(int roomNumber) { + loadRoomData(ROOM_TABLE[roomNumber]); +} + +void MartianRoom::reloadRoom() { + loadRoom(_vm->_player->_roomNumber); + + if (_roomFlag != 1) { + _vm->_currentMan = _roomFlag; + _vm->_currentManOld = _roomFlag; + _vm->_manScaleOff = 0; + + switch (_vm->_currentMan) { + case 0: + _vm->_player->loadSprites("MAN.LZ"); + break; + + case 2: + _vm->_player->loadSprites("JMAN.LZ"); + break; + + case 3: + _vm->_player->loadSprites("OVERHEAD.LZ"); + _vm->_manScaleOff = 1; + break; + + default: + break; + } + } + + reloadRoom1(); +} + +void MartianRoom::reloadRoom1() { + if (_vm->_player->_roomNumber == 29 || _vm->_player->_roomNumber == 31 + || _vm->_player->_roomNumber == 42 || _vm->_player->_roomNumber == 44) { + _vm->_inactive = _vm->_files->loadFile("MAYA.LZ"); + _vm->_currentCharFlag = false; + } + + _selectCommand = -1; + _vm->_normalMouse = 1; + _vm->_mouseMode = 0; + _vm->_boxSelect = true; + _vm->_player->_playerOff = false; + + _vm->_screen->fadeOut(); + _vm->_screen->clearScreen(); + roomSet(); + + // TODO: Refactor + + _vm->_screen->setBufferScan(); + setupRoom(); + setWallCodes(); + buildScreen(); + + if (!_vm->_screen->_vesaMode) { + _vm->copyBF2Vid(); + } else if (_vm->_player->_roomNumber != 20 && _vm->_player->_roomNumber != 24 + && _vm->_player->_roomNumber != 33) { + _vm->_screen->setPalette(); + _vm->copyBF2Vid(); + } + + _vm->_player->_frame = 0; + _vm->_oldRects.clear(); + _vm->_newRects.clear(); +} + +void MartianRoom::roomSet() { + _vm->_numAnimTimers = 0; + _vm->_scripts->_sequence = 1000; + _vm->_scripts->searchForSequence(); + _vm->_scripts->executeScript(); +} + +void MartianRoom::roomMenu() { + byte *iconData = _vm->_files->loadFile("ICONS.LZ"); + SpriteResource *spr = new SpriteResource(_vm, iconData, _vm->_files->_filesize); + delete[] iconData; + + _vm->_screen->saveScreen(); + _vm->_screen->setDisplayScan(); + _vm->_destIn = _vm->_screen; // TODO: Redundant + _vm->_screen->plotImage(spr, 0, Common::Point(0, 177)); + _vm->_screen->plotImage(spr, 1, Common::Point(143, 177)); + + _vm->_screen->restoreScreen(); + delete spr; +} + +void MartianRoom::mainAreaClick() { +} + +} // End of namespace Martian + +} // End of namespace Access diff --git a/engines/access/martian/martian_room.h b/engines/access/martian/martian_room.h new file mode 100644 index 0000000000..526de56240 --- /dev/null +++ b/engines/access/martian/martian_room.h @@ -0,0 +1,62 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef ACCESS_MARTIAN_ROOM_H +#define ACCESS_MARTIAN_ROOM_H + +#include "common/scummsys.h" +#include "access/room.h" + +namespace Access { + +class AccessEngine; + +namespace Martian { + +class MartianEngine; + +class MartianRoom : public Room { +private: + MartianEngine *_game; + + void roomSet(); +protected: + virtual void loadRoom(int roomNumber); + + virtual void reloadRoom(); + + virtual void reloadRoom1(); + + virtual void roomMenu(); + + virtual void mainAreaClick(); +public: + MartianRoom(AccessEngine *vm); + + virtual ~MartianRoom(); +}; + +} // End of namespace Martian + +} // End of namespace Access + +#endif /* ACCESS_AMAZON_ROOM_H */ diff --git a/engines/access/martian/martian_scripts.cpp b/engines/access/martian/martian_scripts.cpp new file mode 100644 index 0000000000..0578872092 --- /dev/null +++ b/engines/access/martian/martian_scripts.cpp @@ -0,0 +1,48 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/scummsys.h" +#include "access/access.h" +#include "access/martian/martian_game.h" +#include "access/martian/martian_resources.h" +#include "access/martian/martian_scripts.h" + +namespace Access { + +namespace Martian { + +MartianScripts::MartianScripts(AccessEngine *vm) : Scripts(vm) { + _game = (MartianEngine *)_vm; +} + +void MartianScripts::executeSpecial(int commandIndex, int param1, int param2) { +} + +typedef void(MartianScripts::*MartianScriptMethodPtr)(); + +void MartianScripts::executeCommand(int commandIndex) { + Scripts::executeCommand(commandIndex); +} + +} // End of namespace Martian + +} // End of namespace Access diff --git a/engines/access/martian/martian_scripts.h b/engines/access/martian/martian_scripts.h new file mode 100644 index 0000000000..9f90643e22 --- /dev/null +++ b/engines/access/martian/martian_scripts.h @@ -0,0 +1,49 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef ACCESS_MARTIAN_SCRIPTS_H +#define ACCESS_MARTIAN_SCRIPTS_H + +#include "common/scummsys.h" +#include "access/scripts.h" + +namespace Access { + +namespace Martian { + +class MartianEngine; + +class MartianScripts: public Scripts { +private: + MartianEngine *_game; +protected: + virtual void executeSpecial(int commandIndex, int param1, int param2); + virtual void executeCommand(int commandIndex); +public: + MartianScripts(AccessEngine *vm); +}; + +} // End of namespace Martian + +} // End of namespace Access + +#endif /* ACCESS_MARTIAN_SCRIPTS_H */ diff --git a/engines/access/module.mk b/engines/access/module.mk index d74892c241..46f96693fa 100644 --- a/engines/access/module.mk +++ b/engines/access/module.mk @@ -21,7 +21,11 @@ MODULE_OBJS := \ amazon/amazon_game.o \ amazon/amazon_resources.o \ amazon/amazon_room.o \ - amazon/amazon_scripts.o + amazon/amazon_scripts.o \ + martian/martian_game.o \ + martian/martian_resources.o \ + martian/martian_room.o \ + martian/martian_scripts.o # This module can be built as a plugin ifeq ($(ENABLE_ACCESS), DYNAMIC_PLUGIN) |