[Scummvm-cvs-logs] SF.net SVN: scummvm:[41724] scummvm/trunk/engines/cruise

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Jun 21 07:13:29 CEST 2009


Revision: 41724
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41724&view=rev
Author:   dreammaster
Date:     2009-06-21 05:13:29 +0000 (Sun, 21 Jun 2009)

Log Message:
-----------
Bugfixes to pre-loading and handling of resources such as sound files

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/cruise_main.cpp
    scummvm/trunk/engines/cruise/dataLoader.cpp
    scummvm/trunk/engines/cruise/dataLoader.h
    scummvm/trunk/engines/cruise/function.cpp

Modified: scummvm/trunk/engines/cruise/cruise_main.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.cpp	2009-06-21 01:22:23 UTC (rev 41723)
+++ scummvm/trunk/engines/cruise/cruise_main.cpp	2009-06-21 05:13:29 UTC (rev 41724)
@@ -81,12 +81,11 @@
 	return (counter);
 }
 
-void resetFileEntryRange(int param1, int param2) {
+void resetFileEntryRange(int start, int count) {
 	int i;
 
-	for (i = param1; i < param2; i++) {
-		resetFileEntry(i);
-	}
+	for (i = 0; i < count; ++i)
+		resetFileEntry(start + i);
 }
 
 int getProcParam(int overlayIdx, int param2, const char *name) {

Modified: scummvm/trunk/engines/cruise/dataLoader.cpp
===================================================================
--- scummvm/trunk/engines/cruise/dataLoader.cpp	2009-06-21 01:22:23 UTC (rev 41723)
+++ scummvm/trunk/engines/cruise/dataLoader.cpp	2009-06-21 05:13:29 UTC (rev 41724)
@@ -257,13 +257,15 @@
 		return loadFNTSub(ptr, idx);
 		break;
 	}
-	case type_UNK: {
-		break;
-	}
 	case type_SPL: {
+		// Sound file
+		loadSPLSub(ptr, idx);
 		break;
 	}
+	default:
+		error("Unknown fileType in loadFile");
 	}
+
 	return -1;
 }
 
@@ -293,13 +295,15 @@
 		loadFNTSub(ptr, startIdx);
 		break;
 	}
-	case type_UNK: {
-		break;
-	}
 	case type_SPL: {
+		// Sound file
+		loadSPLSub(ptr, startIdx);
 		break;
 	}
+	default:
+		error("Unknown fileType in loadFileRange");
 	}
+
 	return 0;
 }
 
@@ -316,6 +320,7 @@
 
 	switch (fileType) {
 	case type_SET: {
+		// Sprite set
 		int i;
 		int numMaxEntriesInSet;
 
@@ -328,15 +333,17 @@
 		break;
 	}
 	case type_FNT: {
+		// Font file
 		loadFNTSub(ptr, startIdx);
 		break;
 	}
-	case type_UNK: {
-		break;
-	}
 	case type_SPL: {
+		// Sound file
+		loadSPLSub(ptr, startIdx);
 		break;
 	}
+	default:
+		error("Unknown fileType in loadFullBundle");
 	}
 
 	return 0;
@@ -387,6 +394,23 @@
 	return 1;
 }
 
+int loadSPLSub(uint8 *ptr, int destIdx) {
+	uint8 *destPtr;
+	int fileIndex;
+
+	if (destIdx == -1) {
+		fileIndex = createResFileEntry(loadFileVar1, 1, loadFileVar1, 1);
+	} else {
+		fileIndex = updateResFileEntry(loadFileVar1, 1, loadFileVar1, destIdx, 1);
+	}
+
+	destPtr = filesDatabase[fileIndex].subData.ptr;
+	memcpy(destPtr, ptr, loadFileVar1);
+
+	return 1;
+}
+
+
 int loadSetEntry(const char *name, uint8 *ptr, int currentEntryIdx, int currentDestEntry) {
 	uint8 *ptr3;
 	int offset;

Modified: scummvm/trunk/engines/cruise/dataLoader.h
===================================================================
--- scummvm/trunk/engines/cruise/dataLoader.h	2009-06-21 01:22:23 UTC (rev 41723)
+++ scummvm/trunk/engines/cruise/dataLoader.h	2009-06-21 05:13:29 UTC (rev 41724)
@@ -29,6 +29,7 @@
 namespace Cruise {
 
 int loadFNTSub(uint8 *ptr, int destIdx);
+int loadSPLSub(uint8 *ptr, int destIdx);
 int loadSetEntry(const char *name, uint8 *ptr, int currentEntryIdx, int currentDestEntry);
 int loadFile(const char* name, int idx, int destIdx);
 int loadData(const char * name, int startIdx);

Modified: scummvm/trunk/engines/cruise/function.cpp
===================================================================
--- scummvm/trunk/engines/cruise/function.cpp	2009-06-21 01:22:23 UTC (rev 41723)
+++ scummvm/trunk/engines/cruise/function.cpp	2009-06-21 05:13:29 UTC (rev 41724)
@@ -357,10 +357,10 @@
 }
 
 int16 Op_RemoveFrame(void) {
-	int var1 = popVar();
-	int var2 = popVar();
+	int count = popVar();
+	int start = popVar();
 
-	resetFileEntryRange(var2, var1);
+	resetFileEntryRange(start, count);
 
 	return (0);
 }
@@ -563,26 +563,22 @@
 }
 
 int16 Op_LoadAbs(void) {
-	int param1;
-//  int param2;
-//  int param3;
+	int slot;
 	char name[36] = "";
 	char *ptr;
 	int result = 0;
 
 	ptr = (char *) popPtr();
+	slot = popVar();
 
-	strcpy(name, ptr);
-
-	param1 = popVar();
-
-	if (param1 >= 0 || param1 < NUM_FILE_ENTRIES) {
+	if ((slot >= 0) && (slot < NUM_FILE_ENTRIES)) {
+		strcpy(name, ptr);
 		strToUpper(name);
 
 		gfxModuleData_gfxWaitVSync();
 		gfxModuleData_gfxWaitVSync();
 
-		result = loadFullBundle(name, param1);
+		result = loadFullBundle(name, slot);
 	}
 
 	changeCursor(CURSOR_NORMAL);


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