[Scummvm-cvs-logs] SF.net SVN: scummvm: [28221] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Thu Jul 26 22:22:52 CEST 2007


Revision: 28221
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28221&view=rev
Author:   peres001
Date:     2007-07-26 13:22:51 -0700 (Thu, 26 Jul 2007)

Log Message:
-----------
Merged archive.cpp into disk.cpp.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/disk.cpp
    scummvm/trunk/engines/parallaction/module.mk

Removed Paths:
-------------
    scummvm/trunk/engines/parallaction/archive.cpp

Deleted: scummvm/trunk/engines/parallaction/archive.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/archive.cpp	2007-07-26 19:52:18 UTC (rev 28220)
+++ scummvm/trunk/engines/parallaction/archive.cpp	2007-07-26 20:22:51 UTC (rev 28221)
@@ -1,208 +0,0 @@
-/* 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.
- *
- * $URL$
- * $Id$
- *
- */
-#include "common/stdafx.h"
-
-#include "common/endian.h"
-#include "common/file.h"
-
-#include "parallaction/disk.h"
-#include "parallaction/parallaction.h"
-
-
-namespace Parallaction {
-
-//  HACK: Several archives ('de', 'en', 'fr' and 'disk0') in the multi-lingual
-//  Amiga version of Nippon Safes, and one archive ('fr') in the Amiga Demo of
-//  Nippon Safes used different internal offsets than all the other archives.
-//
-//  When an archive is opened in the Amiga demo, its size is checked against
-//  SIZEOF_SMALL_ARCHIVE to detect when the smaller archive is used.
-//
-//  When an archive is opened in Amiga multi-lingual version, the header is
-//  checked again NDOS to detect when a smaller archive is used.
-//
-#define SIZEOF_SMALL_ARCHIVE      	12778
-
-#define ARCHIVE_FILENAMES_OFS		0x16
-
-#define NORMAL_ARCHIVE_FILES_NUM	384
-#define SMALL_ARCHIVE_FILES_NUM		180
-
-#define NORMAL_ARCHIVE_SIZES_OFS	0x3016
-#define SMALL_ARCHIVE_SIZES_OFS		0x1696
-
-#define NORMAL_ARCHIVE_DATA_OFS		0x4000
-#define SMALL_ARCHIVE_DATA_OFS		0x1966
-
-Archive::Archive() {
-	resetArchivedFile();
-}
-
-void Archive::open(const char *file) {
-	debugC(1, kDebugDisk, "Archive::open(%s)", file);
-
-	if (_archive.isOpen())
-		close();
-
-	char	path[PATH_LEN];
-
-	strcpy(path, file);
-	if (!_archive.open(path))
-		error("archive '%s' not found", path);
-
-	_archiveName = file;
-
-	bool isSmallArchive = false;
-	if (_vm->getPlatform() == Common::kPlatformAmiga) {
-		if (_vm->getFeatures() & GF_DEMO) {
-			isSmallArchive = _archive.size() == SIZEOF_SMALL_ARCHIVE;
-		} else if (_vm->getFeatures() & GF_LANG_MULT) {
-			isSmallArchive = (_archive.readUint32BE() != MKID_BE('NDOS'));
-		}
-	}
-
-	_numFiles = (isSmallArchive) ? SMALL_ARCHIVE_FILES_NUM : NORMAL_ARCHIVE_FILES_NUM;
-
-	_archive.seek(ARCHIVE_FILENAMES_OFS);
-	_archive.read(_archiveDir, _numFiles*32);
-
-	_archive.seek((isSmallArchive) ? SMALL_ARCHIVE_SIZES_OFS : NORMAL_ARCHIVE_SIZES_OFS);
-
-	uint32 dataOffset = (isSmallArchive) ? SMALL_ARCHIVE_DATA_OFS : NORMAL_ARCHIVE_DATA_OFS;
-	for (uint16 i = 0; i < _numFiles; i++) {
-		_archiveOffsets[i] = dataOffset;
-		_archiveLenghts[i] = _archive.readUint32BE();
-		dataOffset += _archiveLenghts[i];
-	}
-
-	return;
-}
-
-
-void Archive::close() {
-	if (!_archive.isOpen()) return;
-
-	resetArchivedFile();
-
-	_archive.close();
-	_archiveName.clear();
-}
-
-Common::String Archive::name() const {
-	return _archiveName;
-}
-
-bool Archive::openArchivedFile(const char *filename) {
-	debugC(3, kDebugDisk, "Archive::openArchivedFile(%s)", filename);
-
-	resetArchivedFile();
-
-	debugC(3, kDebugDisk, "Archive::openArchivedFile(%s)", filename);
-
-	if (!_archive.isOpen())
-		error("Archive::openArchivedFile: the archive is not open");
-
-	uint16 i = 0;
-	for ( ; i < _numFiles; i++) {
-		if (!scumm_stricmp(_archiveDir[i], filename)) break;
-	}
-	if (i == _numFiles) return false;
-
-	debugC(9, kDebugDisk, "Archive::openArchivedFile: '%s' found in slot %i", filename, i);
-
-	_file = true;
-
-	_fileOffset = _archiveOffsets[i];
-	_fileCursor = _archiveOffsets[i];
-	_fileEndOffset = _archiveOffsets[i] + _archiveLenghts[i];
-
-	_archive.seek(_fileOffset);
-
-	return true;
-}
-
-void Archive::resetArchivedFile() {
-	_file = false;
-	_fileCursor = 0;
-	_fileOffset = 0;
-	_fileEndOffset = 0;
-}
-
-void Archive::closeArchivedFile() {
-	resetArchivedFile();
-}
-
-
-uint32 Archive::size() const {
-	return (_file == true ? _fileEndOffset - _fileOffset : 0);
-}
-
-uint32 Archive::pos() const {
-	return (_file == true ? _fileCursor - _fileOffset : 0 );
-}
-
-bool Archive::eos() const {
-	return (_file == true ? _fileCursor == _fileEndOffset : true );
-}
-
-void Archive::seek(int32 offs, int whence) {
-	assert(_file == true && _fileCursor <= _fileEndOffset);
-
-	switch (whence) {
-	case SEEK_CUR:
-		_fileCursor += offs;
-		break;
-	case SEEK_SET:
-		_fileCursor = _fileOffset + offs;
-		break;
-	case SEEK_END:
-		_fileCursor = _fileEndOffset - offs;
-		break;
-	}
-	assert(_fileCursor <= _fileEndOffset && _fileCursor >= _fileOffset);
-
-	_archive.seek(_fileCursor, SEEK_SET);
-}
-
-uint32 Archive::read(void *dataPtr, uint32 dataSize) {
-//	printf("read(%i, %i)\n", file->_cursor, file->_endOffset);
-	if (_file == false)
-		error("Archive::read: no archived file is currently open");
-
-	if (_fileCursor >= _fileEndOffset)
-		error("can't read beyond end of archived file");
-
-	if (_fileEndOffset - _fileCursor < dataSize)
-		dataSize = _fileEndOffset - _fileCursor;
-
-	int32 readBytes = _archive.read(dataPtr, dataSize);
-	_fileCursor += readBytes;
-
-	return readBytes;
-}
-
-
-
-} // namespace Parallaction

