[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