diff options
-rw-r--r-- | devtools/create_supernova2/create_image/028/palette | 64 | ||||
-rw-r--r-- | devtools/create_supernova2/create_image/create_image.cpp | 44 | ||||
-rw-r--r-- | devtools/create_supernova2/ms2_data.015-en | bin | 87123 -> 87123 bytes | |||
-rw-r--r-- | devtools/create_supernova2/ms2_data.028-en | bin | 64558 -> 64744 bytes | |||
-rw-r--r-- | engines/supernova/graphics.cpp | 3 |
5 files changed, 97 insertions, 14 deletions
diff --git a/devtools/create_supernova2/create_image/028/palette b/devtools/create_supernova2/create_image/028/palette index 18fcc1f6a3..bb77e05946 100644 --- a/devtools/create_supernova2/create_image/028/palette +++ b/devtools/create_supernova2/create_image/028/palette @@ -1,4 +1,4 @@ -177 +239 0 0 0 10 10 10 @@ -177,3 +177,65 @@ 55 55 55 55 55 55 55 55 55 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/devtools/create_supernova2/create_image/create_image.cpp b/devtools/create_supernova2/create_image/create_image.cpp index 9600f0cd33..1bf1e24f7c 100644 --- a/devtools/create_supernova2/create_image/create_image.cpp +++ b/devtools/create_supernova2/create_image/create_image.cpp @@ -11,7 +11,7 @@ int writePalette(std::ofstream &output) { std::string filename = filenumber + "/palette"; std::ifstream palette(filename.c_str()); if (!palette.is_open()) { - std::cerr << "Couldn't open palette file"; + std::cerr << "Couldn't open palette file" << std::endl; return 1; } int input; @@ -29,7 +29,7 @@ int writeSections(std::ofstream &output) { std::string filename = filenumber + "/section_info"; std::ifstream sectionInfo(filename.c_str()); if (!sectionInfo.is_open()) { - std::cerr << "Couldn't open section_info file"; + std::cerr << "Couldn't open section_info file" << std::endl; return 0; } int numSections; @@ -72,7 +72,7 @@ int writeClickFields(std::ofstream &output) { std::string filename = filenumber + "/clickfield_info"; std::ifstream clickFieldInfo(filename.c_str()); if (!clickFieldInfo.is_open()) { - std::cerr << "Couldn't open clickfield_info file"; + std::cerr << "Couldn't open clickfield_info file" << std::endl; return 1; } int numClickFields; @@ -109,8 +109,8 @@ int writePixelData(std::ofstream &output, int imageNum, int skip) { fileName << filenumber << "/image" << imageNum << ".bmp"; std::ifstream image(fileName.str().c_str(), std::ios::binary); if (!image.is_open()) { - std::cerr << "Couldn't open " << fileName.str() << " file"; - return 1; + std::cerr << "Couldn't open " << fileName.str() << " file" << std::endl; + return 0; } image.seekg(0, image.end); @@ -121,7 +121,7 @@ int writePixelData(std::ofstream &output, int imageNum, int skip) { image.read(buf, length); output.write(buf, length); delete buf; - return 0; + return length; } void printHelp() { @@ -152,11 +152,11 @@ int main(int argc, char *argv[]) { oFileName += "." + filenumber; std::ofstream output(oFileName.c_str(), std::ios::binary); if (!output.is_open()) { - std::cerr << "Couldn't open output file"; + std::cerr << "Couldn't open output file" << std::endl; return 1; } // size - // don't know how to determine that yet + // just a place holder, will be filled later output << (char) 0x40; output << (char) 0x70; output << (char) 0x01; @@ -171,8 +171,32 @@ int main(int argc, char *argv[]) { // we don't compress the images, so set to 0 output << (char) 0; //numRepeat output << (char) 0; //numZw - for (int i = 0; i < numImages; i++) - writePixelData(output, i, bytesSkip); + int totalLength = 0; + int oldLength = 0; + for (int i = 0; i < numImages; i++) { + totalLength += writePixelData(output, i, bytesSkip); + if (oldLength == totalLength) { + std::cerr << "Error while reading the image number: " << i << std::endl; + return 1; + } + oldLength = totalLength; + } + + //reversing the size computation inside the engine + totalLength += 15; + totalLength /= 16; + totalLength -= 0x70; + int i = (totalLength & 0xf000) >> 12; + int j = totalLength << 4; + char *i_p = (char *) &i; + char *j_p = (char *) &j; + + //writing the size + output.seekp(0); + output << j_p[0]; + output << j_p[1]; + output << i_p[0]; + output << i_p[1]; output.close(); return 0; } diff --git a/devtools/create_supernova2/ms2_data.015-en b/devtools/create_supernova2/ms2_data.015-en Binary files differindex d0994589bc..20ab5307db 100644 --- a/devtools/create_supernova2/ms2_data.015-en +++ b/devtools/create_supernova2/ms2_data.015-en diff --git a/devtools/create_supernova2/ms2_data.028-en b/devtools/create_supernova2/ms2_data.028-en Binary files differindex 5ac4feded4..88ab4c8ec1 100644 --- a/devtools/create_supernova2/ms2_data.028-en +++ b/devtools/create_supernova2/ms2_data.028-en diff --git a/engines/supernova/graphics.cpp b/engines/supernova/graphics.cpp index ed17ebe17a..7bd1cc6063 100644 --- a/engines/supernova/graphics.cpp +++ b/engines/supernova/graphics.cpp @@ -114,9 +114,6 @@ bool MSNImage::loadPbmFromEngineDataFile() { if (version != SUPERNOVA_DAT_VERSION) return false; } else if (_MSPart == 2) { - if (_filenumber == 28) - name = "IMG1"; - else return false; if (!f.open(SUPERNOVA2_DAT)) |