aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/cruise/cruise_main.cpp7
-rw-r--r--engines/cruise/dataLoader.cpp42
-rw-r--r--engines/cruise/dataLoader.h1
-rw-r--r--engines/cruise/function.cpp20
4 files changed, 45 insertions, 25 deletions
diff --git a/engines/cruise/cruise_main.cpp b/engines/cruise/cruise_main.cpp
index ea120ba05e..39c90efb28 100644
--- a/engines/cruise/cruise_main.cpp
+++ b/engines/cruise/cruise_main.cpp
@@ -81,12 +81,11 @@ int getNumObjectsByClass(int scriptIdx, int param) {
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) {
diff --git a/engines/cruise/dataLoader.cpp b/engines/cruise/dataLoader.cpp
index d725e1bb89..3cf3957703 100644
--- a/engines/cruise/dataLoader.cpp
+++ b/engines/cruise/dataLoader.cpp
@@ -257,13 +257,15 @@ int loadFile(const char* name, int idx, int destIdx) {
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 @@ int loadFileRange(const char *name, int startIdx, int currentEntryIdx, int numId
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 @@ int loadFullBundle(const char *name, int startIdx) {
switch (fileType) {
case type_SET: {
+ // Sprite set
int i;
int numMaxEntriesInSet;
@@ -328,15 +333,17 @@ int loadFullBundle(const char *name, int startIdx) {
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 @@ int loadFNTSub(uint8 *ptr, int destIdx) {
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;
diff --git a/engines/cruise/dataLoader.h b/engines/cruise/dataLoader.h
index 2e433acfcb..f6bea29cde 100644
--- a/engines/cruise/dataLoader.h
+++ b/engines/cruise/dataLoader.h
@@ -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);
diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp
index a27fa7a044..44107d4879 100644
--- a/engines/cruise/function.cpp
+++ b/engines/cruise/function.cpp
@@ -357,10 +357,10 @@ int16 Op_FindSet(void) {
}
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_LoadFrame(void) {
}
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);