aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dists/engine-data/kyra.datbin355807 -> 355898 bytes
-rw-r--r--engines/kyra/staticres.cpp2
-rw-r--r--tools/create_kyradat/create_kyradat.cpp4
-rw-r--r--tools/create_kyradat/extract.cpp52
-rw-r--r--tools/create_kyradat/extract.h1
5 files changed, 56 insertions, 3 deletions
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index d8cb28076a..23e866c62e 100644
--- a/dists/engine-data/kyra.dat
+++ b/dists/engine-data/kyra.dat
Binary files differ
diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp
index c55ee57214..edfa61e5b4 100644
--- a/engines/kyra/staticres.cpp
+++ b/engines/kyra/staticres.cpp
@@ -42,7 +42,7 @@
namespace Kyra {
-#define RESFILE_VERSION 72
+#define RESFILE_VERSION 73
namespace {
bool checkKyraDat(Common::SeekableReadStream *file) {
diff --git a/tools/create_kyradat/create_kyradat.cpp b/tools/create_kyradat/create_kyradat.cpp
index 85038a0820..93a5804179 100644
--- a/tools/create_kyradat/create_kyradat.cpp
+++ b/tools/create_kyradat/create_kyradat.cpp
@@ -45,7 +45,7 @@
#include <map>
enum {
- kKyraDatVersion = 72
+ kKyraDatVersion = 73
};
const ExtractFilename extractFilenames[] = {
@@ -53,7 +53,7 @@ const ExtractFilename extractFilenames[] = {
{ kIdMap, -1, true },
// INTRO / OUTRO sequences
- { k1ForestSeq, kTypeRawData, false },
+ { k1ForestSeq, kTypeForestSeqData, false },
{ k1KallakWritingSeq, kTypeRawData, false },
{ k1KyrandiaLogoSeq, kTypeRawData, false },
{ k1KallakMalcolmSeq, kTypeRawData, false },
diff --git a/tools/create_kyradat/extract.cpp b/tools/create_kyradat/extract.cpp
index 8286d1ca63..3503aea47f 100644
--- a/tools/create_kyradat/extract.cpp
+++ b/tools/create_kyradat/extract.cpp
@@ -36,6 +36,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
bool extractStrings10(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
bool extractRooms(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
bool extractShapes(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
+bool extractKyraForestSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
bool extractAmigaSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
bool extractWdSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
@@ -58,6 +59,7 @@ const ExtractType extractTypeTable[] = {
{ kTypeRoomList, extractRooms },
{ kTypeShapeList, extractShapes },
{ kTypeRawData, extractRaw },
+ { kTypeForestSeqData, extractKyraForestSeqData },
{ kTypeAmigaSfxTable, extractAmigaSfx },
{ kTypeTownsWDSfxTable, extractWdSfx },
@@ -90,6 +92,7 @@ const TypeTable typeTable[] = {
{ kTypeRawData, 1 },
{ kTypeRoomList, 2 },
{ kTypeShapeList, 3 },
+ { kTypeForestSeqData, 1 },
{ kTypeAmigaSfxTable, 4 },
{ kTypeTownsWDSfxTable, 1 },
{ k2TypeSeqData, 5 },
@@ -376,6 +379,55 @@ bool extractShapes(PAKFile &out, const ExtractInformation *info, const byte *dat
return out.addFile(filename, buffer, size + 1 * 4);
}
+bool extractKyraForestSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
+ if (info->platform != kPlatformPC98)
+ return extractRaw(out, info, data, size, filename, id);
+
+ struct PatchEntry {
+ uint16 pos;
+ uint8 val;
+ };
+
+ // This data has been taken from the FM-Towns version
+ static const PatchEntry patchData[] = {
+ { 0x0019, 0x06 }, { 0x001A, 0x09 }, { 0x001B, 0x00 }, { 0x002E, 0x06 }, { 0x002F, 0x09 }, { 0x0030, 0x00 },
+ { 0x003D, 0x06 }, { 0x003E, 0x09 }, { 0x003F, 0x00 }, { 0x004C, 0x06 }, { 0x004D, 0x09 }, { 0x004E, 0x00 },
+ { 0x005B, 0x06 }, { 0x005C, 0x09 }, { 0x005D, 0x00 }, { 0x0064, 0x06 }, { 0x0065, 0x09 }, { 0x0066, 0x00 },
+ { 0x0079, 0x06 }, { 0x007A, 0x09 }, { 0x007B, 0x00 }, { 0x0088, 0x06 }, { 0x0089, 0x09 }, { 0x008A, 0x00 },
+ { 0x0097, 0x06 }, { 0x0098, 0x09 }, { 0x0099, 0x00 }, { 0x00A6, 0x06 }, { 0x00A7, 0x09 }, { 0x00A8, 0x00 },
+ { 0x00AD, 0x06 }, { 0x00AE, 0x09 }, { 0x00AF, 0x00 }, { 0x00B4, 0x06 }, { 0x00B5, 0x09 }, { 0x00B6, 0x00 },
+ { 0x00C3, 0x06 }, { 0x00C4, 0x09 }, { 0x00C5, 0x00 }, { 0x00CA, 0x06 }, { 0x00CB, 0x09 }, { 0x00CC, 0x00 },
+ { 0x00D1, 0x06 }, { 0x00D2, 0x09 }, { 0x00D3, 0x00 }, { 0x00E0, 0x06 }, { 0x00E1, 0x09 }, { 0x00E2, 0x00 },
+ { 0x00E7, 0x06 }, { 0x00E8, 0x09 }, { 0x00E9, 0x00 }, { 0x00EE, 0x06 }, { 0x00EF, 0x09 }, { 0x00F0, 0x00 },
+ { 0x00FD, 0x06 }, { 0x00FE, 0x09 }, { 0x00FF, 0x00 }, { 0x010A, 0x06 }, { 0x010B, 0x09 }, { 0x010C, 0x00 },
+ { 0x011D, 0x06 }, { 0x011E, 0x09 }, { 0x011F, 0x00 }, { 0x012C, 0x06 }, { 0x012D, 0x09 }, { 0x012E, 0x00 },
+ { 0x013D, 0x06 }, { 0x013E, 0x09 }, { 0x013F, 0x00 }, { 0x0148, 0x06 }, { 0x0149, 0x09 }, { 0x014A, 0x00 },
+ { 0x0153, 0x06 }, { 0x0154, 0x09 }, { 0x0155, 0x00 }, { 0x015E, 0x06 }, { 0x015F, 0x09 }, { 0x0160, 0x00 },
+ { 0x0169, 0x06 }, { 0x016A, 0x09 }, { 0x016B, 0x00 }, { 0x016C, 0x06 }, { 0x016D, 0x12 }, { 0x016E, 0x00 },
+ { 0x017B, 0x06 }, { 0x017C, 0x09 }, { 0x017D, 0x00 }, { 0x0188, 0x06 }, { 0x0189, 0x09 }, { 0x018A, 0x00 },
+ { 0x0190, 0x13 }, { 0x0000, 0x00 }
+ };
+
+ uint32 outsize = size + (ARRAYSIZE(patchData) - 1);
+ uint8 *buffer = new uint8[outsize];
+ assert(buffer);
+
+ const uint8 *src = data;
+ uint8 *dst = buffer;
+ const PatchEntry *patchPos = patchData;
+
+ while (dst < (buffer + outsize)) {
+ if ((dst - buffer) == patchPos->pos) {
+ *dst++ = patchPos->val;
+ patchPos++;
+ } else {
+ *dst++ = *src++;
+ }
+ }
+
+ return out.addFile(filename, buffer, outsize);
+}
+
bool extractAmigaSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
const uint32 entries = size / 8;
byte *buffer = new byte[entries * 6 + 1 * 4];
diff --git a/tools/create_kyradat/extract.h b/tools/create_kyradat/extract.h
index 5aee089466..0903852dd2 100644
--- a/tools/create_kyradat/extract.h
+++ b/tools/create_kyradat/extract.h
@@ -35,6 +35,7 @@ enum kExtractType {
kTypeRoomList,
kTypeShapeList,
kTypeRawData,
+ kTypeForestSeqData,
kTypeAmigaSfxTable,
kTypeTownsWDSfxTable,