diff options
author | Florian Kagerer | 2008-05-12 14:22:27 +0000 |
---|---|---|
committer | Florian Kagerer | 2008-05-12 14:22:27 +0000 |
commit | bde4fa1e9b6478e6d3820692048bbd7b85e56f73 (patch) | |
tree | 0732e75fdb85cb120cd935d1034405e9de35c2ae /tools/create_kyradat | |
parent | 0b9a3f22083cb7ec61953c3c6905c4780e93619a (diff) | |
download | scummvm-rg350-bde4fa1e9b6478e6d3820692048bbd7b85e56f73.tar.gz scummvm-rg350-bde4fa1e9b6478e6d3820692048bbd7b85e56f73.tar.bz2 scummvm-rg350-bde4fa1e9b6478e6d3820692048bbd7b85e56f73.zip |
fix for kyra 3 sfx (broken by last commit)
svn-id: r32061
Diffstat (limited to 'tools/create_kyradat')
-rw-r--r-- | tools/create_kyradat/create_kyradat.cpp | 32 | ||||
-rw-r--r-- | tools/create_kyradat/create_kyradat.h | 1 |
2 files changed, 30 insertions, 3 deletions
diff --git a/tools/create_kyradat/create_kyradat.cpp b/tools/create_kyradat/create_kyradat.cpp index 0ee3da4143..e49b5672b4 100644 --- a/tools/create_kyradat/create_kyradat.cpp +++ b/tools/create_kyradat/create_kyradat.cpp @@ -31,7 +31,7 @@ #include "md5.h" enum { - kKyraDatVersion = 25, + kKyraDatVersion = 26, kIndexSize = 12 }; @@ -66,6 +66,7 @@ bool extractHofShapeAnimDataV1(PAKFile &out, const Game *g, const byte *data, co bool extractHofShapeAnimDataV2(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch = 0); bool extractStringsWoSuffix(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch = 0); +bool extractPaddedStrings(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch = 0); bool extractRaw16to8(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch = 0); bool extractMrShapeAnimData(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch = 0); @@ -88,6 +89,7 @@ const ExtractType extractTypeTable[] = { { k2TypeShpDataV2, extractHofShapeAnimDataV2, createFilename }, { k2TypeSoundList, extractStringsWoSuffix, createFilename }, + { k2TypeSfxList, extractPaddedStrings, createFilename }, { k3TypeRaw16to8, extractRaw16to8, createFilename }, { k3TypeShpData, extractMrShapeAnimData, createFilename }, @@ -216,7 +218,7 @@ const ExtractFilename extractFilenames[] = { { k2SeqplayCredits, kTypeRawData, "S_CREDITS.TXT" }, { k2SeqplayCreditsSpecial, kTypeStringList, "S_CREDITS2.TXT" }, { k2SeqplayStrings, kTypeLanguageList, "S_STRINGS" }, - { k2SeqplaySfxFiles, kTypeStringList, "S_SFXFILES.TXT" }, + { k2SeqplaySfxFiles, k2TypeSoundList, "S_SFXFILES.TXT" }, { k2SeqplayTlkFiles, kTypeLanguageList, "S_TLKFILES" }, { k2SeqplaySeqData, k2TypeSeqData, "S_DATA.SEQ" }, { k2SeqplayIntroTracks, kTypeStringList, "S_INTRO.TRA" }, @@ -241,7 +243,7 @@ const ExtractFilename extractFilenames[] = { { k3MainMenuStrings, kTypeStringList, "MAINMENU.TXT" }, { k3MusicFiles, k2TypeSoundList, "SCORE.TRA" }, { k3ScoreTable, kTypeRawData, "SCORE.MAP" }, - { k3SfxFiles, kTypeStringList, "SFXFILES.TRA" }, + { k3SfxFiles, k2TypeSfxList, "SFXFILES.TRA" }, { k3SfxMap, k3TypeRaw16to8, "SFXINDEX.MAP" }, { k3ItemAnimData, k3TypeShpData, "INVANIM.SHP" }, { k3ItemMagicTable, k3TypeRaw16to8, "ITEMMAGIC.MAP" }, @@ -966,6 +968,30 @@ bool extractStringsWoSuffix(PAKFile &out, const Game *g, const byte *data, const return out.addFile(filename, buffer, outsize); } +bool extractPaddedStrings(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch) { + int outsize = size + 4; + uint8 *buffer = new uint8[outsize]; + const uint8 *src = data; + uint8 *dst = buffer + 4; + const uint8 *fin = src + size; + int entries = 0; + + while (src < fin) { + while (!*src && src < fin) + src++; + while (*src && src < fin) + *dst++ = *src++; + + *dst++ = '\0'; + entries++; + } + + WRITE_BE_UINT32(buffer, entries); + outsize = dst - buffer; + + return out.addFile(filename, buffer, outsize); +} + bool extractRaw16to8(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch) { int outsize = size >> 1; uint8 *buffer = new uint8[outsize]; diff --git a/tools/create_kyradat/create_kyradat.h b/tools/create_kyradat/create_kyradat.h index 79d7dd3001..62cfbc3374 100644 --- a/tools/create_kyradat/create_kyradat.h +++ b/tools/create_kyradat/create_kyradat.h @@ -257,6 +257,7 @@ enum kExtractType { k2TypeShpDataV1, k2TypeShpDataV2, k2TypeSoundList, + k2TypeSfxList, k3TypeRaw16to8, k3TypeShpData |