/* 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 3 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, see . * */ #ifndef MEDIASTATION_BOOT_H #define MEDIASTATION_BOOT_H #include "common/path.h" #include "common/str.h" #include "common/array.h" #include "common/hashmap.h" #include "mediastation/datafile.h" namespace MediaStation { enum ContextReferenceSectionType { kContextReferencePlaceholder = 0x0003, kContextReferenceContextId = 0x0004, kContextReferenceStreamId = 0x0005, kContextReferenceParentContextId = 0x0006, kContextReferenceName = 0x0bb8 }; class ContextReference { public: ContextReference(Chunk &chunk); ContextReference() {}; uint _contextId = 0; uint _streamId = 0; Common::String _name; Common::Array _parentContextIds; private: ContextReferenceSectionType getSectionType(Chunk &chunk); }; enum ScreenReferenceSectionType { kScreenReferenceScreenId = 0x0009, kScreenReferenceContextId = 0x0004 }; class ScreenReference { public: ScreenReference(Chunk &chunk); ScreenReference() {}; uint _screenActorId = 0; uint _contextId = 0; private: ScreenReferenceSectionType getSectionType(Chunk &chunk); }; enum FileInfoSectionType { kFileInfoEmptySection = 0x0000, kFileInfoFileId = 0x002b, kFileInfoFileNameAndType = 0x002d }; // Indicates where a file is intended to be stored. // NOTE: This might not be correct and this might be a more general "file type". enum IntendedFileLocation { kFileLocationEmpty = 0x0000, // Usually all files that have numbers remain on the CD-ROM. kFileIntendedOnCdRom = 0x0007, // These UNKs only appear in George Shrinks. kFileIntendedForUnk1 = 0x0008, kFileIntendedForUnk2 = 0x0009, // Usually only INSTALL.CXT is copied to the hard disk. kFileIntendedOnHardDisk = 0x000b }; class FileInfo { public: FileInfo(Chunk &chunk); FileInfo() {}; uint _id = 0; IntendedFileLocation _intendedLocation = kFileLocationEmpty; Common::String _name; private: FileInfoSectionType getSectionType(Chunk &chunk); }; enum StreamInfoSectionType { kStreamInfoEmptySection = 0x0000, kStreamInfoActorId = 0x002a, kStreamInfoFileId = 0x002b, kStreamInfoStartOffset = 0x002c }; class StreamInfo { public: StreamInfo(Chunk &chunk); StreamInfo() {}; uint _actorId = 0; uint _fileId = 0; uint _startOffsetInFile = 0; private: StreamInfoSectionType getSectionType(Chunk &chunk); }; // Declares a cursor, which is stored as a cursor resource in the game executable. class CursorDeclaration { public: CursorDeclaration(Chunk &chunk); CursorDeclaration() {}; uint _id = 0; uint _unk = 0; Common::String _name; }; class EngineResourceDeclaration { public: EngineResourceDeclaration(Common::String resourceName, int resourceId) : _name(resourceName), _id(resourceId) {}; EngineResourceDeclaration() {}; Common::String _name; int _id = 0; }; enum BootSectionType { kBootLastSection = 0x0000, kBootContextReference = 0x0002, kBootVersionInformation = 0x0190, kBootUnk1 = 0x0191, kBootFunctionTableSize = 0x0192, kBootUnk3 = 0x0193, kBootEngineResource = 0x0bba, kBootEngineResourceId = 0x0bbb, kBootScreenReference = 0x0007, kBootFileInfo = 0x000a, kBootStreamInfo = 0x000b, }; } // End of namespace MediaStation #endif