aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Turner2010-09-29 02:57:11 +0000
committerDavid Turner2010-09-29 02:57:11 +0000
commit05a08d61c738472c9a49d973b62e10be3d6b1118 (patch)
tree2958e0306cf10f16ae2ea63d86ec573540e44dc4
parente400554c2dae4890338b89b0f87444949909e732 (diff)
downloadscummvm-rg350-05a08d61c738472c9a49d973b62e10be3d6b1118.tar.gz
scummvm-rg350-05a08d61c738472c9a49d973b62e10be3d6b1118.tar.bz2
scummvm-rg350-05a08d61c738472c9a49d973b62e10be3d6b1118.zip
TOOLS : Fixes for skycpt use, particularly on case-sensitive OS
In order to allow for work on bug #1507756 "BASS: Officer Blunt wrong animation (?)", the skycpt tool needs to be run, but this was only previously used on case-insensitive OS i.e. Win32. To get this to work normally on case-sensitive OS i.e. Unix, a number of corrections were made to the hardcoded filenames to ensure the same case as the input files. Minor corrections : The README was also amended to deal with the pitfall of decompressing savefiles. Added output of each RESET.* file as processed so offending file can be seen on assertion. Corrected segfault on missing COMPACT.TXT, so exit is more graceful. svn-id: r52941
-rw-r--r--tools/skycpt/AsciiCptCompile.cpp8
-rw-r--r--tools/skycpt/AsciiCptCompile.vcproj2
-rw-r--r--tools/skycpt/README10
-rw-r--r--tools/skycpt/TextFile.cpp7
-rw-r--r--tools/skycpt/cptcompiler.cpp5
5 files changed, 17 insertions, 15 deletions
diff --git a/tools/skycpt/AsciiCptCompile.cpp b/tools/skycpt/AsciiCptCompile.cpp
index 22711bf061..1169de5aea 100644
--- a/tools/skycpt/AsciiCptCompile.cpp
+++ b/tools/skycpt/AsciiCptCompile.cpp
@@ -56,8 +56,8 @@ int main(int argc, char* argv[])
printf("Sorry, this program only works on little endian systems.\nGoodbye.\n");
return 0;
}
- TextFile *cptDef = new TextFile("compact.txt");
- FILE *inf = fopen("compact.txt", "r");
+ TextFile *cptDef = new TextFile("COMPACT.TXT");
+ FILE *inf = fopen("COMPACT.TXT", "r");
FILE *dbg = fopen("compact.dbg", "wb");
FILE *out = fopen("compact.bin", "wb");
FILE *sve = fopen("savedata.txt", "r");
@@ -70,7 +70,3 @@ int main(int argc, char* argv[])
printf("done\n");
return 0;
}
-
-
-
-
diff --git a/tools/skycpt/AsciiCptCompile.vcproj b/tools/skycpt/AsciiCptCompile.vcproj
index 99a2524cc9..e6a5def316 100644
--- a/tools/skycpt/AsciiCptCompile.vcproj
+++ b/tools/skycpt/AsciiCptCompile.vcproj
@@ -387,7 +387,7 @@
RelativePath=".\asmSrc\9compact.inc">
</File>
<File
- RelativePath=".\Compact.txt">
+ RelativePath=".\COMPACT.TXT">
</File>
<File
RelativePath=".\savedata.txt">
diff --git a/tools/skycpt/README b/tools/skycpt/README
index f6d5f2a45b..8b9705033d 100644
--- a/tools/skycpt/README
+++ b/tools/skycpt/README
@@ -39,10 +39,14 @@ If you still want to waste your time by creating this file:
Afterwards, it'll automatically show the load/save dialog where you save the game.
7) Rename the Savegame files you created to "RESET.*", depending on the version.
e.g. RESET.288 for v.0.00288
-8) Copy the files into the skycpt tool directory, execute the tool again.
+8) Rename each file with a ".gz" suffix and run gunzip on it.
+ This removes the ScummVM gzip savefile compression.
+ Failing to do this will cause skycpt to abort at a filesize assert
+ when reading the "RESET.*" files.
+9) Copy the files into the skycpt tool directory, execute the tool again.
It'll create a new COMPACT.DBG.
-9) Rename this file to SKY.CPT.
-10) DELETE IT BECAUSE IT'S PROBABLY BROKEN, NOT WORTH BOTHERING WITH ANYWAYS
+10) Rename this file to SKY.CPT.
+11) DELETE IT BECAUSE IT'S PROBABLY BROKEN, NOT WORTH BOTHERING WITH ANYWAYS
AND DOWNLOAD THE SKY.CPT FILE FROM THE URL ABOVE!!
Oh, I almost forgot.
diff --git a/tools/skycpt/TextFile.cpp b/tools/skycpt/TextFile.cpp
index 92d747f955..ee64d22f5f 100644
--- a/tools/skycpt/TextFile.cpp
+++ b/tools/skycpt/TextFile.cpp
@@ -28,13 +28,14 @@
TextFile::TextFile(const char *name) {
FILE *inf = fopen(name, "r");
+ _lines = NULL;
if (!inf) {
printf("Unable to open file %s\n", name);
getchar();
+ } else {
+ read(inf);
+ fclose(inf);
}
- _lines = NULL;
- read(inf);
- fclose(inf);
}
uint32 crop(char *line) {
diff --git a/tools/skycpt/cptcompiler.cpp b/tools/skycpt/cptcompiler.cpp
index 75434a4618..956f575d7d 100644
--- a/tools/skycpt/cptcompiler.cpp
+++ b/tools/skycpt/cptcompiler.cpp
@@ -475,7 +475,7 @@ void doCompile(FILE *inf, FILE *debOutf, FILE *resOutf, TextFile *cptDef, FILE *
bool filesExist = true;
char inName[32];
for (int i = 0; i < 7; i++) {
- sprintf(inName, "reset.%03d", gameVers[i]);
+ sprintf(inName, "RESET.%03d", gameVers[i]);
FILE *test = fopen(inName, "rb");
if (test)
fclose(test);
@@ -505,8 +505,9 @@ void doCompile(FILE *inf, FILE *debOutf, FILE *resOutf, TextFile *cptDef, FILE *
fwrite(&tmp, 2, 1, debOutf);
printf("reset destination: %ld\n", ftell(debOutf));
for (int cnt = 0; cnt < 6; cnt++) {
+ printf("Processing diff v0.0%03d\n", gameVers[cnt]);
uint16 diffPos = 0;
- sprintf(inName, "reset.%03d", gameVers[cnt]);
+ sprintf(inName, "RESET.%03d", gameVers[cnt]);
FILE *resDiff = fopen(inName, "rb");
fseek(resDiff, 0, SEEK_END);
assert(ftell(resDiff) == (resSize * 2));