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

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Fri Jun 15 06:05:57 CEST 2007


Revision: 27411
          http://scummvm.svn.sourceforge.net/scummvm/?rev=27411&view=rev
Author:   Kirben
Date:     2007-06-14 21:05:57 -0700 (Thu, 14 Jun 2007)

Log Message:
-----------
Add basic support for Amiga version.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/archive.cpp
    scummvm/trunk/engines/parallaction/disk.cpp
    scummvm/trunk/engines/parallaction/menu.cpp
    scummvm/trunk/engines/parallaction/parallaction.cpp

Modified: scummvm/trunk/engines/parallaction/archive.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/archive.cpp	2007-06-15 03:58:21 UTC (rev 27410)
+++ scummvm/trunk/engines/parallaction/archive.cpp	2007-06-15 04:05:57 UTC (rev 27411)
@@ -22,7 +22,9 @@
  * $Id$
  *
  */
+#include "common/stdafx.h"
 
+#include "common/endian.h"
 #include "common/file.h"
 
 #include "parallaction/disk.h"
@@ -54,6 +56,7 @@
 }
 
 void Archive::open(const char *file) {
+	bool isSmallArchive;
 	debugC(3, kDebugDisk, "Archive::open(%s)", file);
 
 	if (_archive.isOpen())
@@ -65,7 +68,11 @@
 	if (!_archive.open(path))
 		error("archive '%s' not found", path);
 
-	bool isSmallArchive = _archive.size() == SIZEOF_SMALL_ARCHIVE;
+	if (_vm->getFeatures() & GF_DEMO) {
+		isSmallArchive = _archive.size() == SIZEOF_SMALL_ARCHIVE;
+	} else {
+		isSmallArchive = (_archive.readUint32BE() != MKID_BE('NDOS'));
+	}
 
 	_numFiles = (isSmallArchive) ? SMALL_ARCHIVE_FILES_NUM : NORMAL_ARCHIVE_FILES_NUM;
 

Modified: scummvm/trunk/engines/parallaction/disk.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk.cpp	2007-06-15 03:58:21 UTC (rev 27410)
+++ scummvm/trunk/engines/parallaction/disk.cpp	2007-06-15 04:05:57 UTC (rev 27411)
@@ -808,7 +808,11 @@
 	Common::SeekableReadStream *s;
 
 	char path[PATH_LEN];
-	sprintf(path, "%s.talk", name);
+	if (_vm->getFeatures() & GF_DEMO)
+		sprintf(path, "%s.talk", name);
+	else
+		sprintf(path, "talk/%s.talk", name);
+
 	s = openArchivedFile(path, false);
 	if (s == NULL) {
 		s = openArchivedFile(name, true);
@@ -824,7 +828,11 @@
 	debugC(1, kDebugDisk, "AmigaDisk::loadObjects");
 
 	char path[PATH_LEN];
-	sprintf(path, "%s.objs", name);
+	if (_vm->getFeatures() & GF_DEMO)
+		sprintf(path, "%s.objs", name);
+	else
+		sprintf(path, "objs/%s.objs", name);
+
 	Common::SeekableReadStream *s = openArchivedFile(path, true);
 
 	Cnv *cnv = makeCnv(*s);
@@ -1103,6 +1111,9 @@
 		dispose = true;
 		stream = s;
 	} else {
+		if (!(_vm->getFeatures() & GF_DEMO))
+			sprintf(path, "objs/%s.table", name);
+
 		if (!_resArchive.openArchivedFile(path))
 			errorFileNotFound(path);
 

Modified: scummvm/trunk/engines/parallaction/menu.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/menu.cpp	2007-06-15 03:58:21 UTC (rev 27410)
+++ scummvm/trunk/engines/parallaction/menu.cpp	2007-06-15 04:05:57 UTC (rev 27411)
@@ -105,7 +105,7 @@
 
 void Menu::start() {
 
-	_vm->_disk->selectArchive((_vm->getPlatform() == Common::kPlatformPC) ? "disk1" : "disk0");
+	_vm->_disk->selectArchive((_vm->getFeatures() & GF_DEMO) ? "disk0" : "disk1");
 
 	splash();
 

Modified: scummvm/trunk/engines/parallaction/parallaction.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.cpp	2007-06-15 03:58:21 UTC (rev 27410)
+++ scummvm/trunk/engines/parallaction/parallaction.cpp	2007-06-15 04:05:57 UTC (rev 27411)
@@ -175,11 +175,11 @@
 
 	_baseTime = 0;
 
-	if (getPlatform() == Common::kPlatformPC)
+	if (getPlatform() == Common::kPlatformPC) {
 		_disk = new DosDisk(this);
-	else {
+	} else {
 		_disk = new AmigaDisk(this);
-		_disk->selectArchive("disk0");
+		_disk->selectArchive((_vm->getFeatures() & GF_DEMO) ? "disk0" : "disk1");
 	}
 
 	_engineFlags = 0;
@@ -753,10 +753,13 @@
 		// character for sanity before memory is freed
 		freeCharacter();
 
-		_disk->selectArchive((_vm->getPlatform() == Common::kPlatformPC) ? "disk1" : "disk0");
+		_disk->selectArchive((_vm->getFeatures() & GF_DEMO) ? "disk0" : "disk1");
 		_vm->_char._ani._cnv = _disk->loadFrames(fullName);
 
 		if (!IS_DUMMY_CHARACTER(name)) {
+			if (_vm->getPlatform() == Common::kPlatformAmiga)
+				_disk->selectArchive("disk0");
+
 			_vm->_char._head = _disk->loadHead(baseName);
 			_vm->_char._talk = _disk->loadTalk(baseName);
 			_vm->_char._objs = _disk->loadObjects(baseName);
@@ -765,7 +768,7 @@
 
 			_soundMan->playCharacterMusic(name);
 
-			if ((getFeatures() & GF_DEMO) == 0)
+			if (!(getFeatures() & GF_DEMO))
 				parseLocation("common");
 		}
 	}


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