[Scummvm-cvs-logs] SF.net SVN: scummvm:[35497] scummvm/trunk/engines/saga
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Tue Dec 23 17:29:26 CET 2008
Revision: 35497
http://scummvm.svn.sourceforge.net/scummvm/?rev=35497&view=rev
Author: thebluegr
Date: 2008-12-23 16:29:26 +0000 (Tue, 23 Dec 2008)
Log Message:
-----------
Some initial code for HRS resource loading
Modified Paths:
--------------
scummvm/trunk/engines/saga/resource.h
scummvm/trunk/engines/saga/resource_hrs.cpp
Modified: scummvm/trunk/engines/saga/resource.h
===================================================================
--- scummvm/trunk/engines/saga/resource.h 2008-12-23 15:26:55 UTC (rev 35496)
+++ scummvm/trunk/engines/saga/resource.h 2008-12-23 16:29:26 UTC (rev 35497)
@@ -57,8 +57,12 @@
};
struct ResourceData {
+ uint32 id; // SAGA2
size_t offset;
size_t size;
+
+ bool isExternal() { return ((offset & (1L<<31)) != 0L); } // SAGA2
+
PatchData *patchData;
void fillSoundPatch(const GameSoundInfo *&soundInfo) {
if (patchData != NULL) {
@@ -75,11 +79,13 @@
const char *fileName;
uint16 fileType;
Common::File *file;
- int serial;
+ int serial; // IHNM speech files
bool isBigEndian;
ResourceData *table;
size_t count;
+ uint32 firstGroupOffset; // SAGA2
+ ResourceData *groups; // SAGA2
Common::File *getFile(ResourceData *resourceData) const {
if (resourceData->patchData != NULL) {
@@ -189,7 +195,7 @@
private:
virtual bool loadMacContext(ResourceContext *context) { return false; }
virtual bool loadResContext(ResourceContext *context, uint32 contextOffset, uint32 contextSize) {
- return loadResContext_v1(context, contextOffset, contextSize);
+ return loadResContext_v1(context, 0, contextSize);
}
MetaResource _metaResource;
};
@@ -207,9 +213,9 @@
private:
virtual bool loadMacContext(ResourceContext *context) { return false; }
virtual bool loadResContext(ResourceContext *context, uint32 contextOffset, uint32 contextSize) {
- return loadResContext_v2(context, contextOffset, contextSize);
+ return loadResContext_v2(context, contextSize);
}
- bool loadResContext_v2(ResourceContext *context, uint32 contextOffset, uint32 contextSize);
+ bool loadResContext_v2(ResourceContext *context, uint32 contextSize);
};
} // End of namespace Saga
Modified: scummvm/trunk/engines/saga/resource_hrs.cpp
===================================================================
--- scummvm/trunk/engines/saga/resource_hrs.cpp 2008-12-23 15:26:55 UTC (rev 35496)
+++ scummvm/trunk/engines/saga/resource_hrs.cpp 2008-12-23 16:29:26 UTC (rev 35497)
@@ -36,11 +36,36 @@
#include "saga/sndres.h"
#include "common/advancedDetector.h"
+#include "common/endian.h"
namespace Saga {
-bool Resource_HRS::loadResContext_v2(ResourceContext *context, uint32 contextOffset, uint32 contextSize) {
- // STUB
+bool Resource_HRS::loadResContext_v2(ResourceContext *context, uint32 contextSize) {
+ ResourceData *resourceData = new ResourceData();
+ uint32 firstGroupOffset;
+ const int resDataSize = 4 + 4 + 4;
+
+ context->file->seek(0, SEEK_SET);
+
+ // Read head element (origin)
+ resourceData->id = context->file->readUint32BE();
+ resourceData->offset = context->file->readUint32LE();
+ resourceData->size = context->file->readUint32LE();
+
+ // Check if the file is valid
+ if (resourceData->id != MKID_BE('HRES')) { // header
+ free(resourceData);
+ return false;
+ }
+
+ // Read first group offset
+ context->file->seek(resourceData->offset - 4, SEEK_SET);
+ firstGroupOffset = context->file->readUint32LE();
+
+ // Allocate buffers for root/base node, groups and data
+ // TODO
+
+ free(resourceData);
return true;
}
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