[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