From 66f9d71f1dc27ab0e4d3499703e39ebf35e87a27 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 2 Dec 2014 16:29:42 +0100 Subject: ACCESS: Add some code for the intro (WIP) --- engines/access/access.h | 1 + engines/access/amazon/amazon_logic.cpp | 148 ++++++------ engines/access/amazon/amazon_resources.cpp | 375 +++++++++++++++++++++++++++++ engines/access/amazon/amazon_resources.h | 2 + engines/access/amazon/amazon_room.cpp | 5 +- engines/access/detection.cpp | 4 + engines/access/files.cpp | 5 +- 7 files changed, 465 insertions(+), 75 deletions(-) diff --git a/engines/access/access.h b/engines/access/access.h index eacdae9709..2fe4b726a2 100644 --- a/engines/access/access.h +++ b/engines/access/access.h @@ -221,6 +221,7 @@ public: uint32 getFeatures() const; bool isCD() const; + bool isDemo() const; Common::Language getLanguage() const; Common::Platform getPlatform() const; uint16 getVersion() const; diff --git a/engines/access/amazon/amazon_logic.cpp b/engines/access/amazon/amazon_logic.cpp index 1649cddc51..68a52e77f8 100644 --- a/engines/access/amazon/amazon_logic.cpp +++ b/engines/access/amazon/amazon_logic.cpp @@ -273,92 +273,94 @@ void Opening::doTitle() { _vm->_screen->forceFadeOut(); _vm->_events->hideCursor(); - _vm->_sound->queueSound(0, 98, 30); - _vm->_sound->queueSound(1, 98, 8); - - _vm->_files->_setPaletteFlag = false; - _vm->_files->loadScreen(0, 3); - - _vm->_buffer2.copyFrom(*_vm->_screen); - _vm->_buffer1.copyFrom(*_vm->_screen); - _vm->_screen->forceFadeIn(); - _vm->_sound->playSound(1); + if (!_vm->isDemo()) { + _vm->_sound->queueSound(0, 98, 30); + _vm->_sound->queueSound(1, 98, 8); + + _vm->_files->_setPaletteFlag = false; + _vm->_files->loadScreen(0, 3); + + _vm->_buffer2.copyFrom(*_vm->_screen); + _vm->_buffer1.copyFrom(*_vm->_screen); + _vm->_screen->forceFadeIn(); + _vm->_sound->playSound(1); - // WORKAROUND: This delay has been added to replace original game delay that - // came from loading resources, since nowadays it would be too fast to be visible - // nowadays to be visible. - _vm->_events->_vbCount = 70; - while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) - _vm->_events->pollEventsAndWait(); - if (_vm->shouldQuit()) - return; + // WORKAROUND: This delay has been added to replace original game delay that + // came from loading resources, since nowadays it would be too fast to be visible + // nowadays to be visible. + _vm->_events->_vbCount = 70; + while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) + _vm->_events->pollEventsAndWait(); + if (_vm->shouldQuit()) + return; - Resource *spriteData = _vm->_files->loadFile(0, 2); - _vm->_objectsTable[0] = new SpriteResource(_vm, spriteData); - delete spriteData; + Resource *spriteData = _vm->_files->loadFile(0, 2); + _vm->_objectsTable[0] = new SpriteResource(_vm, spriteData); + delete spriteData; - _vm->_sound->playSound(1); + _vm->_sound->playSound(1); - _vm->_files->_setPaletteFlag = false; - _vm->_files->loadScreen(0, 4); - _vm->_sound->playSound(1); + _vm->_files->_setPaletteFlag = false; + _vm->_files->loadScreen(0, 4); + _vm->_sound->playSound(1); - _vm->_buffer2.copyFrom(*_vm->_screen); - _vm->_buffer1.copyFrom(*_vm->_screen); - _vm->_sound->playSound(1); + _vm->_buffer2.copyFrom(*_vm->_screen); + _vm->_buffer1.copyFrom(*_vm->_screen); + _vm->_sound->playSound(1); - const int COUNTDOWN[6] = { 2, 0x80, 1, 0x7d, 0, 0x87 }; - for (_pCount = 0; _pCount < 3 && !_vm->shouldQuit(); ++_pCount) { - _vm->_buffer2.copyFrom(_vm->_buffer1); - int id = COUNTDOWN[_pCount * 2]; - int xp = COUNTDOWN[_pCount * 2 + 1]; - _vm->_buffer2.plotImage(_vm->_objectsTable[0], id, Common::Point(xp, 71)); - _vm->_screen->copyFrom(_vm->_buffer2); + const int COUNTDOWN[6] = { 2, 0x80, 1, 0x7d, 0, 0x87 }; + for (_pCount = 0; _pCount < 3 && !_vm->shouldQuit(); ++_pCount) { + _vm->_buffer2.copyFrom(_vm->_buffer1); + int id = COUNTDOWN[_pCount * 2]; + int xp = COUNTDOWN[_pCount * 2 + 1]; + _vm->_buffer2.plotImage(_vm->_objectsTable[0], id, Common::Point(xp, 71)); + _vm->_screen->copyFrom(_vm->_buffer2); - _vm->_events->_vbCount = 70; - while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0 && !_skipStart) { - _vm->_sound->playSound(1); - _vm->_events->pollEventsAndWait(); - if (_vm->_events->_rightButton) - _skipStart = true; + _vm->_events->_vbCount = 70; + while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0 && !_skipStart) { + _vm->_sound->playSound(1); + _vm->_events->pollEventsAndWait(); + if (_vm->_events->_rightButton) + _skipStart = true; + } } - } - if (_vm->shouldQuit()) - return; + if (_vm->shouldQuit()) + return; - _vm->_sound->playSound(0); - _vm->_screen->forceFadeOut(); - _vm->_events->_vbCount = 100; - while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) - _vm->_events->pollEventsAndWait(); - if (_vm->shouldQuit()) - return; + _vm->_sound->playSound(0); + _vm->_screen->forceFadeOut(); + _vm->_events->_vbCount = 100; + while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) + _vm->_events->pollEventsAndWait(); + if (_vm->shouldQuit()) + return; - _vm->_sound->freeSounds(); - delete _vm->_objectsTable[0]; - _vm->_objectsTable[0] = nullptr; + _vm->_sound->freeSounds(); + delete _vm->_objectsTable[0]; + _vm->_objectsTable[0] = nullptr; + + _vm->_files->_setPaletteFlag = false; + _vm->_files->loadScreen(0, 5); + _vm->_buffer2.copyFrom(*_vm->_screen); + _vm->_buffer1.copyFrom(*_vm->_screen); + _vm->_screen->forceFadeIn(); + _vm->_midi->newMusic(1, 0); + _vm->_events->_vbCount = 700; + while (!_vm->shouldQuit() && (_vm->_events->_vbCount > 0) && !_vm->_events->isKeyMousePressed()) { + _vm->_events->pollEventsAndWait(); + } - _vm->_files->_setPaletteFlag = false; - _vm->_files->loadScreen(0, 5); - _vm->_buffer2.copyFrom(*_vm->_screen); - _vm->_buffer1.copyFrom(*_vm->_screen); - _vm->_screen->forceFadeIn(); - _vm->_midi->newMusic(1, 0); - _vm->_events->_vbCount = 700; - while (!_vm->shouldQuit() && (_vm->_events->_vbCount > 0) && !_vm->_events->isKeyMousePressed()) { - _vm->_events->pollEventsAndWait(); - } + if (_vm->_events->_rightButton) { + _skipStart = true; + _vm->_room->clearRoom(); + _vm->_events->showCursor(); + return; + } - if (_vm->_events->_rightButton) { - _skipStart = true; - _vm->_room->clearRoom(); - _vm->_events->showCursor(); - return; + _vm->_midi->newMusic(1, 1); + _vm->_midi->setLoop(false); + _vm->_events->zeroKeys(); } - - _vm->_midi->newMusic(1, 1); - _vm->_midi->setLoop(false); - _vm->_events->zeroKeys(); _vm->_room->loadRoom(0); _vm->_screen->clearScreen(); _vm->_screen->setBufferScan(); diff --git a/engines/access/amazon/amazon_resources.cpp b/engines/access/amazon/amazon_resources.cpp index 0ae7ef0718..8e5fccbf25 100644 --- a/engines/access/amazon/amazon_resources.cpp +++ b/engines/access/amazon/amazon_resources.cpp @@ -51,6 +51,25 @@ const char *const FILENAMES[] = { "NARATE13.AP", "NARATE14.AP", "S00.AP", "TAG.AP" }; +const char *const FILENAMES_DEMO[] = { + "S00.AP", "S01.AP", "S02.AP", "R03.AP", "S04.AP", "S05.AP", + "S06.AP", "S07.AP", "S08.AP", "S09.AP", "S10.AP", "S11.AP", + "S12.AP", "S13.AP", "S14.AP", "S15.AP", "S16.AP", "S17.AP", + "S18.AP", "S19.AP", "S20.AP", "S21.AP", "S22.AP", "S23.AP", + "S24.AP", "S25.AP", "S26.AP", "S27.AP", "S28.AP", "S29.AP", + "S30.AP", "S31.AP", "S32.AP", "S33.AP", "S34.AP", "R35.AP", + "S36.AP", "S37.AP", "S38.AP", "S39.AP", "S40.AP", "TITLE.AP", + "S42.AP", "S01.AP", "S44.AP", "S45.AP", "S46.AP", "S47.AP", + nullptr, nullptr, "S50.AP", nullptr, nullptr, "S53.AP", + "S54.AP", nullptr, nullptr, "S57.AP", nullptr, nullptr, + nullptr, "S61.AP", nullptr, "C23.AP", "C12.AP", "C00.AP", + "C01.AP", "C06.AP", "C07.AP", "C08.AP", "C05.AP", "C09.AP", + "C12.AP", "C03.AP", "C13.AP", "C15.AP", "C14.AP", "C16.AP", + "C17.AP", "C19.AP", "C20.AP", "C21.AP", "C22.AP", "C23.AP", + "C24.AP", "C25.AP", "R49.AP", "R49.AP", "R49.AP", "R49.AP", + "R49.AP", "R49.AP", "R49.AP", "R49.AP", "DEAD.AP", "EST.AP", + "CHAPTER.AP", "MUSIC.AP", "SOUND.AP", "INV.AP" +}; const byte MOUSE0[] = { 0, 0, 0, 0, 0, 2, 6, 1, 0, 3, 6, 6, 1, 0, 3, 6, 6, 1, @@ -603,6 +622,362 @@ const char *ROOM_DESCR[] = { nullptr, "Pit with Ants", nullptr, nullptr }; +const byte ROOM_TABLE1_DEMO[] = { + 0x02, 0x61, 0x00, 0x03, 0x00, 0x30, 0x22, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE5_DEMO[] = { + 0x00, 0x61, 0x00, 0x0E, 0x00, 0x36, 0x0F, 0x5E, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x04, 0x00, 0x03, 0x00, 0xFF, 0x04, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x8C, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x62, 0x00, 0x0C, 0x00, + 0x01, 0x00, 0x62, 0x00, 0x0D, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE6_DEMO[] = { + 0x00, 0x61, 0x00, 0x0E, 0x00, 0x40, 0x3E, 0x1A, 0x05, 0x00, + 0x00, 0x00, 0x05, 0x05, 0x00, 0x03, 0x00, 0xFF, 0x05, 0x00, + 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0xFF, 0x30, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x12, 0x00, 0x03, 0x00, 0x62, 0x00, 0x13, 0x00, + 0x01, 0x00, 0x62, 0x00, 0x14, 0x00, 0x02, 0x00, 0x62, 0x00, + 0x04, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE7_DEMO[] = { + 0x01, 0x61, 0x00, 0x0D, 0x00, 0x40, 0x20, 0xC4, 0x06, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x00, 0x03, 0x00, 0xFF, 0x06, 0x00, + 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x01, 0x00, 0x01, 0x00, 0x62, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x62, 0x00, 0x03, 0x00, 0x02, 0x00, 0x62, 0x00, + 0x26, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE9_DEMO[] = { + 0x01, 0x61, 0x00, 0x0D, 0x00, 0x40, 0x20, 0xC4, 0x08, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x03, 0x00, 0xFF, 0x08, 0x00, + 0x02, 0x00, 0x08, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x07, 0x00, 0x01, 0x00, 0x62, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x62, 0x00, 0x09, 0x00, 0x01, 0x00, 0x62, 0x00, + 0x0A, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE10_DEMO[] = { + 0x00, 0x61, 0x00, 0x0E, 0x00, 0x30, 0x18, 0x9B, 0x09, 0x00, + 0x00, 0x00, 0x09, 0x09, 0x00, 0x03, 0x00, 0xFF, 0x09, 0x00, + 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0xB4, 0x10, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x04, 0x00, 0x01, 0x00, 0x62, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x62, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE11_DEMO[] = { + 0x01, 0x61, 0x00, 0x0E, 0x00, 0x40, 0x30, 0x14, 0x0A, 0x00, + 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x03, 0x00, 0xFF, 0x0A, 0x00, + 0x02, 0x00, 0x0A, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x15, 0x00, 0x01, 0x00, 0x62, 0x00, 0x16, 0x00, + 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE12_DEMO[] = { + 0x01, 0x61, 0x00, 0x0E, 0x00, 0x40, 0x3A, 0x22, 0x0B, 0x00, + 0x00, 0x00, 0x0B, 0x0B, 0x00, 0x03, 0x00, 0xFF, 0x0B, 0x00, + 0x02, 0x00, 0x0B, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE13_DEMO[] = { + 0x01, 0x61, 0x00, 0x08, 0x00, 0x40, 0x30, 0x14, 0x0C, 0x00, + 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x00, 0xFF, 0x0C, 0x00, + 0x02, 0x00, 0x0C, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x18, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x17, 0x00, 0x01, 0x00, 0x62, 0x00, 0x11, 0x00, + 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE14_DEMO[] = { + 0x01, 0x61, 0x00, 0x0D, 0x00, 0x40, 0x36, 0x2C, 0x0D, 0x00, + 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x03, 0x00, 0xFF, 0x0D, 0x00, + 0x02, 0x00, 0x0D, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE15_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x3E, 0x33, 0xFF, 0xFF, + 0x00, 0x00, 0xFF, 0x0E, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, + 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF +}; + +const byte ROOM_TABLE16_DEMO[] = { + 0x01, 0x61, 0x00, 0x10, 0x00, 0x28, 0x0C, 0x5E, 0x0F, 0x00, + 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x02, 0x00, 0xFF, 0x0F, 0x00, + 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE17_DEMO[] = { + 0x02, 0x61, 0x00, 0x10, 0x00, 0x40, 0x20, 0x30, 0x10, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x00, 0x03, 0x00, 0xFF, 0x10, 0x00, + 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0x6E, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE18_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x19, 0x2B, 0x11, 0x00, + 0x00, 0x00, 0x11, 0x11, 0x00, 0x03, 0x00, 0xFF, 0x11, 0x00, + 0x02, 0x00, 0x11, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE19_DEMO[] = { + 0x01, 0x61, 0x00, 0x11, 0x00, 0x2D, 0x14, 0x3C, 0x12, 0x00, + 0x00, 0x00, 0x12, 0x12, 0x00, 0x03, 0x00, 0xFF, 0x12, 0x00, + 0x02, 0x00, 0x12, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE20_DEMO[] = { + 0x02, 0x61, 0x00, 0x12, 0x00, 0x2D, 0x28, 0x28, 0x13, 0x00, + 0x00, 0x00, 0x13, 0x13, 0x00, 0x03, 0x00, 0xFF, 0x13, 0x00, + 0x02, 0x00, 0x13, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x29, 0x00, 0x01, 0x00, 0x62, 0x00, 0x24, 0x00, + 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE21_DEMO[] = { + 0x01, 0x61, 0x00, 0x16, 0x00, 0x28, 0x0C, 0x5E, 0x14, 0x00, + 0x00, 0x00, 0x14, 0x14, 0x00, 0x02, 0x00, 0xFF, 0x14, 0x00, + 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE22_DEMO[] = { + 0x01, 0x61, 0x00, 0x12, 0x00, 0x3C, 0x2A, 0x29, 0x15, 0x00, + 0x00, 0x00, 0x15, 0x15, 0x00, 0x03, 0x00, 0xFF, 0x15, 0x00, + 0x02, 0x00, 0x15, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x23, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE23_DEMO[] = { + 0x01, 0x61, 0x00, 0x13, 0x00, 0x40, 0x2D, 0x64, 0x16, 0x00, + 0x00, 0x00, 0xFF, 0x16, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x16, 0x00, 0x02, + 0x00, 0xFF, 0xFF, 0x62, 0x00, 0x2A, 0x00, 0x01, 0x00, 0xFF, + 0xFF +}; + +const byte ROOM_TABLE24_DEMO[] = { + 0x02, 0x61, 0x00, 0x14, 0x00, 0x40, 0x3C, 0x19, 0x17, 0x00, + 0x00, 0x00, 0x17, 0x17, 0x00, 0x03, 0x00, 0xFF, 0x17, 0x00, + 0x02, 0x00, 0x17, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE25_DEMO[] = { + 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x3F, 0x5A, 0x18, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x02, 0x00, 0xFF, 0x18, 0x00, + 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xDC, 0xA0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE26_DEMO[] = { + 0x02, 0x61, 0x00, 0x17, 0x00, 0x3E, 0x32, 0x80, 0x19, 0x00, + 0x00, 0x00, 0x19, 0x19, 0x00, 0x03, 0x00, 0xFF, 0x19, 0x00, + 0x02, 0x00, 0x19, 0x00, 0x01, 0x00, 0x64, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE27_DEMO[] = { + 0x01, 0x61, 0x00, 0x19, 0x00, 0x34, 0x28, 0x28, 0x1A, 0x00, + 0x00, 0x00, 0x1A, 0x1A, 0x00, 0x03, 0x00, 0xFF, 0x1A, 0x00, + 0x02, 0x00, 0x1A, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x28, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x2B, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE28_DEMO[] = { + 0x02, 0x61, 0x00, 0x18, 0x00, 0x40, 0x3A, 0x6C, 0x1B, 0x00, + 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x03, 0x00, 0xFF, 0x1B, 0x00, + 0x02, 0x00, 0x1B, 0x00, 0x01, 0x00, 0xC8, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE30_DEMO[] = { + 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x18, 0x73, 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, 0xFF, 0xFF +}; + +const byte ROOM_TABLE31_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x27, 0x1E, 0x00, + 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0x00, 0xFF, 0x1E, 0x00, + 0x02, 0x00, 0x1E, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE32_DEMO[] = { + 0x02, 0x61, 0x00, 0x1B, 0x00, 0x40, 0x10, 0x78, 0x1F, 0x00, + 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x03, 0x00, 0xFF, 0x1F, 0x00, + 0x02, 0x00, 0x1F, 0x00, 0x01, 0x00, 0xFE, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x1F, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE33_DEMO[] = { + 0x01, 0x61, 0x00, 0x1E, 0x00, 0x40, 0x3B, 0x4B, 0x20, 0x00, + 0x00, 0x00, 0x20, 0x20, 0x00, 0x03, 0x00, 0xFF, 0x20, 0x00, + 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE34_DEMO[] = { + 0x01, 0x61, 0x00, 0x04, 0x00, 0x30, 0x10, 0x51, 0x21, 0x00, + 0x00, 0x00, 0x21, 0x21, 0x00, 0x02, 0x00, 0xFF, 0x21, 0x00, + 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x2E, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x2F, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE37_DEMO[] = { + 0x02, 0x61, 0x00, 0x04, 0x00, 0x3E, 0x3A, 0x32, 0x24, 0x00, + 0x00, 0x00, 0x24, 0x24, 0x00, 0x03, 0x00, 0xFF, 0x24, 0x00, + 0x02, 0x00, 0x24, 0x00, 0x01, 0x00, 0xB4, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x2D, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x62, 0x00, 0x2E, 0x00, + 0x01, 0x00, 0x62, 0x00, 0x2F, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE38_DEMO[] = { + 0x03, 0x61, 0x00, 0x08, 0x00, 0x3F, 0x3F, 0xFF, 0x25, 0x00, + 0x00, 0x00, 0x25, 0x25, 0x00, 0x03, 0x00, 0xFF, 0x25, 0x00, + 0x02, 0x00, 0x25, 0x00, 0x01, 0x00, 0xFF, 0x40, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x21, 0x00, 0x01, 0x00, 0x62, 0x00, 0x25, 0x00, + 0x01, 0x00, 0x62, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x62, 0x00, + 0x30, 0x00, 0x01, 0x00, 0x62, 0x00, 0x32, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE39_DEMO[] = { + 0x01, 0x61, 0x00, 0x08, 0x00, 0x40, 0x32, 0x50, 0x26, 0x00, + 0x00, 0x00, 0x26, 0x26, 0x00, 0x03, 0x00, 0xFF, 0x26, 0x00, + 0x02, 0x00, 0x26, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x22, 0x00, 0x02, 0x00, 0x62, 0x00, 0x31, 0x00, + 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE40_DEMO[] = { + 0x02, 0x61, 0x00, 0x09, 0x00, 0x40, 0x3F, 0x37, 0x27, 0x00, + 0x00, 0x00, 0x27, 0x27, 0x00, 0x03, 0x00, 0xFF, 0x27, 0x00, + 0x02, 0x00, 0x27, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x1B, 0x00, 0x03, 0x00, 0x62, 0x00, 0x1C, 0x00, + 0x01, 0x00, 0x62, 0x00, 0x1F, 0x00, 0x02, 0x00, 0x62, 0x00, + 0x23, 0x00, 0x01, 0x00, 0x62, 0x00, 0x32, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE43_DEMO[] = { + 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x1B, 0x6E, 0x2A, 0x00, + 0x00, 0x00, 0x2A, 0x2A, 0x00, 0x03, 0x00, 0xFF, 0x2A, 0x00, + 0x02, 0x00, 0x2A, 0x00, 0x01, 0x00, 0xA5, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE45_DEMO[] = { + 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x1D, 0xBE, 0x2C, 0x00, + 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x03, 0x00, 0xFF, 0x2C, 0x00, + 0x02, 0x00, 0x2C, 0x00, 0x01, 0x00, 0x50, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE46_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x1D, 0x78, 0x2D, 0x00, + 0x00, 0x00, 0x2D, 0x2D, 0x00, 0x03, 0x00, 0xFF, 0x2D, 0x00, + 0x02, 0x00, 0x2D, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE47_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x1E, 0x32, 0x2E, 0x00, + 0x00, 0x00, 0x2E, 0x2E, 0x00, 0x03, 0x00, 0xFF, 0x2E, 0x00, + 0x02, 0x00, 0x2E, 0x00, 0x01, 0x00, 0xF0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE48_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x1E, 0x32, 0x2F, 0x00, + 0x00, 0x00, 0x2F, 0x2F, 0x00, 0x03, 0x00, 0xFF, 0x2F, 0x00, + 0x02, 0x00, 0x2F, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE51_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x1E, 0x32, 0xFF, 0xFF, + 0x00, 0x00, 0xFF, 0x32, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x04, + 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x32, + 0x00, 0x01, 0x00, 0x01, 0x00, 0xFF, 0xFF +}; + +const byte ROOM_TABLE55_DEMO[] = { + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x1E, 0x6E, 0x36, 0x00, + 0x00, 0x00, 0x36, 0x36, 0x00, 0x03, 0x00, 0xFF, 0x36, 0x00, + 0x02, 0x00, 0x36, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x36, 0x00, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF +}; + +const byte ROOM_TABLE58_DEMO[] = { + 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x32, 0x14, 0x73, 0x39, 0x00, + 0x00, 0x00, 0x39, 0x39, 0x00, 0x03, 0x00, 0xFF, 0x39, 0x00, + 0x02, 0x00, 0x39, 0x00, 0x01, 0x00, 0xB4, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xFF, 0xFF +}; + +const byte ROOM_TABLE62_DEMO[] = { + 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x3F, 0x19, 0x3D, 0x00, + 0x00, 0x00, 0x3D, 0x3D, 0x00, 0x03, 0x00, 0x3E, 0x3D, 0x00, + 0x04, 0x00, 0xFF, 0x3D, 0x00, 0x02, 0x00, 0x3D, 0x00, 0x01, + 0x00, 0xBE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x62, + 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x00 +}; + +const byte *ROOM_TABLE_DEMO[] = { + ROOM_TABLE1_DEMO, nullptr, nullptr, nullptr, ROOM_TABLE5_DEMO, + ROOM_TABLE6_DEMO, ROOM_TABLE7_DEMO, nullptr, ROOM_TABLE9_DEMO, ROOM_TABLE10_DEMO, + ROOM_TABLE11_DEMO, ROOM_TABLE12_DEMO, ROOM_TABLE13_DEMO, ROOM_TABLE14_DEMO, ROOM_TABLE15_DEMO, + ROOM_TABLE16_DEMO, ROOM_TABLE17_DEMO, ROOM_TABLE18_DEMO, ROOM_TABLE19_DEMO, ROOM_TABLE20_DEMO, + ROOM_TABLE21_DEMO, ROOM_TABLE22_DEMO, ROOM_TABLE23_DEMO, ROOM_TABLE24_DEMO, ROOM_TABLE25_DEMO, + ROOM_TABLE26_DEMO, ROOM_TABLE27_DEMO, ROOM_TABLE28_DEMO, nullptr, ROOM_TABLE30_DEMO, + ROOM_TABLE31_DEMO, ROOM_TABLE32_DEMO, ROOM_TABLE33_DEMO, ROOM_TABLE34_DEMO, nullptr, + nullptr, ROOM_TABLE37_DEMO, ROOM_TABLE38_DEMO, ROOM_TABLE39_DEMO, ROOM_TABLE40_DEMO, + nullptr, nullptr, ROOM_TABLE43_DEMO, nullptr, ROOM_TABLE45_DEMO, + ROOM_TABLE46_DEMO, ROOM_TABLE47_DEMO, ROOM_TABLE48_DEMO, nullptr, nullptr, + ROOM_TABLE51_DEMO, nullptr, nullptr, nullptr, ROOM_TABLE55_DEMO, + nullptr, nullptr, ROOM_TABLE58_DEMO, nullptr, nullptr, + nullptr, ROOM_TABLE62_DEMO, nullptr, nullptr +}; + const int ROOM_NUMB = 63; const byte ELAINE[] = { diff --git a/engines/access/amazon/amazon_resources.h b/engines/access/amazon/amazon_resources.h index 61659d30d4..e75b78a9e3 100644 --- a/engines/access/amazon/amazon_resources.h +++ b/engines/access/amazon/amazon_resources.h @@ -39,6 +39,7 @@ struct RiverStruct { }; extern const char *const FILENAMES[]; +extern const char *const FILENAMES_DEMO[]; extern const byte *CURSORS[10]; @@ -59,6 +60,7 @@ extern const int OVEROFFDLY[]; extern const byte *ROOM_TABLE[]; extern const char *ROOM_DESCR[]; +extern const byte *ROOM_TABLE_DEMO[]; extern const int ROOM_NUMB; extern const byte *CHARTBL[]; diff --git a/engines/access/amazon/amazon_room.cpp b/engines/access/amazon/amazon_room.cpp index 14514c2c7c..24aedf5722 100644 --- a/engines/access/amazon/amazon_room.cpp +++ b/engines/access/amazon/amazon_room.cpp @@ -41,7 +41,10 @@ AmazonRoom::~AmazonRoom() { } void AmazonRoom::loadRoom(int roomNumber) { - loadRoomData(ROOM_TABLE[roomNumber]); + if (_vm->isDemo()) + loadRoomData(ROOM_TABLE_DEMO[roomNumber]); + else + loadRoomData(ROOM_TABLE[roomNumber]); } void AmazonRoom::reloadRoom() { diff --git a/engines/access/detection.cpp b/engines/access/detection.cpp index 59c4bc4738..914f98e232 100644 --- a/engines/access/detection.cpp +++ b/engines/access/detection.cpp @@ -61,6 +61,10 @@ bool AccessEngine::isCD() const { return (bool)(_gameDescription->desc.flags & ADGF_CD); } +bool AccessEngine::isDemo() const { + return (bool)(_gameDescription->desc.flags & ADGF_DEMO); +} + Common::Language AccessEngine::getLanguage() const { return _gameDescription->desc.language; } diff --git a/engines/access/files.cpp b/engines/access/files.cpp index cbcfa3f614..6671a484de 100644 --- a/engines/access/files.cpp +++ b/engines/access/files.cpp @@ -82,7 +82,10 @@ byte *Resource::data() { FileManager::FileManager(AccessEngine *vm): _vm(vm) { switch (vm->getGameID()) { case GType_Amazon: - _filenames = &Amazon::FILENAMES[0]; + if (_vm->isDemo()) + _filenames = &Amazon::FILENAMES_DEMO[0]; + else + _filenames = &Amazon::FILENAMES[0]; break; case GType_MartianMemorandum: _filenames = &Martian::FILENAMES[0]; -- cgit v1.2.3