//============================================================================== bool PEFile::checkValidity() { // 'dosHeader.Signature' must be "MZ" && 'peHeaders.Signature' must be "PE\0\0" if (dosHeader.Signature != IMAGE_DOS_SIGNATURE || peHeaders.Signature != IMAGE_NT_SIGNATURE) { unloadFile(); echo("Invalid PE file!"); return false; } if (peHeaders.FileHeader.NumberOfSections > MAX_SECTION_COUNT) { unloadFile(); echo("Number of sections > MAX_SECTION_COUNT !"); return false; } return true; }
//============================================================================== bool PEFile::loadFromFile(char* filePath) { unloadFile(); return readFileData(filePath) && readHeaders() && readBody() && readImportTable(); }
//============================================================================== bool PEFile::loadFromMemory(char* memoryAddress) { unloadFile(); peMemory = memoryAddress; return readHeaders()/* && readBody() && readImportTable()*/; }
/** * Default destructor. * * @remarks It calls CloseFile() if needed. */ FPStream::~FPStream() { if (!_soundSupported) return; if (g_system->getMixer()->isSoundHandleActive(_handle)) stop(); if (_fileLoaded) unloadFile(); _syncToPlay = NULL; }
/** * Opens a file stream * * @param fileName Filename to be opened * @param bufSize Buffer size * * @returns True is everything is OK, False otherwise */ bool FPStream::loadFile(const Common::String &fileName, int bufSize) { if (!_soundSupported) return true; if (_fileLoaded) unloadFile(); SoundCodecs codec = FPCODEC_UNKNOWN; // Open the file stream for reading if (_file.open(fileName)) codec = FPCODEC_ADPCM; else if (_file.open(setExtension(fileName, ".MP3"))) codec = FPCODEC_MP3; else if (_file.open(setExtension(fileName, ".OGG"))) codec = FPCODEC_OGG; else if (_file.open(setExtension(fileName, ".FLA"))) codec = FPCODEC_FLAC; // Fallback: try with an extra '0' prefix else if (_file.open("0" + fileName)) { codec = FPCODEC_ADPCM; warning("FPStream::loadFile(): Fallback from %s to %s", fileName.c_str(), _file.getName()); } else if (_file.open(setExtension("0" + fileName, ".MP3"))) { codec = FPCODEC_MP3; warning("FPStream::loadFile(): Fallback from %s to %s", fileName.c_str(), _file.getName()); } else if (_file.open(setExtension("0" + fileName, ".OGG"))) { codec = FPCODEC_OGG; warning("FPStream::loadFile(): Fallback from %s to %s", fileName.c_str(), _file.getName()); } else if (_file.open(setExtension("0" + fileName, ".FLA"))) { codec = FPCODEC_FLAC; warning("FPStream::loadFile(): Fallback from %s to %s", fileName.c_str(), _file.getName()); } else return false; // Save the size of the stream _size = _file.size(); #ifdef __amigaos4__ // HACK: AmigaOS 4 has weird performance problems with reading in the audio thread, // so we read the whole stream into memory. switch (codec) { case FPCODEC_ADPCM: _rewindableStream = Audio::makeADPCMStream(_file.readStream(_size), DisposeAfterUse::YES, 0, Audio::kADPCMDVI, 44100, 2); break; case FPCODEC_MP3: #ifdef USE_MAD _rewindableStream = Audio::makeMP3Stream(&_file, DisposeAfterUse::YES); #endif break; case FPCODEC_OGG: #ifdef USE_VORBIS _rewindableStream = Audio::makeVorbisStream(&_file, DisposeAfterUse::YES); #endif break; case FPCODEC_FLAC: #ifdef USE_FLAC _rewindableStream = Audio::makeFLACStream(&_file, DisposeAfterUse::YES); #endif break; default: break; } #else switch (codec) { case FPCODEC_ADPCM: _rewindableStream = Audio::makeADPCMStream(&_file, DisposeAfterUse::NO, 0, Audio::kADPCMDVI, 44100, 2); break; case FPCODEC_MP3: #ifdef USE_MAD _rewindableStream = Audio::makeMP3Stream(&_file, DisposeAfterUse::NO); #endif break; case FPCODEC_OGG: #ifdef USE_VORBIS _rewindableStream = Audio::makeVorbisStream(&_file, DisposeAfterUse::NO); #endif break; case FPCODEC_FLAC: #ifdef USE_FLAC _rewindableStream = Audio::makeFLACStream(&_file, DisposeAfterUse::NO); #endif break; default: break; } #endif // All done _fileLoaded = true; _paused = false; setVolume(63); return true; }
//------------------------------------------------------------------------------ CGameMessageConfig::~CGameMessageConfig() { unloadFile(); }
//============================================================================== PEFile::~PEFile() { unloadFile(); }