Modified: scummvm/trunk/engines/parallaction/disk.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk.cpp	2007-07-26 19:52:18 UTC (rev 28220)
+++ scummvm/trunk/engines/parallaction/disk.cpp	2007-07-26 20:22:51 UTC (rev 28221)
@@ -37,6 +37,181 @@
 
 namespace Parallaction {
 
+
+//  HACK: Several archives ('de', 'en', 'fr' and 'disk0') in the multi-lingual
+//  Amiga version of Nippon Safes, and one archive ('fr') in the Amiga Demo of
+//  Nippon Safes used different internal offsets than all the other archives.
+//
+//  When an archive is opened in the Amiga demo, its size is checked against
+//  SIZEOF_SMALL_ARCHIVE to detect when the smaller archive is used.
+//
+//  When an archive is opened in Amiga multi-lingual version, the header is
+//  checked again NDOS to detect when a smaller archive is used.
+//
+#define SIZEOF_SMALL_ARCHIVE      	12778
+
+#define ARCHIVE_FILENAMES_OFS		0x16
+
+#define NORMAL_ARCHIVE_FILES_NUM	384
+#define SMALL_ARCHIVE_FILES_NUM		180
+
+#define NORMAL_ARCHIVE_SIZES_OFS	0x3016
+#define SMALL_ARCHIVE_SIZES_OFS		0x1696
+
+#define NORMAL_ARCHIVE_DATA_OFS		0x4000
+#define SMALL_ARCHIVE_DATA_OFS		0x1966
+
+Archive::Archive() {
+	resetArchivedFile();
+}
+
+void Archive::open(const char *file) {
+	debugC(1, kDebugDisk, "Archive::open(%s)", file);
+
+	if (_archive.isOpen())
+		close();
+
+	char	path[PATH_LEN];
+
+	strcpy(path, file);
+	if (!_archive.open(path))
+		error("archive '%s' not found", path);
+
+	_archiveName = file;
+
+	bool isSmallArchive = false;
+	if (_vm->getPlatform() == Common::kPlatformAmiga) {
+		if (_vm->getFeatures() & GF_DEMO) {
+			isSmallArchive = _archive.size() == SIZEOF_SMALL_ARCHIVE;
+		} else if (_vm->getFeatures() & GF_LANG_MULT) {
+			isSmallArchive = (_archive.readUint32BE() != MKID_BE('NDOS'));
+		}
+	}
+
+	_numFiles = (isSmallArchive) ? SMALL_ARCHIVE_FILES_NUM : NORMAL_ARCHIVE_FILES_NUM;
+
+	_archive.seek(ARCHIVE_FILENAMES_OFS);
+	_archive.read(_archiveDir, _numFiles*32);
+
+	_archive.seek((isSmallArchive) ? SMALL_ARCHIVE_SIZES_OFS : NORMAL_ARCHIVE_SIZES_OFS);
+
+	uint32 dataOffset = (isSmallArchive) ? SMALL_ARCHIVE_DATA_OFS : NORMAL_ARCHIVE_DATA_OFS;
+	for (uint16 i = 0; i < _numFiles; i++) {
+		_archiveOffsets[i] = dataOffset;
+		_archiveLenghts[i] = _archive.readUint32BE();
+		dataOffset += _archiveLenghts[i];
+	}
+
+	return;
+}
+
+
+void Archive::close() {
+	if (!_archive.isOpen()) return;
+
+	resetArchivedFile();
+
+	_archive.close();
+	_archiveName.clear();
+}
+
+Common::String Archive::name() const {
+	return _archiveName;
+}
+
+bool Archive::openArchivedFile(const char *filename) {
+	debugC(3, kDebugDisk, "Archive::openArchivedFile(%s)", filename);
+
+	resetArchivedFile();
+
+	debugC(3, kDebugDisk, "Archive::openArchivedFile(%s)", filename);
+
+	if (!_archive.isOpen())
+		error("Archive::openArchivedFile: the archive is not open");
+
+	uint16 i = 0;
+	for ( ; i < _numFiles; i++) {
+		if (!scumm_stricmp(_archiveDir[i], filename)) break;
+	}
+	if (i == _numFiles) return false;
+
+	debugC(9, kDebugDisk, "Archive::openArchivedFile: '%s' found in slot %i", filename, i);
+
+	_file = true;
+
+	_fileOffset = _archiveOffsets[i];
+	_fileCursor = _archiveOffsets[i];
+	_fileEndOffset = _archiveOffsets[i] + _archiveLenghts[i];
+
+	_archive.seek(_fileOffset);
+
+	return true;
+}
+
+void Archive::resetArchivedFile() {
+	_file = false;
+	_fileCursor = 0;
+	_fileOffset = 0;
+	_fileEndOffset = 0;
+}
+
+void Archive::closeArchivedFile() {
+	resetArchivedFile();
+}
+
+
+uint32 Archive::size() const {
+	return (_file == true ? _fileEndOffset - _fileOffset : 0);
+}
+
+uint32 Archive::pos() const {
+	return (_file == true ? _fileCursor - _fileOffset : 0 );
+}
+
+bool Archive::eos() const {
+	return (_file == true ? _fileCursor == _fileEndOffset : true );
+}
+
+void Archive::seek(int32 offs, int whence) {
+	assert(_file == true && _fileCursor <= _fileEndOffset);
+
+	switch (whence) {
+	case SEEK_CUR:
+		_fileCursor += offs;
+		break;
+	case SEEK_SET:
+		_fileCursor = _fileOffset + offs;
+		break;
+	case SEEK_END:
+		_fileCursor = _fileEndOffset - offs;
+		break;
+	}
+	assert(_fileCursor <= _fileEndOffset && _fileCursor >= _fileOffset);
+
+	_archive.seek(_fileCursor, SEEK_SET);
+}
+
+uint32 Archive::read(void *dataPtr, uint32 dataSize) {
+//	printf("read(%i, %i)\n", file->_cursor, file->_endOffset);
+	if (_file == false)
+		error("Archive::read: no archived file is currently open");
+
+	if (_fileCursor >= _fileEndOffset)
+		error("can't read beyond end of archived file");
+
+	if (_fileEndOffset - _fileCursor < dataSize)
+		dataSize = _fileEndOffset - _fileCursor;
+
+	int32 readBytes = _archive.read(dataPtr, dataSize);
+	_fileCursor += readBytes;
+
+	return readBytes;
+}
+
+
+
+
+
 /*
 	This stream class is just a wrapper around Archive, so
 	deallocation is not a problem. In fact, this class doesn't

Modified: scummvm/trunk/engines/parallaction/module.mk
===================================================================
--- scummvm/trunk/engines/parallaction/module.mk	2007-07-26 19:52:18 UTC (rev 28220)
+++ scummvm/trunk/engines/parallaction/module.mk	2007-07-26 20:22:51 UTC (rev 28221)
@@ -2,7 +2,6 @@
 
 MODULE_OBJS := \
 	animation.o \
-	archive.o \
 	callables.o \
 	commands.o \
 	debug.o \


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list