aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2009-09-16 20:52:59 +0000
committerJohannes Schickel2009-09-16 20:52:59 +0000
commit08dc453d10fe77e2e543d33026a614f5161dd7eb (patch)
tree57035beadb735022f72353fc008cf1d6e8601baa
parent361fd53ef3804773a17ef243dc7edc8a6a5f22ee (diff)
downloadscummvm-rg350-08dc453d10fe77e2e543d33026a614f5161dd7eb.tar.gz
scummvm-rg350-08dc453d10fe77e2e543d33026a614f5161dd7eb.tar.bz2
scummvm-rg350-08dc453d10fe77e2e543d33026a614f5161dd7eb.zip
Adapted create_kyradat to use an automatic offset search. (Hopefully no regressions).
svn-id: r44118
-rw-r--r--dists/engine-data/kyra.datbin279420 -> 279751 bytes
-rw-r--r--tools/create_kyradat/Makefile29
-rw-r--r--tools/create_kyradat/amiga.h59
-rw-r--r--tools/create_kyradat/create_kyradat.cpp735
-rw-r--r--tools/create_kyradat/create_kyradat.h66
-rw-r--r--tools/create_kyradat/eng.h212
-rw-r--r--tools/create_kyradat/esp.h39
-rw-r--r--tools/create_kyradat/fre.h79
-rw-r--r--tools/create_kyradat/ger.h80
-rw-r--r--tools/create_kyradat/hof_cd.h62
-rw-r--r--tools/create_kyradat/hof_demo.h33
-rw-r--r--tools/create_kyradat/hof_floppy.h91
-rw-r--r--tools/create_kyradat/hof_towns.h37
-rw-r--r--tools/create_kyradat/ita.h39
-rw-r--r--tools/create_kyradat/lol_cd.h95
-rw-r--r--tools/create_kyradat/lol_demo.h15
-rw-r--r--tools/create_kyradat/lol_floppy.h87
-rw-r--r--tools/create_kyradat/malcolm.h17
-rw-r--r--tools/create_kyradat/misc.h208
-rw-r--r--tools/create_kyradat/module.mk3
-rw-r--r--tools/create_kyradat/providers.h201
-rw-r--r--tools/create_kyradat/search.cpp195
-rw-r--r--tools/create_kyradat/search.h97
-rw-r--r--tools/create_kyradat/tables.h1261
-rw-r--r--tools/create_kyradat/towns.h122
25 files changed, 2514 insertions, 1348 deletions
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 29768052e4..97c3fb7af3 100644
--- a/dists/engine-data/kyra.dat
+++ b/dists/engine-data/kyra.dat
Binary files differ
diff --git a/tools/create_kyradat/Makefile b/tools/create_kyradat/Makefile
deleted file mode 100644
index b4deafe6d4..0000000000
--- a/tools/create_kyradat/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-CXX ?= g++
-CC ?= gcc
-
-LDFLAGS ?=
-CXXFLAGS ?= -O2
-CFLAGS ?= -O2
-CPPFLAGS ?=
-
-BIN=create_kyradat
-
-OBJS=create_kyradat.o pak.o md5.o util.o
-
-all: $(BIN)
-
-$(BIN): $(OBJS)
- $(CXX) $(OBJS) $(LDFLAGS) -o $(BIN)
-
-clean:
- rm -f $(BIN)
- rm -f $(OBJS)
-
-create_kyradat.o: amiga.h eng.h esp.h fre.h ger.h misc.h pak.h towns.h util.h md5.h
-pak.o: pak.h util.h
-
-%.o: %.cpp
- $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
-
-%.o: %.c
- $(CXX) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
diff --git a/tools/create_kyradat/amiga.h b/tools/create_kyradat/amiga.h
deleted file mode 100644
index 19e1a15139..0000000000
--- a/tools/create_kyradat/amiga.h
+++ /dev/null
@@ -1,59 +0,0 @@
-const ExtractEntry kyra1AmigaEng[] = {
- { kKallakWritingSeq, 0x00031D26, 0x0003251A },
- { kMalcolmTreeSeq, 0x0003251A, 0x0003272E },
- { kWestwoodLogoSeq, 0x0003272E, 0x0003277B },
- { kKyrandiaLogoSeq, 0x0003277B, 0x000327D7 },
- { kKallakMalcolmSeq, 0x000327D7, 0x00032A52 },
- { kForestSeq, 0x00032A52, 0x00032D30 },
- { kIntroCPSStrings, 0x0000CAC4, 0x0000CADA },
- { kIntroWSAStrings, 0x0000CADA, 0x0000CB60 },
- { kIntroCOLStrings, 0x0000CB60, 0x0000CB8E },
- { kIntroStrings, 0x0000CB8E, 0x0000D098 },
- { kRoomList, 0x00032F68, 0x00037E34 },
- { kRoomFilenames, 0x00012330, 0x00012638 },
- { kCharacterImageFilenames, 0x0000C814, 0x0000C904 },
- { kDefaultShapes, 0x00039230, 0x000396BA },
- { kItemNames, 0x0001A3B8, 0x0001A738 },
- { kTakenStrings, 0x0000FAE8, 0x0000FAF0 },
- { kPlacedStrings, 0x0000FAF0, 0x0000FAFA },
- { kDroppedStrings, 0x000101F2, 0x000101FC },
- { kNoDropStrings, 0x0000C98E, 0x0000C9D6 },
- { kAmuleteAnimSeq, 0x0002C980, 0x0002C9AA },
- { kPutDownString, 0x0000499E, 0x000049C4 },
- { kWaitAmuletString, 0x000049C4, 0x00004A02 },
- { kBlackJewelString, 0x00004A02, 0x00004A26 },
- { kHealingTipString, 0x00004A26, 0x00004A54 },
- { kPoisonGoneString, 0x00004ABE, 0x00004AEC },
- { kHealing1Shapes, 0x00039723, 0x000397BD },
- { kHealing2Shapes, 0x000397BD, 0x0003988F },
- { kThePoisonStrings, 0x00017768, 0x000177C0 },
- { kFluteStrings, 0x0000038A, 0x000003C6 },
- { kPoisonDeathShapes, 0x00039B83, 0x00039C0F },
- { kFluteShapes, 0x00039A87, 0x00039B83 },
- { kWinter1Shapes, 0x0003988F, 0x000398C0 },
- { kWinter2Shapes, 0x000398C0, 0x000399B5 },
- { kWinter3Shapes, 0x000399B5, 0x000399D1 },
- { kDrinkShapes, 0x000396BA, 0x00039723 },
- { kWispShapes, 0x000399D1, 0x00039A87 },
- { kMagicAnimShapes, 0x00039C0F, 0x00039C32 },
- { kBranStoneShapes, 0x00039C32, 0x00039CA0 },
- { kWispJewelStrings, 0x00004A54, 0x00004AAA },
- { kMagicJewelStrings, 0x00004AAA, 0x00004ABE },
- { kFlaskFullString, 0x00017B9E, 0x00017BBA },
- { kFullFlaskString, 0x00017B04, 0x00017B9E },
- { kOutroReunionSeq, 0x00030A4A, 0x00030F94 },
- { kOutroHomeString, 0x0000C6FA, 0x0000C6FF },
- { kVeryCleverString, 0x0000B322, 0x0000B354 },
- { kGUIStrings, 0x0003844D, 0x0003862C },
- { kNewGameString, 0x00031164, 0x0003117A },
- { kConfigStrings, 0x00015ACA, 0x00015AF8 },
- { kCreditsStrings, 0x0000777C, 0x00007C48 },
- { kAmigaIntroSFXTable, 0x00032D5C, 0x00032E9C },
- { kAmigaGameSFXTable, 0x0002C55E, 0x0002C91E },
- { -1, 0, 0 }
-};
-
-const Game kyra1AmigaGames[] = {
- { kKyra1, EN_ANY, kAmigaVersion, "b620564b6b7e0787b053ca9e35bd9f52", kyra1AmigaEng },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/create_kyradat.cpp b/tools/create_kyradat/create_kyradat.cpp
index 6e9b47ec27..ffa1066feb 100644
--- a/tools/create_kyradat/create_kyradat.cpp
+++ b/tools/create_kyradat/create_kyradat.cpp
@@ -28,6 +28,9 @@
#include "create_kyradat.h"
+#include "tables.h"
+#include "providers.h"
+
#include "md5.h"
enum {
@@ -38,30 +41,6 @@ enum {
// tables
#include "misc.h"
-#include "eng.h"
-#include "esp.h"
-#include "fre.h"
-#include "ger.h"
-#include "ita.h"
-#include "towns.h"
-#include "amiga.h"
-
-#include "hof_floppy.h"
-#include "hof_towns.h"
-#include "hof_cd.h"
-#include "hof_demo.h"
-
-#include "malcolm.h"
-
-#include "lol_cd.h"
-#include "lol_floppy.h"
-//#include "lol_pc98.h"
-#include "lol_demo.h"
-
-const Game kyra1FanTranslations[] = {
- { kKyra1, IT_ITA, kTalkieVersion, "d0f1752098236083d81b9497bd2b6989", kyra1FreCD },
- GAME_DUMMY_ENTRY
-};
bool extractRaw(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch);
bool extractStrings(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch);
@@ -430,59 +409,6 @@ void createLangFilename(char *dstFilename, const int gid, const int lang, const
}
}
-// entry checking
-
-int hashEntries(const int *entries) {
- int hash = 0;
- for (const int *i = entries; *i != -1; ++i) {
- hash += *i;
- }
- return hash;
-}
-
-bool hasEntry(const ExtractEntry *entries, const int id) {
- for (const ExtractEntry *i = entries; i->id != -1; ++i) {
- if (i->id == id)
- return true;
- }
- return false;
-}
-
-int hashEntries(const Game *game, const GameNeed *need, const PAKFile *file) {
- int hash = 0;
- char filename[128];
- for (const int *i = need->entries; *i != -1; ++i) {
- if (hasEntry(game->entries, *i)) {
- hash += *i;
- continue;
- }
-
- if (file) {
- filename[0] = 0;
-
- if (!getFilename(filename, game, *i))
- error("couldn't find filename for id %d", *i);
-
- PAKFile::cFileList *list = file->getFileList();
- if (list && list->findEntry(filename) != 0)
- hash += *i;
- }
- }
-
- return hash;
-}
-
-bool hasNeededEntries(const Game *game, const PAKFile *file) {
- for (const GameNeed *need = gameNeedTable; need->game != -1; ++need) {
- if (need->game == game->game && need->special == game->special) {
- if (hashEntries(need->entries) == hashEntries(game, need, file))
- return true;
- }
- }
-
- return false;
-}
-
// extraction
bool extractRaw(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch) {
@@ -494,13 +420,15 @@ bool extractRaw(PAKFile &out, const Game *g, const byte *data, const uint32 size
memcpy(buffer, data, 0x7EE5);
memcpy(buffer + 0x7EE5, data + 0x7EE7, 0x7FFF);
memcpy(buffer + 0xFEE4, data + 0xFEE8, 0x271E);
+
+ return out.addFile(filename, buffer, 0x12602);
} else {
buffer = new uint8[size];
assert(buffer);
memcpy(buffer, data, size);
- }
- return out.addFile(filename, buffer, size);
+ return out.addFile(filename, buffer, size);
+ }
}
bool extractStrings(PAKFile &out, const Game *g, const byte *data, const uint32 size, const char *filename, int fmtPatch) {
@@ -1258,7 +1186,12 @@ enum {
uint32 getFeatures(const Game *g) {
uint32 features = 0;
- if (g->special == kTalkieVersion || g->special == k2CDFile1E || g->special == k2CDFile1F || g->special == k2CDFile1G || g->special == k2CDFile1I || g->special == k2CDFile2E || g->special == k2CDFile2F || g->special == k2CDFile2G || g->special == kLolCD || g->game == kKyra3)
+ if (g->special == kTalkieVersion
+ || g->special == k2CDFile1E || g->special == k2CDFile1F || g->special == k2CDFile1G || g->special == k2CDFile1I
+ || g->special == k2CDFile2E || g->special == k2CDFile2F || g->special == k2CDFile2G
+ || g->special == k2CDDemoE || g->special == k2CDDemoF || g->special == k2CDDemoG
+ || g->special == kLolCD1 || g->special == kLolCD2
+ || g->game == kKyra3)
features |= GF_TALKIE;
else if (g->special == kDemoVersion || g->special == k2DemoVersion || g->special == k2DemoLol)
features |= GF_DEMO;
@@ -1397,39 +1330,23 @@ int main(int argc, char *argv[]) {
continue;
}
- if (!hasNeededEntries(g, &out)) {
- warning("file '%s' is missing offset entries and thus can't be processed", argv[i]);
- delete[] buffer;
- continue;
- }
-
if (!process(out, g, buffer, size))
- fprintf(stderr, "ERROR: couldn't process file '%s'", argv[i]);
+ fprintf(stderr, "ERROR: couldn't process file '%s'\n", argv[i]);
if (g->special == kFMTownsVersionE || g->special == k2TownsFile1E || g->special == k2TownsFile2E ||
- g->special == k2CDFile1E || g->special == k2CDFile2E) {
+ g->special == k2CDFile1E || g->special == k2CDFile2E || g->special == k2CDDemoE) {
// This is for executables which contain support for at least 2 languages
// The English and non language specific data has now been extracted.
// We switch to the second language and continue extraction.
- if (!hasNeededEntries(++g, &out)) {
- warning("file '%s' is missing offset entries and thus can't be processed", argv[i]);
- delete[] buffer;
- continue;
- }
- if (!process(out, g, buffer, size))
- fprintf(stderr, "ERROR: couldn't process file '%s'", argv[i]);
+ if (!process(out, ++g, buffer, size))
+ fprintf(stderr, "ERROR: couldn't process file '%s'\n", argv[i]);
}
- if (g->special == k2CDFile1F || g->special == k2CDFile2F) {
+ if (g->special == k2CDFile1F || g->special == k2CDFile2F || g->special == k2CDDemoF) {
// This is for executables which contain support for 3 languages.
// We switch to the third language and continue extraction.
- if (!hasNeededEntries(++g, &out)) {
- warning("file '%s' is missing offset entries and thus can't be processed", argv[i]);
- delete[] buffer;
- continue;
- }
- if (!process(out, g, buffer, size))
- fprintf(stderr, "ERROR: couldn't process file '%s'", argv[i]);
+ if (!process(out, ++g, buffer, size))
+ fprintf(stderr, "ERROR: couldn't process file '%s'\n", argv[i]);
}
delete[] buffer;
@@ -1451,6 +1368,426 @@ int main(int argc, char *argv[]) {
return 0;
}
+const int *getNeedList(const Game *g) {
+ for (const GameNeed *need = gameNeedTable; need->game != -1; ++need) {
+ if (need->game == g->game && need->special == g->special)
+ return need->entries;
+ }
+
+ return 0;
+}
+
+const char *getIdString(const int id) {
+ switch (id) {
+ case kForestSeq:
+ return "kForestSeq";
+ case kKallakWritingSeq:
+ return "kKallakWritingSeq";
+ case kKyrandiaLogoSeq:
+ return "kKyrandiaLogoSeq";
+ case kKallakMalcolmSeq:
+ return "kKallakMalcolmSeq";
+ case kMalcolmTreeSeq:
+ return "kMalcolmTreeSeq";
+ case kWestwoodLogoSeq:
+ return "kWestwoodLogoSeq";
+ case kDemo1Seq:
+ return "kDemo1Seq";
+ case kDemo2Seq:
+ return "kDemo2Seq";
+ case kDemo3Seq:
+ return "kDemo3Seq";
+ case kDemo4Seq:
+ return "kDemo4Seq";
+ case kAmuleteAnimSeq:
+ return "kAmuleteAnimSeq";
+ case kOutroReunionSeq:
+ return "kOutroReunionSeq";
+ case kIntroCPSStrings:
+ return "kIntroCPSStrings";
+ case kIntroCOLStrings:
+ return "kIntroCOLStrings";
+ case kIntroWSAStrings:
+ return "kIntroWSAStrings";
+ case kIntroStrings:
+ return "kIntroStrings";
+ case kOutroHomeString:
+ return "kOutroHomeString";
+ case kRoomFilenames:
+ return "kRoomFilenames";
+ case kRoomList:
+ return "kRoomList";
+ case kCharacterImageFilenames:
+ return "kCharacterImageFilenames";
+ case kAudioTracks:
+ return "kAudioTracks";
+ case kAudioTracksIntro:
+ return "kAudioTracksIntro";
+ case kItemNames:
+ return "kItemNames";
+ case kTakenStrings:
+ return "kTakenStrings";
+ case kPlacedStrings:
+ return "kPlacedStrings";
+ case kDroppedStrings:
+ return "kDroppedStrings";
+ case kNoDropStrings:
+ return "kNoDropStrings";
+ case kPutDownString:
+ return "kPutDownString";
+ case kWaitAmuletString:
+ return "kWaitAmuletString";
+ case kBlackJewelString:
+ return "kBlackJewelString";
+ case kPoisonGoneString:
+ return "kPoisonGoneString";
+ case kHealingTipString:
+ return "kHealingTipString";
+ case kWispJewelStrings:
+ return "kWispJewelStrings";
+ case kMagicJewelStrings:
+ return "kMagicJewelStrings";
+ case kThePoisonStrings:
+ return "kThePoisonStrings";
+ case kFluteStrings:
+ return "kFluteStrings";
+ case kFlaskFullString:
+ return "kFlaskFullString";
+ case kFullFlaskString:
+ return "kFullFlaskString";
+ case kVeryCleverString:
+ return "kVeryCleverString";
+ case kNewGameString:
+ return "kNewGameString";
+ case kDefaultShapes:
+ return "kDefaultShapes";
+ case kHealing1Shapes:
+ return "kHealing1Shapes";
+ case kHealing2Shapes:
+ return "kHealing2Shapes";
+ case kPoisonDeathShapes:
+ return "kPoisonDeathShapes";
+ case kFluteShapes:
+ return "kFluteShapes";
+ case kWinter1Shapes:
+ return "kWinter1Shapes";
+ case kWinter2Shapes:
+ return "kWinter2Shapes";
+ case kWinter3Shapes:
+ return "kWinter3Shapes";
+ case kDrinkShapes:
+ return "kDrinkShapes";
+ case kWispShapes:
+ return "kWispShapes";
+ case kMagicAnimShapes:
+ return "kMagicAnimShapes";
+ case kBranStoneShapes:
+ return "kBranStoneShapes";
+ case kPaletteList1:
+ return "kPaletteList1";
+ case kPaletteList2:
+ return "kPaletteList2";
+ case kPaletteList3:
+ return "kPaletteList3";
+ case kPaletteList4:
+ return "kPaletteList4";
+ case kPaletteList5:
+ return "kPaletteList5";
+ case kPaletteList6:
+ return "kPaletteList6";
+ case kPaletteList7:
+ return "kPaletteList7";
+ case kPaletteList8:
+ return "kPaletteList8";
+ case kPaletteList9:
+ return "kPaletteList9";
+ case kPaletteList10:
+ return "kPaletteList10";
+ case kPaletteList11:
+ return "kPaletteList11";
+ case kPaletteList12:
+ return "kPaletteList12";
+ case kPaletteList13:
+ return "kPaletteList13";
+ case kPaletteList14:
+ return "kPaletteList14";
+ case kPaletteList15:
+ return "kPaletteList15";
+ case kPaletteList16:
+ return "kPaletteList16";
+ case kPaletteList17:
+ return "kPaletteList17";
+ case kPaletteList18:
+ return "kPaletteList18";
+ case kPaletteList19:
+ return "kPaletteList19";
+ case kPaletteList20:
+ return "kPaletteList20";
+ case kPaletteList21:
+ return "kPaletteList21";
+ case kPaletteList22:
+ return "kPaletteList22";
+ case kPaletteList23:
+ return "kPaletteList23";
+ case kPaletteList24:
+ return "kPaletteList24";
+ case kPaletteList25:
+ return "kPaletteList25";
+ case kPaletteList26:
+ return "kPaletteList26";
+ case kPaletteList27:
+ return "kPaletteList27";
+ case kPaletteList28:
+ return "kPaletteList28";
+ case kPaletteList29:
+ return "kPaletteList29";
+ case kPaletteList30:
+ return "kPaletteList30";
+ case kPaletteList31:
+ return "kPaletteList31";
+ case kPaletteList32:
+ return "kPaletteList32";
+ case kPaletteList33:
+ return "kPaletteList33";
+ case kGUIStrings:
+ return "kGUIStrings";
+ case kConfigStrings:
+ return "kConfigStrings";
+ case kKyra1TownsSFXwdTable:
+ return "kKyra1TownsSFXwdTable";
+ case kKyra1TownsSFXbtTable:
+ return "kKyra1TownsSFXbtTable";
+ case kKyra1TownsCDATable:
+ return "kKyra1TownsCDATable";
+ case kCreditsStrings:
+ return "kCreditsStrings";
+ case kAmigaIntroSFXTable:
+ return "kAmigaIntroSFXTable";
+ case kAmigaGameSFXTable:
+ return "kAmigaGameSFXTable";
+ case k2SeqplayPakFiles:
+ return "k2SeqplayPakFiles";
+ case k2SeqplayStrings:
+ return "k2SeqplayStrings";
+ case k2SeqplaySfxFiles:
+ return "k2SeqplaySfxFiles";
+ case k2SeqplayTlkFiles:
+ return "k2SeqplayTlkFiles";
+ case k2SeqplaySeqData:
+ return "k2SeqplaySeqData";
+ case k2SeqplayCredits:
+ return "k2SeqplayCredits";
+ case k2SeqplayCreditsSpecial:
+ return "k2SeqplayCreditsSpecial";
+ case k2SeqplayIntroTracks:
+ return "k2SeqplayIntroTracks";
+ case k2SeqplayFinaleTracks:
+ return "k2SeqplayFinaleTracks";
+ case k2SeqplayIntroCDA:
+ return "k2SeqplayIntroCDA";
+ case k2SeqplayFinaleCDA:
+ return "k2SeqplayFinaleCDA";
+ case k2SeqplayShapeAnimData:
+ return "k2SeqplayShapeAnimData";
+ case k2IngamePakFiles:
+ return "k2IngamePakFiles";
+ case k2IngameSfxFiles:
+ return "k2IngameSfxFiles";
+ case k2IngameSfxFilesTns:
+ return "k2IngameSfxFilesTns";
+ case k2IngameSfxIndex:
+ return "k2IngameSfxIndex";
+ case k2IngameTracks:
+ return "k2IngameTracks";
+ case k2IngameCDA:
+ return "k2IngameCDA";
+ case k2IngameTalkObjIndex:
+ return "k2IngameTalkObjIndex";
+ case k2IngameTimJpStrings:
+ return "k2IngameTimJpStrings";
+ case k2IngameItemAnimData:
+ return "k2IngameItemAnimData";
+ case k2IngameTlkDemoStrings:
+ return "k2IngameTlkDemoStrings";
+ case k3MainMenuStrings:
+ return "k3MainMenuStrings";
+ case k3MusicFiles:
+ return "k3MusicFiles";
+ case k3ScoreTable:
+ return "k3ScoreTable";
+ case k3SfxFiles:
+ return "k3SfxFiles";
+ case k3SfxMap:
+ return "k3SfxMap";
+ case k3ItemAnimData:
+ return "k3ItemAnimData";
+ case k3ItemMagicTable:
+ return "k3ItemMagicTable";
+ case k3ItemStringMap:
+ return "k3ItemStringMap";
+ case kLolSeqplayIntroTracks:
+ return "kLolSeqplayIntroTracks";
+ case kLolIngamePakFiles:
+ return "kLolIngamePakFiles";
+ case kLolCharacterDefs:
+ return "kLolCharacterDefs";
+ case kLolIngameSfxFiles:
+ return "kLolIngameSfxFiles";
+ case kLolIngameSfxIndex:
+ return "kLolIngameSfxIndex";
+ case kLolMusicTrackMap:
+ return "kLolMusicTrackMap";
+ case kLolGMSfxIndex:
+ return "kLolGMSfxIndex";
+ case kLolMT32SfxIndex:
+ return "kLolMT32SfxIndex";
+ case kLolSpellProperties:
+ return "kLolSpellProperties";
+ case kLolGameShapeMap:
+ return "kLolGameShapeMap";
+ case kLolSceneItemOffs:
+ return "kLolSceneItemOffs";
+ case kLolCharInvIndex:
+ return "kLolCharInvIndex";
+ case kLolCharInvDefs:
+ return "kLolCharInvDefs";
+ case kLolCharDefsMan:
+ return "kLolCharDefsMan";
+ case kLolCharDefsWoman:
+ return "kLolCharDefsWoman";
+ case kLolCharDefsKieran:
+ return "kLolCharDefsKieran";
+ case kLolCharDefsAkshel:
+ return "kLolCharDefsAkshel";
+ case kLolExpRequirements:
+ return "kLolExpRequirements";
+ case kLolMonsterModifiers:
+ return "kLolMonsterModifiers";
+ case kLolMonsterLevelOffsets:
+ return "kLolMonsterLevelOffsets";
+ case kLolMonsterDirFlags:
+ return "kLolMonsterDirFlags";
+ case kLolMonsterScaleY:
+ return "kLolMonsterScaleY";
+ case kLolMonsterScaleX:
+ return "kLolMonsterScaleX";
+ case kLolMonsterScaleWH:
+ return "kLolMonsterScaleWH";
+ case kLolFlyingItemShp:
+ return "kLolFlyingItemShp";
+ case kLolInventoryDesc:
+ return "kLolInventoryDesc";
+ case kLolLevelShpList:
+ return "kLolLevelShpList";
+ case kLolLevelDatList:
+ return "kLolLevelDatList";
+ case kLolCompassDefs:
+ return "kLolCompassDefs";
+ case kLolItemPrices:
+ return "kLolItemPrices";
+ case kLolStashSetup:
+ return "kLolStashSetup";
+ case kLolDscUnk1:
+ return "kLolDscUnk1";
+ case kLolDscShapeIndex1:
+ return "kLolDscShapeIndex1";
+ case kLolDscShapeIndex2:
+ return "kLolDscShapeIndex2";
+ case kLolDscScaleWidthData:
+ return "kLolDscScaleWidthData";
+ case kLolDscScaleHeightData:
+ return "kLolDscScaleHeightData";
+ case kLolDscX:
+ return "kLolDscX";
+ case kLolDscY:
+ return "kLolDscY";
+ case kLolDscTileIndex:
+ return "kLolDscTileIndex";
+ case kLolDscUnk2:
+ return "kLolDscUnk2";
+ case kLolDscDoorShapeIndex:
+ return "kLolDscDoorShapeIndex";
+ case kLolDscDimData1:
+ return "kLolDscDimData1";
+ case kLolDscDimData2:
+ return "kLolDscDimData2";
+ case kLolDscBlockMap:
+ return "kLolDscBlockMap";
+ case kLolDscDimMap:
+ return "kLolDscDimMap";
+ case kLolDscShapeOvlIndex:
+ return "kLolDscShapeOvlIndex";
+ case kLolDscBlockIndex:
+ return "kLolDscBlockIndex";
+ case kLolDscDoor1:
+ return "kLolDscDoor1";
+ case kLolDscDoorScale:
+ return "kLolDscDoorScale";
+ case kLolDscDoor4:
+ return "kLolDscDoor4";
+ case kLolDscDoorX:
+ return "kLolDscDoorX";
+ case kLolDscDoorY:
+ return "kLolDscDoorY";
+ case kLolScrollXTop:
+ return "kLolScrollXTop";
+ case kLolScrollYTop:
+ return "kLolScrollYTop";
+ case kLolScrollXBottom:
+ return "kLolScrollXBottom";
+ case kLolScrollYBottom:
+ return "kLolScrollYBottom";
+ case kLolButtonDefs:
+ return "kLolButtonDefs";
+ case kLolButtonList1:
+ return "kLolButtonList1";
+ case kLolButtonList2:
+ return "kLolButtonList2";
+ case kLolButtonList3:
+ return "kLolButtonList3";
+ case kLolButtonList4:
+ return "kLolButtonList4";
+ case kLolButtonList5:
+ return "kLolButtonList5";
+ case kLolButtonList6:
+ return "kLolButtonList6";
+ case kLolButtonList7:
+ return "kLolButtonList7";
+ case kLolButtonList8:
+ return "kLolButtonList8";
+ case kLolLegendData:
+ return "kLolLegendData";
+ case kLolMapCursorOvl:
+ return "kLolMapCursorOvl";
+ case kLolMapStringId:
+ return "kLolMapStringId";
+ case kLolSpellbookAnim:
+ return "kLolSpellbookAnim";
+ case kLolSpellbookCoords:
+ return "kLolSpellbookCoords";
+ case kLolHealShapeFrames:
+ return "kLolHealShapeFrames";
+ case kLolLightningDefs:
+ return "kLolLightningDefs";
+ case kLolFireballCoords:
+ return "kLolFireballCoords";
+ case kLolHistory:
+ return "kLolHistory";
+ default:
+ return "Unknown";
+ }
+}
+
+struct DataIdEntry {
+ DataIdEntry() : data(), id(-1) {}
+ DataIdEntry(SearchData d, int i) : data(d), id(i) {}
+
+ SearchData data;
+ int id;
+};
+
+typedef std::list<DataIdEntry> DataIdList;
+
bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
char filename[128];
@@ -1459,23 +1796,164 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
return false;
}
- for (const ExtractEntry *i = g->entries; i->id != -1; ++i) {
- if (!getFilename(filename, g, i->id)) {
- fprintf(stderr, "ERROR: couldn't get filename for id %d\n", i->id);
+ const int *needList = getNeedList(g);
+ if (!needList) {
+ fprintf(stderr, "ERROR: No entry need list available\n");
+ return false;
+ }
+
+ DataIdList dataIdList;
+ Search search(data, size);
+
+ bool allDataPresentAlready = true;
+
+ for (const int *entry = needList; *entry != -1; ++entry) {
+ bool found = false;
+
+ // Try whether the data is present in the kyra.dat file already
+ filename[0] = 0;
+ if (!getFilename(filename, g, *entry))
+ error("couldn't find filename for id %d", *entry);
+
+ // Do not add the entry to the search list, when it's already present
+ // in kyra.dat, that will speed up the creation.
+ PAKFile::cFileList *list = out.getFileList();
+ if (list && list->findEntry(filename) != 0)
+ continue;
+
+ allDataPresentAlready = false;
+
+ for (const ExtractEntry *p = extractProviders; p->id != -1; ++p) {
+ if (p->id == *entry) {
+ // First check for special search ids
+ for (const ExtractEntrySearchData *d = p->providers; d->hint.size != 0; ++d) {
+ if (d->specialId == g->special) {
+ found = true;
+
+ search.addData(d->hint);
+ dataIdList.push_back(DataIdEntry(d->hint, *entry));
+ }
+ }
+
+ // When a special variant was found, we will break.
+ if (found)
+ break;
+
+ // Add non special variants
+ for (const ExtractEntrySearchData *d = p->providers; d->hint.size != 0; ++d) {
+ if (d->specialId == -1) {
+ found = true;
+
+ search.addData(d->hint);
+ dataIdList.push_back(DataIdEntry(d->hint, *entry));
+ }
+ }
+
+ break;
+ }
+ }
+
+ if (!found) {
+ fprintf(stderr, "ERROR: No provider for id %d/\"%s\"\n", *entry, getIdString(*entry));
+ return false;
+ }
+ }
+
+ if (allDataPresentAlready)
+ return true;
+
+ // Process the data search
+ Search::ResultList results;
+ search.search(results);
+
+ if (results.empty()) {
+ fprintf(stderr, "ERROR: Couldn't find any required data\n");
+ return false;
+ }
+
+ typedef std::map<int, Search::ResultData> IdMap;
+
+ IdMap ids;
+ for (const int *entry = needList; *entry != -1; ++entry) {
+ Search::ResultList idResults;
+
+ // Fill in all id entries found
+ for (Search::ResultList::const_iterator i = results.begin(); i != results.end(); ++i) {
+ for (DataIdList::const_iterator j = dataIdList.begin(); j != dataIdList.end(); ++j) {
+ if (j->id == *entry && i->data == j->data)
+ idResults.push_back(*i);
+ }
+ }
+
+ if (idResults.size() > 1)
+ warning("Multiple entries found for id %d/\"%s\"", *entry, getIdString(*entry));
+
+ Search::ResultData result;
+ result.data.size = 0;
+ result.offset = 0xFFFFFFFF;
+
+ // Reduce all entries to one single entry.
+ //
+ // We use the following rules for this (in this order):
+ // - Prefer the entry with the higest size
+ // - Prefer the entry, which starts at the smallest offest
+ //
+ // TODO: These rules might not be safe for all games, but hopefully
+ // they will work fine. If there are any problems it should be rather
+ // easy to identify them, since we print out a warning for multiple
+ // entries found.
+ for (Search::ResultList::iterator i = idResults.begin(); i != idResults.end(); ++i) {
+ if (result.data.size <= i->data.size) {
+ if (result.offset >= i->offset)
+ result = *i;
+ }
+ }
+
+ ids[*entry] = result;
+ }
+
+ // Free up some memory
+ results.clear();
+ dataIdList.clear();
+
+ // Compare against need list
+ for (const int *entry = needList; *entry != -1; ++entry) {
+ if (ids.find(*entry) != ids.end())
+ continue;
+
+ // Try whether the data is present in the kyra.dat file already
+ filename[0] = 0;
+ if (!getFilename(filename, g, *entry))
+ error("couldn't find filename for id %d", *entry);
+
+ PAKFile::cFileList *list = out.getFileList();
+ // If the data wasn't found already, we need to break the extraction here
+ if (!list || !list->findEntry(filename)) {
+ fprintf(stderr, "Couldn't find id %d/\"%s\" in executable file", *entry, getIdString(*entry));
return false;
}
+ }
- const ExtractFilename *fDesc = getFilenameDesc(i->id);
+ for (IdMap::const_iterator i = ids.begin(); i != ids.end(); ++i) {
+ const int id = i->first;
+
+ filename[0] = 0;
+ if (!getFilename(filename, g, id)) {
+ fprintf(stderr, "ERROR: couldn't get filename for id %d\n", id);
+ return false;
+ }
+
+ const ExtractFilename *fDesc = getFilenameDesc(id);
if (!fDesc) {
- fprintf(stderr, "ERROR: couldn't find file description for id %d\n", i->id);
+ fprintf(stderr, "ERROR: couldn't find file description for id %d\n", id);
return false;
}
const ExtractType *tDesc = findExtractType(fDesc->type);
if (!tDesc) {
- fprintf(stderr, "ERROR: couldn't find type description for id %d\n", i->id);
+ fprintf(stderr, "ERROR: couldn't find type description for id %d\n", id);
return false;
}
@@ -1486,30 +1964,30 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
int patch = 0;
if (g->special == kFMTownsVersionE || g->special == kFMTownsVersionJ) {
// FM Towns files that need addional patches
- if (i->id == kTakenStrings || i->id == kNoDropStrings || i->id == kPoisonGoneString ||
- i->id == kThePoisonStrings || i->id == kFluteStrings || i->id == kWispJewelStrings)
+ if (id == kTakenStrings || id == kNoDropStrings || id == kPoisonGoneString ||
+ id == kThePoisonStrings || id == kFluteStrings || id == kWispJewelStrings)
patch = 1;
- else if (i->id == kIntroStrings || i->id == kKyra1TownsSFXwdTable)
+ else if (id == kIntroStrings || id == kKyra1TownsSFXwdTable)
patch = 2;
}
if (g->special == k2TownsFile1E || g->special == k2TownsFile1J) {
- if (i->id == k2SeqplayStrings)
+ if (id == k2SeqplayStrings)
patch = 3;
}
if (g->special == k2FloppyFile2) {
- if (i->id == k2IngamePakFiles)
+ if (id == k2IngamePakFiles)
patch = 4;
}
if (g->special == k2FloppyFile2 || g->special == k2CDFile2E) {
- if (i->id == k2IngameSfxFiles)
+ if (id == k2IngameSfxFiles)
patch = 5;
}
- if (!tDesc->extract(out, g, data + i->startOff, i->endOff - i->startOff, filename, patch)) {
- fprintf(stderr, "ERROR: couldn't extract id %d\n", i->id);
+ if (!tDesc->extract(out, g, data + i->second.offset, i->second.data.size, filename, patch)) {
+ fprintf(stderr, "ERROR: couldn't extract id %d\n", id);
return false;
}
}
@@ -1525,27 +2003,10 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
// game data detection
const Game *gameDescs[] = {
- kyra1EngGames,
- kyra1EspGames,
- kyra1FreGames,
- kyra1GerGames,
- kyra1ItaGames,
- kyra1TownsGames,
- kyra1AmigaGames,
- kyra1FanTranslations,
-
- kyra2FloppyGames,
- kyra2TalkieGames,
- kyra2TownsGames,
- kyra2Demos,
-
+ kyra1Games,
+ kyra2Games,
kyra3Games,
-
- lolDemos,
- lolDosTalkieGames,
- lolDosFloppyGames,
- //lolPC98Games,
-
+ lolGames,
0
};
diff --git a/tools/create_kyradat/create_kyradat.h b/tools/create_kyradat/create_kyradat.h
index d3a05db727..c6e6547d51 100644
--- a/tools/create_kyradat/create_kyradat.h
+++ b/tools/create_kyradat/create_kyradat.h
@@ -25,6 +25,7 @@
#include "util.h"
#include "pak.h"
+#include "search.h"
struct Language {
int lang;
@@ -267,10 +268,14 @@ enum kExtractID {
kMaxResIDs
};
+struct ExtractEntrySearchData {
+ int specialId;
+ SearchData hint;
+};
+
struct ExtractEntry {
int id;
- uint32 startOff;
- uint32 endOff;
+ const ExtractEntrySearchData *providers;
};
struct ExtractFilename {
@@ -281,38 +286,42 @@ struct ExtractFilename {
enum kSpecial {
kTalkieVersion = 0,
- kDemoVersion = 1,
- kFMTownsVersionE = 2,
- kFMTownsVersionJ = 3,
- kAmigaVersion = 4,
-
- k2CDFile1E = 5,
- k2CDFile1F = 6,
- k2CDFile1G = 7,
- k2CDFile2E = 8,
- k2CDFile2F = 9,
- k2CDFile2G = 10,
+ kDemoVersion,
+ kFMTownsVersionE,
+ kFMTownsVersionJ,
+ kAmigaVersion,
+
+ k2CDFile1E,
+ k2CDFile1F,
+ k2CDFile1G,
+ k2CDFile2E,
+ k2CDFile2F,
+ k2CDFile2G,
+ k2CDDemoE,
+ k2CDDemoF,
+ k2CDDemoG,
// Italian fan translation
- k2CDFile1I = 11,
+ k2CDFile1I,
- k2TownsFile1E = 12,
- k2TownsFile1J = 13,
- k2TownsFile2E = 14,
- k2TownsFile2J = 15,
+ k2TownsFile1E,
+ k2TownsFile1J,
+ k2TownsFile2E,
+ k2TownsFile2J,
- k2FloppyFile1 = 16,
- k2FloppyFile2 = 17,
+ k2FloppyFile1,
+ k2FloppyFile2,
- k2DemoVersion = 18,
- k2DemoVersionTlkE = 19,
- k2DemoVersionTlkF = 20,
- k2DemoVersionTlkG = 21,
- k2DemoLol = 22,
+ k2DemoVersion,
+ k2DemoVersionTlkE,
+ k2DemoVersionTlkF,
+ k2DemoVersionTlkG,
+ k2DemoLol,
- kLolCD = 23,
+ kLolCD1,
+ kLolCD2,
// special case for Kyrandia 1 CD demo
- kDemoCDVersion = 24
+ kDemoCDVersion
};
struct SpecialExtension {
@@ -333,10 +342,9 @@ struct Game {
int special;
const char *md5;
- const ExtractEntry *entries;
};
-#define GAME_DUMMY_ENTRY { -1, -1, -1, 0, 0 }
+#define GAME_DUMMY_ENTRY { -1, -1, -1, 0 }
struct GameNeed {
int game;
diff --git a/tools/create_kyradat/eng.h b/tools/create_kyradat/eng.h
deleted file mode 100644
index f83979195a..0000000000
--- a/tools/create_kyradat/eng.h
+++ /dev/null
@@ -1,212 +0,0 @@
-const ExtractEntry kyra1EngFloppy[] = {
- { kKallakWritingSeq, 0x0002FE5E, 0x00030653 },
- { kMalcolmTreeSeq, 0x00030653, 0x00030869 },
- { kWestwoodLogoSeq, 0x00030869, 0x000308B4 },
- { kKyrandiaLogoSeq, 0x000308B4, 0x00030910 },
- { kKallakMalcolmSeq, 0x00030910, 0x00030B7B },
- { kForestSeq, 0x00030B7B, 0x00030D10 },
- { kIntroCPSStrings, 0x00030D10, 0x00030D24 },
- { kIntroWSAStrings, 0x00030D24, 0x00030DA4 },
- { kIntroCOLStrings, 0x00030DA4, 0x00030DCF },
- { kIntroStrings, 0x00030DCF, 0x000312C4 },
- { kRoomList, 0x00028020, 0x0002CDF6 },
- { kRoomFilenames, 0x0003386A, 0x00033B46 },
- { kCharacterImageFilenames, 0x0003268D, 0x00032771 },
- { kDefaultShapes, 0x0002CFB0, 0x0002D43A },
- { kItemNames, 0x00033F2E, 0x00034396 },
- { kTakenStrings, 0x00033822, 0x00033832 },
- { kPlacedStrings, 0x00033832, 0x0003383B },
- { kDroppedStrings, 0x00033860, 0x0003386A },
- { kNoDropStrings, 0x000337DA, 0x00033821 },
- { kAmuleteAnimSeq, 0x0002EA9C, 0x0002EAC6 },
- { kPaletteList1, 0x00025100, 0x00025115 },
- { kPaletteList2, 0x00025115, 0x00025148 },
- { kPaletteList3, 0x00025148, 0x0002517B },
- { kPaletteList4, 0x0002517B, 0x000251AE },
- { kPaletteList5, 0x000251AE, 0x000251E1 },
- { kPaletteList6, 0x000251E1, 0x00025214 },
- { kPaletteList7, 0x00025214, 0x0002524A },
- { kPaletteList8, 0x0002524A, 0x00025280 },
- { kPaletteList9, 0x00025280, 0x000252AD },
- { kPaletteList10, 0x000252AD, 0x000252DA },
- { kPaletteList11, 0x000252DA, 0x00025307 },
- { kPaletteList12, 0x00025307, 0x00025334 },
- { kPaletteList13, 0x00025334, 0x00025361 },
- { kPaletteList14, 0x00025361, 0x0002539D },
- { kPaletteList15, 0x0002539D, 0x000253CA },
- { kPaletteList16, 0x000253CA, 0x000253EB },
- { kPaletteList17, 0x000253EB, 0x0002540C },
- { kPaletteList18, 0x0002540C, 0x00025421 },
- { kPaletteList19, 0x00025421, 0x00025436 },
- { kPaletteList20, 0x00025436, 0x0002544B },
- { kPaletteList21, 0x0002544B, 0x00025460 },
- { kPaletteList22, 0x00025460, 0x00025475 },
- { kPaletteList23, 0x00025475, 0x0002548A },
- { kPaletteList24, 0x0002548A, 0x000254BA },
- { kPaletteList25, 0x000254BA, 0x000254EA },
- { kPaletteList26, 0x000254EA, 0x0002551A },
- { kPaletteList27, 0x0002551A, 0x0002554A },
- { kPaletteList28, 0x0002554A, 0x0002557A },
- { kPaletteList29, 0x0002557A, 0x000255AA },
- { kPaletteList30, 0x000255AA, 0x000255E6 },
- { kPaletteList31, 0x000255E6, 0x0002560D },
- { kPaletteList32, 0x0002560D, 0x00025634 },
- { kPaletteList33, 0x00025634, 0x00025670 },
- { kPutDownString, 0x0002EBCE, 0x0002EBF4 },
- { kWaitAmuletString, 0x0002EBF4, 0x0002EC31 },
- { kBlackJewelString, 0x0002EC31, 0x0002EC54 },
- { kHealingTipString, 0x0002EC54, 0x0002EC81 },
- { kPoisonGoneString, 0x0002ECE7, 0x0002ED14 },
- { kHealing1Shapes, 0x0002D4A3, 0x0002D53D },
- { kHealing2Shapes, 0x0002D53D, 0x0002D60F },
- { kThePoisonStrings, 0x0002F8DC, 0x0002F933 },
- { kFluteStrings, 0x00031C7B, 0x00031CB7 },
- { kPoisonDeathShapes, 0x0002D903, 0x0002D98F },
- { kFluteShapes, 0x0002D807, 0x0002D903 },
- { kWinter1Shapes, 0x0002D60F, 0x0002D640 },
- { kWinter2Shapes, 0x0002D640, 0x0002D735 },
- { kWinter3Shapes, 0x0002D735, 0x0002D751 },
- { kDrinkShapes, 0x0002D43A, 0x0002D4A3 },
- { kWispShapes, 0x0002D751, 0x0002D807 },
- { kMagicAnimShapes, 0x0002D98F, 0x0002D9B2 },
- { kBranStoneShapes, 0x0002D9B2, 0x0002DA20 },
- { kWispJewelStrings, 0x0002EC81, 0x0002ECD4 },
- { kMagicJewelStrings, 0x0002ECD4, 0x0002ECE7 },
- { kFlaskFullString, 0x0002F9EB, 0x0002FA07 },
- { kFullFlaskString, 0x0002F954, 0x0002F9EB },
- { kOutroReunionSeq, 0x000313C1, 0x00031908 },
- { kOutroHomeString, 0x000319C2, 0x000319C7 },
- { kVeryCleverString, 0x00031922, 0x00031954 },
- { kGUIStrings, 0x0002EE7A, 0x0002F02A },
- { kNewGameString, 0x00032466, 0x0003247B },
- { kConfigStrings, 0x0002f870, 0x0002f8af },
- { kAudioTracks, 0x00032771, 0x000327B2 },
- { kAudioTracksIntro, 0x0002FC88, 0x0002FC8E },
-
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra1EngCD[] = {
- { kKallakWritingSeq, 0x0003008F, 0x00030894 },
- { kMalcolmTreeSeq, 0x00030894, 0x00030AC4 },
- { kWestwoodLogoSeq, 0x00030AC4, 0x00030B0F },
- { kKyrandiaLogoSeq, 0x00030B0F, 0x00030BB5 },
- { kKallakMalcolmSeq, 0x00030BB5, 0x00030E6D },
- { kForestSeq, 0x00030E6D, 0x000310E0 },
- { kIntroCPSStrings, 0x000310E0, 0x000310F5 },
- { kIntroWSAStrings, 0x000310F5, 0x00031175 },
- { kIntroCOLStrings, 0x00031175, 0x000311A0 },
- { kIntroStrings, 0x000311A0, 0x00031696 },
- { kRoomList, 0x00028280, 0x0002D056 },
- { kRoomFilenames, 0x00033F2C, 0x00034208 },
- { kCharacterImageFilenames, 0x00032F22, 0x00033006 },
- { kDefaultShapes, 0x0002D210, 0x0002D69A },
- { kItemNames, 0x00034442, 0x000348AA },
- { kTakenStrings, 0x00033EE4, 0x00033EF4 },
- { kPlacedStrings, 0x00033EF4, 0x00033EFD },
- { kDroppedStrings, 0x00033F22, 0x00033F2C },
- { kNoDropStrings, 0x00033E9C, 0x00033EE3 },
- { kAmuleteAnimSeq, 0x0002EE1C, 0x0002EE46 },
- { kPaletteList1, 0x00025530, 0x00025545 },
- { kPaletteList2, 0x00025545, 0x00025578 },
- { kPaletteList3, 0x00025578, 0x000255AB },
- { kPaletteList4, 0x000255AB, 0x000255DE },
- { kPaletteList5, 0x000255DE, 0x00025611 },
- { kPaletteList6, 0x00025611, 0x00025644 },
- { kPaletteList7, 0x00025644, 0x0002567A },
- { kPaletteList8, 0x0002567A, 0x000256B0 },
- { kPaletteList9, 0x000256B0, 0x000256DD },
- { kPaletteList10, 0x000256DD, 0x0002570A },
- { kPaletteList11, 0x0002570A, 0x00025737 },
- { kPaletteList12, 0x00025737, 0x00025764 },
- { kPaletteList13, 0x00025764, 0x00025791 },
- { kPaletteList14, 0x00025791, 0x000257CD },
- { kPaletteList15, 0x000257CD, 0x000257FA },
- { kPaletteList16, 0x000257FA, 0x0002581B },
- { kPaletteList17, 0x0002581B, 0x0002583C },
- { kPaletteList18, 0x0002583C, 0x00025851 },
- { kPaletteList19, 0x00025851, 0x00025866 },
- { kPaletteList20, 0x00025866, 0x0002587B },
- { kPaletteList21, 0x0002587B, 0x00025890 },
- { kPaletteList22, 0x00025890, 0x000258A5 },
- { kPaletteList23, 0x000258A5, 0x000258BA },
- { kPaletteList24, 0x000258BA, 0x000258EA },
- { kPaletteList25, 0x000258EA, 0x0002591A },
- { kPaletteList26, 0x0002591A, 0x0002594A },
- { kPaletteList27, 0x0002594A, 0x0002597A },
- { kPaletteList28, 0x0002597A, 0x000259AA },
- { kPaletteList29, 0x000259AA, 0x000259DA },
- { kPaletteList30, 0x000259DA, 0x00025A16 },
- { kPaletteList31, 0x00025A16, 0x00025A3D },
- { kPaletteList32, 0x00025A3D, 0x00025A64 },
- { kPaletteList33, 0x00025A64, 0x00025AA0 },
- { kPutDownString, 0x0002EF50, 0x0002EF76 },
- { kWaitAmuletString, 0x0002EF76, 0x0002EFB3 },
- { kBlackJewelString, 0x0002EFB3, 0x0002EFD6 },
- { kHealingTipString, 0x0002EFD6, 0x0002F003 },
- { kPoisonGoneString, 0x0002F068, 0x0002F095 },
- { kHealing1Shapes, 0x0002D703, 0x0002D79D },
- { kHealing2Shapes, 0x0002D79D, 0x0002D86F },
- { kThePoisonStrings, 0x0002FCCA, 0x0002FD21 },
- { kFluteStrings, 0x00032510, 0x000325AC },
- { kPoisonDeathShapes, 0x0002DB63, 0x0002DBEF },
- { kFluteShapes, 0x0002DA67, 0x0002DB63 },
- { kWinter1Shapes, 0x0002D86F, 0x0002D8A0 },
- { kWinter2Shapes, 0x0002D8A0, 0x0002D995 },
- { kWinter3Shapes, 0x0002D995, 0x0002D9B1 },
- { kDrinkShapes, 0x0002D69A, 0x0002D703 },
- { kWispShapes, 0x0002D9B1, 0x0002DA67 },
- { kMagicAnimShapes, 0x0002DBEF, 0x0002DC12 },
- { kBranStoneShapes, 0x0002DC12, 0x0002DC80 },
- { kWispJewelStrings, 0x0002F003, 0x0002F055 },
- { kMagicJewelStrings, 0x0002F055, 0x0002F068 },
- { kFlaskFullString, 0x0002FDE1, 0x0002FDFD },
- { kFullFlaskString, 0x0002FD4A, 0x0002FDE1 },
- { kOutroReunionSeq, 0x00031791, 0x00031D76 },
- { kOutroHomeString, 0x00031E3A, 0x00031E3F },
- { kVeryCleverString, 0x00031D90, 0x00031DC2 },
- { kGUIStrings, 0x0002F1EE, 0x0002F3F7 },
- { kNewGameString, 0x00032CFB, 0x00032D10 },
- { kConfigStrings, 0x0002fc3d, 0x0002fc9e },
- { kAudioTracks, 0x00033006, 0x00033047 },
- { kAudioTracksIntro, 0x0002FE9A, 0x0002FEA6 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra1EngDemo[] = {
- { kWestwoodLogoSeq, 0x00015327, 0x0001536B },
- { kKyrandiaLogoSeq, 0x0001536B, 0x000153BF },
- { kIntroCPSStrings, 0x000154B1, 0x000154BD },
- { kIntroWSAStrings, 0x000154BD, 0x0001550A },
- { kIntroCOLStrings, 0x0001550A, 0x00015550 },
- { kIntroStrings, 0x00015550, 0x0001584A },
- { kDemo1Seq, 0x000153BF, 0x000153E5 },
- { kDemo2Seq, 0x000153E5, 0x00015408 },
- { kDemo3Seq, 0x00015408, 0x00015461 },
- { kDemo4Seq, 0x00015461, 0x00015481 },
- { kAudioTracksIntro, 0x00014E6E, 0x00014E74 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra1EngDemoCD[] = {
- { kKallakWritingSeq, 0x0002FF3F, 0x00030744 },
- { kMalcolmTreeSeq, 0x00030744, 0x00030974 },
- { kWestwoodLogoSeq, 0x00030974, 0x000309BF },
- { kKyrandiaLogoSeq, 0x000309BF, 0x00030A65 },
- { kKallakMalcolmSeq, 0x00030A65, 0x00030D1D },
- { kForestSeq, 0x00030D1D, 0x00030F90 },
- { kIntroCPSStrings, 0x00030F90, 0x00030FA5 },
- { kIntroWSAStrings, 0x00030FA5, 0x00031025 },
- { kIntroCOLStrings, 0x00031025, 0x00031050 },
- { kIntroStrings, 0x00031050, 0x00031546 },
- { kAudioTracksIntro, 0x0002FD4A, 0x0002FD5C },
- { -1, 0, 0 }
-};
-
-const Game kyra1EngGames[] = {
- { kKyra1, EN_ANY, -1, "76a4fc84e173cadb6369785787e1546e", kyra1EngFloppy },
- { kKyra1, EN_ANY, kTalkieVersion, "1ebc18f3e7fbb72474a55cb0fa089ed4", kyra1EngCD },
- { kKyra1, EN_ANY, kDemoVersion, "7b7504c8560ffc914d34c44c71b3094c", kyra1EngDemo },
- { kKyra1, EN_ANY, kDemoCDVersion, "226fdba99cb11ef1047131d9a50e6292", kyra1EngDemoCD },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/esp.h b/tools/create_kyradat/esp.h
deleted file mode 100644
index 79d8bd00e7..0000000000
--- a/tools/create_kyradat/esp.h
+++ /dev/null
@@ -1,39 +0,0 @@
-const ExtractEntry kyra1EspFloppy[] = {
- { kKallakWritingSeq, 0x00030462, 0x00030C57 },
- { kMalcolmTreeSeq, 0x00030C57, 0x00030E6D },
- { kWestwoodLogoSeq, 0x00030E6D, 0x00030EB8 },
- { kKyrandiaLogoSeq, 0x00030EB8, 0x00030F14 },
- { kKallakMalcolmSeq, 0x00030F14, 0x0003117F },
- { kForestSeq, 0x0003117F, 0x00031314 },
- { kIntroCPSStrings, 0x00031314, 0x00031328 },
- { kIntroWSAStrings, 0x00031328, 0x000313A8 },
- { kIntroCOLStrings, 0x000313A8, 0x000313D3 },
- { kIntroStrings, 0x000313D3, 0x000319A2 },
- { kItemNames, 0x0003467A, 0x00034BAA },
- { kTakenStrings, 0x00033F14, 0x00033F28 },
- { kPlacedStrings, 0x00033F28, 0x00033F35 },
- { kDroppedStrings, 0x00033F5E, 0x00033F66 },
- { kNoDropStrings, 0x00033ED6, 0x00033F13 },
- { kPutDownString, 0x0002F100, 0x0002F12D },
- { kWaitAmuletString, 0x0002F12D, 0x0002F16F },
- { kBlackJewelString, 0x0002F16F, 0x0002F194 },
- { kHealingTipString, 0x0002F194, 0x0002F1BC },
- { kPoisonGoneString, 0x0002F22C, 0x0002F25F },
- { kThePoisonStrings, 0x0002FEC6, 0x0002FF1F },
- { kFluteStrings, 0x00032361, 0x000323B3 },
- { kWispJewelStrings, 0x0002F1BC, 0x0002F21B },
- { kMagicJewelStrings, 0x0002F21B, 0x0002F22C },
- { kFlaskFullString, 0x0002FFDA, 0x0002FFF5 },
- { kFullFlaskString, 0x0002FF40, 0x0002FFDA },
- { kOutroHomeString, 0x000320A8, 0x000320AD },
- { kVeryCleverString, 0x00032004, 0x0003203A },
- { kGUIStrings, 0x0002f3d0, 0x0002f60a },
- { kNewGameString, 0x00032b62, 0x00032b7d },
- { kConfigStrings, 0x0002fe50, 0x0002fe9a },
- { -1, 0, 0 }
-};
-
-const Game kyra1EspGames[] = {
- { kKyra1, ES_ESP, -1, "9ff130d2558bcd674d4074849d93c362", kyra1EspFloppy },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/fre.h b/tools/create_kyradat/fre.h
deleted file mode 100644
index 970769f95a..0000000000
--- a/tools/create_kyradat/fre.h
+++ /dev/null
@@ -1,79 +0,0 @@
-const ExtractEntry kyra1FreFloppy[] = {
- { kKallakWritingSeq, 0x00030598, 0x00030D8D },
- { kMalcolmTreeSeq, 0x00030D8D, 0x00030FA3 },
- { kWestwoodLogoSeq, 0x00030FA3, 0x00030FEE },
- { kKyrandiaLogoSeq, 0x00030FEE, 0x0003104A },
- { kKallakMalcolmSeq, 0x0003104A, 0x000312B5 },
- { kForestSeq, 0x000312B5, 0x0003144A },
- { kIntroCPSStrings, 0x0003144A, 0x0003145E },
- { kIntroWSAStrings, 0x0003145E, 0x000314DE },
- { kIntroCOLStrings, 0x000314DE, 0x00031509 },
- { kIntroStrings, 0x00031509, 0x00031AF8 },
- { kItemNames, 0x00034862, 0x00034d68 },
- { kTakenStrings, 0x00034062, 0x00034080 },
- { kPlacedStrings, 0x00034080, 0x00034091 },
- { kDroppedStrings, 0x0003412f, 0x00034140 },
- { kNoDropStrings, 0x00034016, 0x00034062 },
- { kPutDownString, 0x0002f240, 0x0002f26e },
- { kWaitAmuletString, 0x0002f26e, 0x0002f2b7 },
- { kBlackJewelString, 0x0002f2b7, 0x0002f2e2 },
- { kHealingTipString, 0x0002f2e2, 0x0002f318 },
- { kPoisonGoneString, 0x0002f384, 0x0002f3dd },
- { kThePoisonStrings, 0x0003000e, 0x00030076 },
- { kFluteStrings, 0x000324af, 0x000324f4 },
- { kWispJewelStrings, 0x0002f318, 0x0002f373 },
- { kMagicJewelStrings, 0x0002f373, 0x0002f384 },
- { kFlaskFullString, 0x0003011c, 0x0003013a },
- { kFullFlaskString, 0x00030096, 0x0003011c },
- { kOutroHomeString, 0x000321f4, 0x000321fb },
- { kVeryCleverString, 0x0003215e, 0x00032185 },
- { kGUIStrings, 0x0002f51c, 0x0002f750 },
- { kNewGameString, 0x00032ca2, 0x00032cbf },
- { kConfigStrings, 0x0002ff96, 0x0002ffe1 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra1FreCD[] = {
- { kKallakWritingSeq, 0x0003023D, 0x00030A42 },
- { kMalcolmTreeSeq, 0x00030A42, 0x00030C72 },
- { kWestwoodLogoSeq, 0x00030C72, 0x00030CBD },
- { kKyrandiaLogoSeq, 0x00030CBD, 0x00030D63 },
- { kKallakMalcolmSeq, 0x00030D63, 0x0003101B },
- { kForestSeq, 0x0003101B, 0x0003128E },
- { kIntroCPSStrings, 0x0003128E, 0x000312A3 },
- { kIntroWSAStrings, 0x000312A3, 0x00031323 },
- { kIntroCOLStrings, 0x00031323, 0x0003134E },
- { kIntroStrings, 0x0003134E, 0x0003193E },
- { kRoomList, 0x000283A0, 0x0002D176 },
- { kRoomFilenames, 0x000342AA, 0x00034586 },
- { kCharacterImageFilenames, 0x00033206, 0x000332EA },
- { kDefaultShapes, 0x0002D330, 0x0002D823 },
- { kItemNames, 0x000347C0, 0x00034CC6 },
- { kTakenStrings, 0x0003427B, 0x0003428A },
- { kPlacedStrings, 0x000341EA, 0x000341FB },
- { kDroppedStrings, 0x00034299, 0x000342AA },
- { kNoDropStrings, 0x00034180, 0x000341CC },
- { kPutDownString, 0x0002F070, 0x0002F09E },
- { kWaitAmuletString, 0x0002F09E, 0x0002F0E7 },
- { kBlackJewelString, 0x0002F0E7, 0x0002F112 },
- { kHealingTipString, 0x0002F112, 0x0002F148 },
- { kPoisonGoneString, 0x0002F1A9, 0x0002F1D3 },
- { kThePoisonStrings, 0x0002FE76, 0x0002FEDE },
- { kFluteStrings, 0x000327EA, 0x0003282F },
- { kWispJewelStrings, 0x0002F148, 0x0002F198 },
- { kMagicJewelStrings, 0x0002F198, 0x0002F1A9 },
- { kFlaskFullString, 0x0002FF8C, 0x0002FFAA },
- { kFullFlaskString, 0x0002FF06, 0x0002FF8C },
- { kOutroHomeString, 0x000320D6, 0x000320DD },
- { kVeryCleverString, 0x00032038, 0x0003205F },
- { kGUIStrings, 0x0002f32c, 0x0002f589 },
- { kNewGameString, 0x00032FDF, 0x00032FFC },
- { kConfigStrings, 0x0002fdcf, 0x0002fe49 },
- { -1, 0, 0 }
-};
-
-const Game kyra1FreGames[] = {
- { kKyra1, FR_FRA, -1, "aa9d6d78d8b199deaf48efeca6d19af2", kyra1FreFloppy },
- { kKyra1, FR_FRA, kTalkieVersion, "307c5d4a554d9068ac3d326e350ae4a6", kyra1FreCD },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/ger.h b/tools/create_kyradat/ger.h
deleted file mode 100644
index 5ecfc7e644..0000000000
--- a/tools/create_kyradat/ger.h
+++ /dev/null
@@ -1,80 +0,0 @@
-const ExtractEntry kyra1GerFloppy[] = {
- { kKallakWritingSeq, 0x000304F2, 0x00030CE7 },
- { kMalcolmTreeSeq, 0x00030CE7, 0x00030EFD },
- { kWestwoodLogoSeq, 0x00030EFD, 0x00030F48 },
- { kKyrandiaLogoSeq, 0x00030F48, 0x00030FA4 },
- { kKallakMalcolmSeq, 0x00030FA4, 0x0003120F },
- { kForestSeq, 0x0003120F, 0x000313A4 },
- { kIntroCPSStrings, 0x000313A4, 0x000313B8 },
- { kIntroWSAStrings, 0x000313B8, 0x00031438 },
- { kIntroCOLStrings, 0x00031438, 0x00031463 },
- { kIntroStrings, 0x00031463, 0x00031A68 },
- { kRoomFilenames, 0x00034058, 0x00034334 },
- { kItemNames, 0x00034776, 0x00034C88 },
- { kTakenStrings, 0x00033FEE, 0x0003400A },
- { kPlacedStrings, 0x0003400A, 0x00034015 },
- { kDroppedStrings, 0x00034046, 0x00034057 },
- { kNoDropStrings, 0x00033FA2, 0x00033FEE },
- { kPutDownString, 0x0002F100, 0x0002F128 },
- { kWaitAmuletString, 0x0002F128, 0x0002F170 },
- { kBlackJewelString, 0x0002F170, 0x0002F1A1 },
- { kHealingTipString, 0x0002F1A1, 0x0002F1DD },
- { kPoisonGoneString, 0x0002F252, 0x0002F288 },
- { kThePoisonStrings, 0x0002FF00, 0x0002FF72 },
- { kFluteStrings, 0x0003243F, 0x0003247F },
- { kWispJewelStrings, 0x0002F1DD, 0x0002F23E },
- { kMagicJewelStrings, 0x0002F23E, 0x0002F252 },
- { kFlaskFullString, 0x00030041, 0x0003005F },
- { kFullFlaskString, 0x0002FF92, 0x00030041 },
- { kOutroHomeString, 0x0003217E, 0x0003218C },
- { kVeryCleverString, 0x000320CC, 0x0003210F },
- { kGUIStrings, 0x0002f3fa, 0x0002f630 },
- { kNewGameString, 0x00032c2e, 0x00032c4b },
- { kConfigStrings, 0x0002fe76, 0x0002fed4 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra1GerCD[] = {
- { kKallakWritingSeq, 0x0003018F, 0x00030994 },
- { kMalcolmTreeSeq, 0x00030994, 0x00030BC4 },
- { kWestwoodLogoSeq, 0x00030BC4, 0x00030C0F },
- { kKyrandiaLogoSeq, 0x00030C0F, 0x00030CB5 },
- { kKallakMalcolmSeq, 0x00030CB5, 0x00030F6D },
- { kForestSeq, 0x00030F6D, 0x000311E0 },
- { kIntroCPSStrings, 0x000311E0, 0x000311F5 },
- { kIntroWSAStrings, 0x000311F5, 0x00031275 },
- { kIntroCOLStrings, 0x00031275, 0x000312A0 },
- { kIntroStrings, 0x000312A0, 0x000318A6 },
- { kRoomList, 0x00028280, 0x0002D056 },
- { kRoomFilenames, 0x000341FA, 0x000344D6 },
- { kCharacterImageFilenames, 0x000331CA, 0x000332AE },
- { kDefaultShapes, 0x0002D210, 0x0002D703 },
- { kItemNames, 0x00034710, 0x00034C22 },
- { kTakenStrings, 0x00034190, 0x000341AC },
- { kPlacedStrings, 0x000341AC, 0x000341B7 },
- { kDroppedStrings, 0x000341E8, 0x000341F9 },
- { kNoDropStrings, 0x00034144, 0x00034190 },
- { kPutDownString, 0x0002EF50, 0x0002EF78 },
- { kWaitAmuletString, 0x0002EF78, 0x0002EFC0 },
- { kBlackJewelString, 0x0002EFC0, 0x0002EFF1 },
- { kHealingTipString, 0x0002EFF1, 0x0002F02D },
- { kPoisonGoneString, 0x0002F099, 0x0002F0CF },
- { kThePoisonStrings, 0x0002FD82, 0x0002FDF4 },
- { kFluteStrings, 0x000327B4, 0x000327F4 },
- { kWispJewelStrings, 0x0002F02D, 0x0002F085 },
- { kMagicJewelStrings, 0x0002F085, 0x0002F099 },
- { kFlaskFullString, 0x0002FECB, 0x0002FEE9 },
- { kFullFlaskString, 0x0002FE1C, 0x0002FECB },
- { kOutroHomeString, 0x0003205A, 0x00032068 },
- { kVeryCleverString, 0x00031FA0, 0x00031FE3 },
- { kGUIStrings, 0x0002F22C, 0x0002F48D },
- { kNewGameString, 0x00032FA3, 0x00032FC0 },
- { kConfigStrings, 0x0002fcd3, 0x0002fd55 },
- { -1, 0, 0 }
-};
-
-const Game kyra1GerGames[] = {
- { kKyra1, DE_DEU, -1, "9442d6f7db6a41f3dd4aa4de5d36e107", kyra1GerFloppy },
- { kKyra1, DE_DEU, kTalkieVersion, "c65d381184f98ac26d9efd2d45baef51", kyra1GerCD },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/hof_cd.h b/tools/create_kyradat/hof_cd.h
deleted file mode 100644
index 1530a04e9f..0000000000
--- a/tools/create_kyradat/hof_cd.h
+++ /dev/null
@@ -1,62 +0,0 @@
-const ExtractEntry kyra2File1CDE[] = {
- { k2SeqplayPakFiles, 0x00029FA4, 0x00029FEA },
- { k2SeqplayCredits, 0x00027920, 0x00028408 },
- { k2SeqplayCreditsSpecial, 0x00029E01, 0x00029E1B },
- { k2SeqplayStrings, 0x0002C566, 0x0002CE7C },
- { k2SeqplaySfxFiles, 0x0002E284, 0x0002E4B8 },
- { k2SeqplayTlkFiles, 0x0002A2AC, 0x0002A349 },
- { k2SeqplayIntroTracks, 0x0002E4C5, 0x0002E4CD },
- { k2SeqplayFinaleTracks, 0x0002E4DA, 0x0002E4E3 },
- { k2SeqplaySeqData, 0x0002BB4C, 0x0002C20A },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File1CDF[] = {
- { k2SeqplayStrings, 0x0002CE7C, 0x0002D845 },
- { k2SeqplayTlkFiles, 0x0002A349, 0x0002A3E6 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File1CDG[] = {
- { k2SeqplayStrings, 0x0002D845, 0x0002E284 },
- { k2SeqplayTlkFiles, 0x0002A3E6, 0x0002A483 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File1CDI[] = {
- { k2SeqplayStrings, 0x0002C566, 0x0002CE7C },
- { k2SeqplayTlkFiles, 0x0002A2AC, 0x0002A349 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2CDE[] = {
- { k2IngameSfxFiles, 0x0002CB30, 0x0002D221 },
- { k2IngameSfxIndex, 0x000294F0, 0x00029848 },
- { k2IngameTracks, 0x0002F2FE, 0x0002F37E },
- { k2IngameTalkObjIndex, 0x0002BAC2, 0x0002BB46 },
- { k2IngameItemAnimData, 0x0002FE68, 0x000301B0 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2CDF[] = {
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2CDG[] = {
- { -1, 0, 0 }
-};
-
-const Game kyra2TalkieGames[] = {
- { kKyra2, EN_ANY, k2CDFile1E, "85bbc1cc6c4cef6ad31fc6ee79518efb", kyra2File1CDE},
- { kKyra2, FR_FRA, k2CDFile1F, "85bbc1cc6c4cef6ad31fc6ee79518efb", kyra2File1CDF},
- { kKyra2, DE_DEU, k2CDFile1G, "85bbc1cc6c4cef6ad31fc6ee79518efb", kyra2File1CDG},
- { kKyra2, EN_ANY, k2CDFile2E, "e20d0d2e500f01e399ec588247a7e213", kyra2File2CDE},
- { kKyra2, FR_FRA, k2CDFile2F, "e20d0d2e500f01e399ec588247a7e213", kyra2File2CDF},
- { kKyra2, DE_DEU, k2CDFile2G, "e20d0d2e500f01e399ec588247a7e213", kyra2File2CDG},
-
- // Italian Fan Translation (using same offsets as English)
- { kKyra2, IT_ITA, k2CDFile1I, "130795aa8f2333250c895dae9028b9bb", kyra2File1CDI},
-
- GAME_DUMMY_ENTRY
-};
-
diff --git a/tools/create_kyradat/hof_demo.h b/tools/create_kyradat/hof_demo.h
deleted file mode 100644
index b239f63780..0000000000
--- a/tools/create_kyradat/hof_demo.h
+++ /dev/null
@@ -1,33 +0,0 @@
-const ExtractEntry kyra2Demo[] = {
- { k2SeqplayPakFiles, 0x0001C130, 0x0001C144 },
- { k2SeqplaySfxFiles, 0x0001CDDE, 0x0001CEBC },
- { k2SeqplaySeqData, 0x0001C920, 0x0001CB9C },
- { k2SeqplayIntroTracks, 0x0001CEBC, 0x0001CECC },
- { k2SeqplayShapeAnimData, 0x0001CC14, 0x0001CCCC },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2DemoCDE[] = {
- { k2IngameTlkDemoStrings, 0x0002F367, 0x0002F432 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2DemoCDF[] = {
- { k2IngameTlkDemoStrings, 0x0002F432, 0x0002F4F0 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2DemoCDG[] = {
- { k2IngameTlkDemoStrings, 0x0002F4F0, 0x0002F5CC },
- { -1, 0, 0 }
-};
-
-const Game kyra2Demos[] = {
- { kKyra2, EN_ANY, k2DemoVersion, "a620a37579dd44ab0403482285e3897f", kyra2Demo},
- { kKyra2, EN_ANY, k2CDFile2E, "fa54d8abfe05f9186c05f7de7eaf1480", kyra2DemoCDE},
- { kKyra2, FR_FRA, k2CDFile2F, "fa54d8abfe05f9186c05f7de7eaf1480", kyra2DemoCDF},
- { kKyra2, DE_DEU, k2CDFile2G, "fa54d8abfe05f9186c05f7de7eaf1480", kyra2DemoCDG},
- GAME_DUMMY_ENTRY
-};
-
-
diff --git a/tools/create_kyradat/hof_floppy.h b/tools/create_kyradat/hof_floppy.h
deleted file mode 100644
index e61f43fb2c..0000000000
--- a/tools/create_kyradat/hof_floppy.h
+++ /dev/null
@@ -1,91 +0,0 @@
-const ExtractEntry kyra2File1E[] = {
- { k2SeqplayPakFiles, 0x0002132A, 0x0002134C },
- { k2SeqplayStrings, 0x00022DF2, 0x000236BA },
- { k2SeqplaySfxFiles, 0x000236BA, 0x0002382D },
- { k2SeqplayIntroTracks, 0x0002383A, 0x0002384A },
- { k2SeqplayFinaleTracks, 0x00023857, 0x00023869 },
- { k2SeqplaySeqData, 0x000223E0, 0x00022AD4 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File1F[] = {
- { k2SeqplayPakFiles, 0x00020F9D, 0x00020FBF },
- { k2SeqplayStrings, 0x00022A9C, 0x00023431 },
- { k2SeqplaySfxFiles, 0x00023431, 0x000235A4 },
- { k2SeqplayIntroTracks, 0x000235B1, 0x000235C1 },
- { k2SeqplayFinaleTracks, 0x000235CE, 0x000235E0 },
- { k2SeqplaySeqData, 0x000223E0, 0x0002277E },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File1G[] = {
- { k2SeqplayPakFiles, 0x000211F9, 0x0002121B },
- { k2SeqplayStrings, 0x00022D30, 0x0002371C },
- { k2SeqplaySfxFiles, 0x0002371C, 0x0002388F },
- { k2SeqplayIntroTracks, 0x0002389C, 0x000238AC },
- { k2SeqplayFinaleTracks, 0x000238B9, 0x000238CB },
- { k2SeqplaySeqData, 0x0002231E, 0x00022A12 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File1I[] = {
- { k2SeqplayPakFiles, 0x00021189, 0x000211B7 },
- { k2SeqplayStrings, 0x00022C62, 0x0002352A },
- { k2SeqplaySfxFiles, 0x0002352A, 0x0002369D },
- { k2SeqplayIntroTracks, 0x000236AA, 0x000236AA },
- { k2SeqplayFinaleTracks, 0x000236C7, 0x000236D9 },
- { k2SeqplaySeqData, 0x00022250, 0x00022944 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2E[] = {
- { k2IngamePakFiles, 0x0035E4E, 0x00362ED },
- { k2IngameSfxFiles, 0x00034700, 0x00034DF1 },
- { k2IngameSfxIndex, 0x0002A710, 0x0002AA68 },
- { k2IngameTracks, 0x0003B2F2, 0x0003B370 },
- { k2IngameTalkObjIndex, 0x00033EB2, 0x00033F2A },
- { k2IngameItemAnimData, 0x0003B94A, 0x0003BC92 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2F[] = {
- { k2IngamePakFiles, 0x0003AA9C, 0x0003AB1A },
- { k2IngameSfxFiles, 0x00033E24, 0x00034515 },
- { k2IngameSfxIndex, 0x000288B0, 0x00028C08 },
- { k2IngameTracks, 0x0003B2F2, 0x0003B370 },
- { k2IngameTalkObjIndex, 0x0003328E, 0x00033306 },
- { k2IngameItemAnimData, 0x0003AFF6, 0x0003B33E },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2G[] = {
- { k2IngamePakFiles, 0x0035626, 0x0035AC5 },
- { k2IngameSfxFiles, 0x00033ED8, 0x000345C9 },
- { k2IngameSfxIndex, 0x000288E0, 0x00028C38 },
- { k2IngameTracks, 0x0003AA8C, 0x0003AB0A },
- { k2IngameTalkObjIndex, 0x000332BE, 0x00033336 },
- { k2IngameItemAnimData, 0x0003B00A, 0x0003B352 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2I[] = {
- { k2IngamePakFiles, 0x00036816, 0x00036CB5 },
- { k2IngameSfxFiles, 0x000350C6, 0x000357B7 },
- { k2IngameSfxIndex, 0x0002AB80, 0x0002AED8 },
- { k2IngameTracks, 0x0003BE78, 0x0003BEF6 },
- { k2IngameTalkObjIndex, 0x00034872, 0x000348EA },
- { k2IngameItemAnimData, 0x0003C4E2, 0x0003C82A },
- { -1, 0, 0 }
-};
-
-const Game kyra2FloppyGames[] = {
- { kKyra2, EN_ANY, k2FloppyFile1, "9b0f5e57b5a2ed88b5b989cbb402b6c7", kyra2File1E},
- { kKyra2, FR_FRA, k2FloppyFile1, "df31cc9e37e1cf68df2fdc75ddf2d87b", kyra2File1F},
- { kKyra2, DE_DEU, k2FloppyFile1, "0ca4f9a1438264a4c63c3218e064ed3b", kyra2File1G},
- { kKyra2, IT_ITA, k2FloppyFile1, "178d3ab913f61bfba21d2fb196405e8c", kyra2File1I},
- { kKyra2, EN_ANY, k2FloppyFile2, "7c3eadbe5122722cf2e5e1611e19dfb9", kyra2File2E},
- { kKyra2, FR_FRA, k2FloppyFile2, "fc2c6782778e6c6d5a553d1cb73c98ad", kyra2File2F},
- { kKyra2, DE_DEU, k2FloppyFile2, "0d9b0eb7b0ad889ec942d74d80dde1bf", kyra2File2G},
- { kKyra2, IT_ITA, k2FloppyFile2, "3a61ed6b7c00ddae383a0361799e2ba6", kyra2File2I},
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/hof_towns.h b/tools/create_kyradat/hof_towns.h
deleted file mode 100644
index f2dd82d431..0000000000
--- a/tools/create_kyradat/hof_towns.h
+++ /dev/null
@@ -1,37 +0,0 @@
-const ExtractEntry kyra2File1FMTownsE[] = {
- { k2SeqplayPakFiles, 0x00000540, 0x00000573 },
- { k2SeqplayStrings, 0x00001614, 0x00001FA4 },
- { k2SeqplaySfxFiles, 0x0000284C, 0x000029EF },
- { k2SeqplaySeqData, 0x000050D8, 0x00005794 },
- { k2SeqplayIntroCDA, 0x00007FF8, 0x00008010 },
- { k2SeqplayFinaleCDA, 0x00008010, 0x00008018 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File1FMTownsJ[] = {
- { k2SeqplayStrings, 0x00001FA4, 0x0000284C },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2FMTownsE[] = {
- { k2IngamePakFiles, 0x00000540, 0x0000065C },
- { k2IngameSfxFilesTns, 0x00003E3C, 0x000047A3 },
- { k2IngameSfxIndex, 0x00013980, 0x00013CD8 },
- { k2IngameCDA, 0x0001808C, 0x000181BC },
- { k2IngameTalkObjIndex, 0x000199B6, 0x00019A30 },
- { k2IngameTimJpStrings, 0x0000677C, 0x000067A9 },
- { k2IngameItemAnimData, 0x00012F28, 0x00013270 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra2File2FMTownsJ[] = {
- { -1, 0, 0 }
-};
-
-const Game kyra2TownsGames[] = {
- { kKyra2, EN_ANY, k2TownsFile1E, "74f50d79c919cc8e7196c24942ce43d7", kyra2File1FMTownsE},
- { kKyra2, JA_JPN, k2TownsFile1J, "74f50d79c919cc8e7196c24942ce43d7", kyra2File1FMTownsJ},
- { kKyra2, EN_ANY, k2TownsFile2E, "a9a7fd4f05d00090e9e8bda073e6d431", kyra2File2FMTownsE},
- { kKyra2, JA_JPN, k2TownsFile2J, "a9a7fd4f05d00090e9e8bda073e6d431", kyra2File2FMTownsJ},
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/ita.h b/tools/create_kyradat/ita.h
deleted file mode 100644
index 6099f8f07d..0000000000
--- a/tools/create_kyradat/ita.h
+++ /dev/null
@@ -1,39 +0,0 @@
-const ExtractEntry kyra1ItaFloppy[] = {
- { kKallakWritingSeq, 0x000304fa, 0x00030cef },
- { kMalcolmTreeSeq, 0x00030cef, 0x00030F05 },
- { kWestwoodLogoSeq, 0x00030F05, 0x00030F50 },
- { kKyrandiaLogoSeq, 0x00030F50, 0x00030FAC },
- { kKallakMalcolmSeq, 0x00030FAC, 0x00031217 },
- { kForestSeq, 0x00031217, 0x000313ac },
- { kIntroCPSStrings, 0x000313AC, 0x000313C0 },
- { kIntroWSAStrings, 0x000313C0, 0x00031440 },
- { kIntroCOLStrings, 0x00031440, 0x0003146B },
- { kIntroStrings, 0x0003146B, 0x000319E7 },
- { kItemNames, 0x000346DC, 0x00034C6D },
- { kTakenStrings, 0x00033F60, 0x00033F74 },
- { kPlacedStrings, 0x00033F74, 0x00033F81 },
- { kDroppedStrings, 0x00033FAA, 0x00033FB5 },
- { kNoDropStrings, 0x00033F1A, 0x00033F5F },
- { kPutDownString, 0x0002f120, 0x0002f154 },
- { kWaitAmuletString, 0x0002f154, 0x0002f19e },
- { kBlackJewelString, 0x0002f19e, 0x0002f1c0 },
- { kHealingTipString, 0x0002f1c0, 0x0002f1ff },
- { kPoisonGoneString, 0x0002f290, 0x0002f2c4 },
- { kThePoisonStrings, 0x0002ff20, 0x0002ff83 },
- { kFluteStrings, 0x000323ab, 0x000323f7 },
- { kWispJewelStrings, 0x0002f1ff, 0x0002f273 },
- { kMagicJewelStrings, 0x0002f273, 0x0002f290 },
- { kFlaskFullString, 0x00030059, 0x0003007a },
- { kFullFlaskString, 0x0002ffa4, 0x00030059 },
- { kOutroHomeString, 0x000320f2, 0x000320f7 },
- { kVeryCleverString, 0x0003204c, 0x00032084 },
- { kGUIStrings, 0x0002f434, 0x0002f659 },
- { kNewGameString, 0x00032ba6, 0x00032bc2 },
- { kConfigStrings, 0x0002fe9f, 0x0002fef3 },
- { -1, 0, 0 }
-};
-
-const Game kyra1ItaGames[] = {
- { kKyra1, IT_ITA, -1, "5d7550306b369a3492f9f3402702477c", kyra1ItaFloppy },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/lol_cd.h b/tools/create_kyradat/lol_cd.h
deleted file mode 100644
index b719c244a6..0000000000
--- a/tools/create_kyradat/lol_cd.h
+++ /dev/null
@@ -1,95 +0,0 @@
-const ExtractEntry lolCDFile1E[] = {
- { kLolHistory, 0x1FAA0, 0x1FC71 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry lolCDFile2[] = {
- { kLolCharacterDefs, 0x00029D60, 0x0002A1F2 },
- { kLolIngameSfxFiles, 0x0002A330, 0x0002AC22 },
- { kLolIngameSfxIndex, 0x0002AC22, 0x0002B00A },
- { kLolMusicTrackMap, 0x0002A240, 0x0002A330 },
- { kLolGMSfxIndex, 0x0002B010, 0x0002B10A },
- { kLolMT32SfxIndex, 0x0002B110, 0x0002B20A },
- //{ kLolADLSfxIndex, 0x0002B210, 0x0002B30A },
- { kLolSpellProperties, 0x0002B5E0, 0x0002B6F8 },
- { kLolGameShapeMap, 0x0002B35C, 0x0002B470 },
- { kLolSceneItemOffs, 0x0003200F, 0x00032017 },
- { kLolCharInvIndex, 0x0002B470, 0x0002B47A },
- { kLolCharInvDefs, 0x0002B47A, 0x0002B4D2 },
- { kLolCharDefsMan, 0x0002B4D2, 0x0002B4E4 },
- { kLolCharDefsWoman, 0x0002B4E4, 0x0002B4F6 },
- { kLolCharDefsKieran, 0x0002B4F6, 0x0002B508 },
- //{ kLolCharDefsUnk, 0x0002B508, 0x0002B51A },
- { kLolCharDefsAkshel, 0x0002B51A, 0x0002B52C },
- { kLolExpRequirements, 0x0002B830, 0x0002B85C },
- { kLolMonsterModifiers, 0x0002B85C, 0x0002B874 },
- { kLolMonsterLevelOffsets, 0x00031FDF, 0x00031FFF },
- { kLolMonsterDirFlags, 0x00031FFF, 0x0003200F },
- { kLolMonsterScaleY, 0x00031BC0, 0x00031BDE },
- { kLolMonsterScaleX, 0x00031BDE, 0x00031BFE },
- { kLolMonsterScaleWH, 0x000285C0, 0x00028642 },
- { kLolFlyingItemShp, 0x00028642, 0x000286C4 },
- { kLolInventoryDesc, 0x00032706, 0x0003271C },
-
- { kLolLevelShpList, 0x00032826, 0x000328A5 },
- { kLolLevelDatList, 0x000328A5, 0x000329A4 },
- { kLolCompassDefs, 0x000286C4, 0x000287C4 },
- { kLolItemPrices, 0x0002F8C0, 0x0002F91C },
- { kLolStashSetup, 0x000324A5, 0x000324B1 },
-
- { kLolDscUnk1, 0x00032017, 0x0003203B },
- { kLolDscShapeIndex1, 0x0003203B, 0x0003205F },
- { kLolDscShapeIndex2, 0x0003205F, 0x00032069 },
- { kLolDscScaleWidthData, 0x00032069, 0x000320B1 },
- { kLolDscScaleHeightData, 0x000320B1, 0x000320F9 },
- { kLolDscX, 0x000320F9, 0x00032141 },
- { kLolDscY, 0x00032141, 0x00032165 },
- { kLolDscTileIndex, 0x00032165, 0x00032177 },
- { kLolDscUnk2, 0x00032177, 0x0003218E },
- { kLolDscDoorShapeIndex, 0x0003218E, 0x000321A5 },
- { kLolDscDimData1, 0x00031C03, 0x00031D47 },
- { kLolDscDimData2, 0x00031D47, 0x00031FD0 },
- { kLolDscBlockMap, 0x00031B64, 0x00031B70 },
- { kLolDscDimMap, 0x00031B70, 0x00031B82 },
- { kLolDscDoorScale, 0x00031B82, 0x00031B92 },
- { kLolDscShapeOvlIndex, 0x00031B92, 0x00031BBA },
- { kLolDscDoor4, 0x00031BBA, 0x00031BC2 },
- { kLolDscBlockIndex, 0x00033B53, 0x00033B9B },
- { kLolDscDoor1, 0x0002B550, 0x0002B5D0 },
- { kLolDscDoorX, 0x00027CC0, 0x00028140 },
- { kLolDscDoorY, 0x00028140, 0x000285C0 },
-
- { kLolScrollXTop, 0x00033D40, 0x00033D4A },
- { kLolScrollYTop, 0x00033D4A, 0x00033D54 },
- { kLolScrollXBottom, 0x00033D54, 0x00033D5E },
- { kLolScrollYBottom, 0x00033D5E, 0x00033D68 },
-
- { kLolButtonDefs, 0x00028E80, 0x000296AA },
- { kLolButtonList1, 0x000296B0, 0x00029700 },
- { kLolButtonList2, 0x00029700, 0x0002971E },
- { kLolButtonList3, 0x00029720, 0x00029724 },
- { kLolButtonList4, 0x00029730, 0x0002974E },
- { kLolButtonList5, 0x00029750, 0x00029770 },
- { kLolButtonList6, 0x00029770, 0x0002978C },
- { kLolButtonList7, 0x00029790, 0x00029796 },
- { kLolButtonList8, 0x000297A0, 0x000297A4 },
-
- { kLolLegendData, 0x000321F0, 0x0003222C },
- { kLolMapCursorOvl, 0x0003222C, 0x00032245 },
- { kLolMapStringId, 0x000287D0, 0x0002880C },
- //{ kLolMapPal, 0x0001D9C0, 0x0001DBC0 },
-
- { kLolSpellbookAnim, 0x00032D94, 0x00032DCC },
- { kLolSpellbookCoords, 0x00032DCC, 0x00032DE4 },
- { kLolHealShapeFrames, 0x000297D0, 0x00029820 },
- { kLolLightningDefs, 0x00032740, 0x00032754 },
- { kLolFireballCoords, 0x0001D9C0, 0x0001DBC0 },
-
- { -1, 0, 0 }
-};
-
-const Game lolDosTalkieGames[] = {
- { kLol, EN_ANY, kLolCD, "9d1778314de80598c0b0d032e2a1a1cf", lolCDFile1E },
- { kLol, EN_ANY, kLolCD, "263998ec600afca1cc7b935c473df670", lolCDFile2 },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/lol_demo.h b/tools/create_kyradat/lol_demo.h
deleted file mode 100644
index 85470d9661..0000000000
--- a/tools/create_kyradat/lol_demo.h
+++ /dev/null
@@ -1,15 +0,0 @@
-const ExtractEntry lolDemo[] = {
- { k2SeqplayPakFiles, 0x0001AC10, 0x0001AC1C },
- { k2SeqplayStrings, 0x0001B5EE, 0x0001B6F0 },
- { k2SeqplaySfxFiles, 0x0001B6F0, 0x0001B7B5 },
- { k2SeqplaySeqData, 0x0001B320, 0x0001B56C },
- { kLolSeqplayIntroTracks, 0x0001B7B5, 0x0001B7CF },
- { -1, 0, 0 }
-};
-
-const Game lolDemos[] = {
- { kLol, EN_ANY, k2DemoLol, "30bb5af87d38adb47d3e6ce06b1cb042", lolDemo},
- GAME_DUMMY_ENTRY
-};
-
-
diff --git a/tools/create_kyradat/lol_floppy.h b/tools/create_kyradat/lol_floppy.h
deleted file mode 100644
index bb306b7083..0000000000
--- a/tools/create_kyradat/lol_floppy.h
+++ /dev/null
@@ -1,87 +0,0 @@
-const ExtractEntry lolFloppyFile2G[] = {
- { kLolIngamePakFiles, 0x0038C38, 0x0038CC0 },
-
- { kLolCharacterDefs, 0x0002A6D0, 0x0002AB62 },
- { kLolIngameSfxFiles, 0x0002ACA0, 0x0002B592 },
- { kLolIngameSfxIndex, 0x0002B592, 0x0002B97A },
- { kLolMusicTrackMap, 0x0002ABB0, 0x0002ACA0 },
- { kLolGMSfxIndex, 0x0002B980, 0x0002BA7A },
- { kLolMT32SfxIndex, 0x0002BA80, 0x0002BB7A },
- { kLolSpellProperties, 0x0002C0E0, 0x0002C1F8 },
- { kLolGameShapeMap, 0x0002BE5C, 0x0002BF70 },
- { kLolSceneItemOffs, 0x0003730F, 0x00037317 },
- { kLolCharInvIndex, 0x0002BF70, 0x0002BF7A },
- { kLolCharInvDefs, 0x0002BF7A, 0x0002BFD2 },
- { kLolCharDefsMan, 0x0002BFD2, 0x0002BFE4 },
- { kLolCharDefsWoman, 0x0002BFE4, 0x0002BFF6 },
- { kLolCharDefsKieran, 0x0002BFF6, 0x0002C008 },
- { kLolCharDefsAkshel, 0x0002C01A, 0x0002C02C },
- { kLolExpRequirements, 0x00031750, 0x0003177C },
- { kLolMonsterModifiers, 0x0003177C, 0x00031794 },
- { kLolMonsterLevelOffsets, 0x000372DF, 0x000372FF },
- { kLolMonsterDirFlags, 0x000372FF, 0x0003730F },
- { kLolMonsterScaleY, 0x00036EC0, 0x00036EDE },
- { kLolMonsterScaleX, 0x00036EDE, 0x00036EFE },
- { kLolMonsterScaleWH, 0x00028F30, 0x00028FB2 },
- { kLolFlyingItemShp, 0x00028FB2, 0x00029034 },
- { kLolInventoryDesc, 0x00037ACE, 0x00037AE4 },
-
- { kLolLevelShpList, 0x00037C02, 0x00037C81 },
- { kLolLevelDatList, 0x00037C81, 0x00037D00 },
- { kLolCompassDefs, 0x00029034, 0x00029134 },
- { kLolStashSetup, 0x0003781D, 0x00037829 },
-
- { kLolDscUnk1, 0x00037317, 0x0003733B },
- { kLolDscShapeIndex1, 0x0003733B, 0x0003735F },
- { kLolDscShapeIndex2, 0x0003735F, 0x00037369 },
- { kLolDscScaleWidthData, 0x00037369, 0x000373B1 },
- { kLolDscScaleHeightData, 0x000373B1, 0x000373F9 },
- { kLolDscX, 0x000373F9, 0x00037441 },
- { kLolDscY, 0x00037441, 0x00037465 },
- { kLolDscTileIndex, 0x00037465, 0x00037477 },
- { kLolDscUnk2, 0x00037477, 0x0003748E },
- { kLolDscDoorShapeIndex, 0x0003748E, 0x000374A5 },
- { kLolDscDimData1, 0x00036F03, 0x00037047 },
- { kLolDscDimData2, 0x00037047, 0x000372D0 },
- { kLolDscBlockMap, 0x00036E64, 0x00036E70 },
- { kLolDscDimMap, 0x00036E70, 0x00036E82 },
- { kLolDscDoorScale, 0x00036E82, 0x00036E92 },
- { kLolDscShapeOvlIndex, 0x00036E92, 0x00036EBA },
- { kLolDscDoor4, 0x00036EBA, 0x00036EC2 },
- { kLolDscBlockIndex, 0x00038B87, 0x00038BCF },
- { kLolDscDoor1, 0x0002C050, 0x0002C0D0 },
- { kLolDscDoorX, 0x00028630, 0x00028AB0 },
- { kLolDscDoorY, 0x00028AB0, 0x00028F30 },
-
- { kLolScrollXTop, 0x0003C216, 0x0003C220 },
- { kLolScrollYTop, 0x0003C220, 0x0003C22A },
- { kLolScrollXBottom, 0x0003C22A, 0x0003C234 },
- { kLolScrollYBottom, 0x0003C234, 0x0003C23E },
-
- { kLolButtonDefs, 0x000297F0, 0x0002A01A },
- { kLolButtonList1, 0x0002A020, 0x0002A070 },
- { kLolButtonList2, 0x0002A070, 0x0002A08E },
- { kLolButtonList3, 0x0002A090, 0x0002A094 },
- { kLolButtonList4, 0x0002A0A0, 0x0002A0BE },
- { kLolButtonList5, 0x0002A0C0, 0x0002A0E0 },
- { kLolButtonList6, 0x0002A0E0, 0x0002A0FC },
- { kLolButtonList7, 0x0002A100, 0x0002A106 },
- { kLolButtonList8, 0x0002A110, 0x0002A114 },
-
- { kLolLegendData, 0x000374F0, 0x0003752C },
- { kLolMapCursorOvl, 0x0003752C, 0x00037545 },
- { kLolMapStringId, 0x00029140, 0x0002917C },
-
- { kLolSpellbookAnim, 0x00038668, 0x000386A0 },
- { kLolSpellbookCoords, 0x000386A0, 0x000386B8 },
- { kLolHealShapeFrames, 0x0002A140, 0x0002A190 },
- { kLolLightningDefs, 0x00037B08, 0x00037B1C },
- { kLolFireballCoords, 0x0001E6E2, 0x0001E8E2 },
-
- { -1, 0, 0 }
-};
-
-const Game lolDosFloppyGames[] = {
- { kLol, EN_ANY, -1, "6b843869772c1b779e1386be868c15dd", lolFloppyFile2G },
- GAME_DUMMY_ENTRY
-};
diff --git a/tools/create_kyradat/malcolm.h b/tools/create_kyradat/malcolm.h
deleted file mode 100644
index 253d6e7b1c..0000000000
--- a/tools/create_kyradat/malcolm.h
+++ /dev/null
@@ -1,17 +0,0 @@
-const ExtractEntry kyra3cd[] = {
- { k3MainMenuStrings, 0x0002D932, 0x0002D9E2 },
- { k3MusicFiles, 0x0003062C, 0x00030801 },
- { k3ScoreTable, 0x0002E4D0, 0x0002E598 },
- { k3SfxFiles, 0x0002E84E, 0x0002F10D },
- { k3SfxMap, 0x0002A590, 0x0002AA50 },
- { k3ItemAnimData, 0x00031614, 0x000317DC },
- { k3ItemMagicTable, 0x0002FB2A, 0x0002FB72 },
- { k3ItemStringMap, 0x0002D07A, 0x0002D0C2 },
- { -1, 0, 0 }
-};
-
-const Game kyra3Games[] = {
- { kKyra3, EN_ANY, -1, "bf68701eb591d0b72219f314c0d32688", kyra3cd },
- GAME_DUMMY_ENTRY
-};
-
diff --git a/tools/create_kyradat/misc.h b/tools/create_kyradat/misc.h
index 3c252f32a8..28a6303f83 100644
--- a/tools/create_kyradat/misc.h
+++ b/tools/create_kyradat/misc.h
@@ -202,7 +202,7 @@ const int kyra1DemoCDNeed[] = {
-1
};
-const int kyra1TownsEngNeed[] = {
+const int kyra1TownsNeed[] = {
kKallakWritingSeq,
kMalcolmTreeSeq,
kWestwoodLogoSeq,
@@ -293,32 +293,6 @@ const int kyra1TownsEngNeed[] = {
-1
};
-const int kyra1TownsJapNeed[] = {
- kIntroStrings,
- kItemNames,
- kTakenStrings,
- kPlacedStrings,
- kDroppedStrings,
- kNoDropStrings,
- kPutDownString,
- kWaitAmuletString,
- kBlackJewelString,
- kHealingTipString,
- kPoisonGoneString,
- kThePoisonStrings,
- kFluteStrings,
- kWispJewelStrings,
- kMagicJewelStrings,
- kFlaskFullString,
- kFullFlaskString,
- kOutroHomeString,
- kVeryCleverString,
- kGUIStrings,
- kNewGameString,
- kConfigStrings,
- -1
-};
-
const int kyra1AmigaNeed[] = {
kKallakWritingSeq,
kMalcolmTreeSeq,
@@ -374,7 +348,7 @@ const int kyra1AmigaNeed[] = {
-1
};
-const int kyra2CDFile1EngNeed[] = {
+const int kyra2CDFile1Need[] = {
k2SeqplayPakFiles,
k2SeqplayCredits,
k2SeqplayCreditsSpecial,
@@ -387,25 +361,7 @@ const int kyra2CDFile1EngNeed[] = {
-1
};
-const int kyra2CDFile1FreNeed[] = {
- k2SeqplayStrings,
- k2SeqplayTlkFiles,
- -1
-};
-
-const int kyra2CDFile1GerNeed[] = {
- k2SeqplayStrings,
- k2SeqplayTlkFiles,
- -1
-};
-
-const int kyra2CDFile1ItaNeed[] = {
- k2SeqplayStrings,
- k2SeqplayTlkFiles,
- -1
-};
-
-const int kyra2CDFile2EngNeed[] = {
+const int kyra2CDFile2Need[] = {
k2IngameSfxFiles,
k2IngameSfxIndex,
k2IngameTracks,
@@ -414,11 +370,13 @@ const int kyra2CDFile2EngNeed[] = {
-1
};
-const int kyra2CDFile2FreNeed[] = {
- -1
-};
-
-const int kyra2CDFile2GerNeed[] = {
+const int kyra2CDDemoNeed[] = {
+ k2IngameSfxFiles,
+ k2IngameSfxIndex,
+ k2IngameTracks,
+ k2IngameTalkObjIndex,
+ k2IngameItemAnimData,
+ k2IngameTlkDemoStrings,
-1
};
@@ -442,7 +400,7 @@ const int kyra2FloppyFile2Need[] = {
-1
};
-const int kyra2TownsFile1EngNeed[] = {
+const int kyra2TownsFile1Need[] = {
k2SeqplayPakFiles,
k2SeqplayStrings,
k2SeqplaySfxFiles,
@@ -452,12 +410,7 @@ const int kyra2TownsFile1EngNeed[] = {
-1
};
-const int kyra2TownsFile1JapNeed[] = {
- k2SeqplayStrings,
- -1
-};
-
-const int kyra2TownsFile2EngNeed[] = {
+const int kyra2TownsFile2Need[] = {
k2IngamePakFiles,
k2IngameSfxFilesTns,
k2IngameSfxIndex,
@@ -468,10 +421,6 @@ const int kyra2TownsFile2EngNeed[] = {
-1
};
-const int kyra2TownsFile2JapNeed[] = {
- -1
-};
-
const int kyra2DemoNeed[] = {
k2SeqplayPakFiles,
k2SeqplaySeqData,
@@ -581,7 +530,7 @@ const int lolFloppyNeed[] = {
-1
};
-const int lolCDFile1ENeed[] = {
+const int lolCDFile1Need[] = {
kLolHistory,
-1
};
@@ -680,36 +629,39 @@ const int lolDemoNeed[] = {
const GameNeed gameNeedTable[] = {
{ kKyra1, -1, kyra1FloppyNeed },
{ kKyra1, kTalkieVersion, kyra1CDNeed },
- { kKyra1, kFMTownsVersionE , kyra1TownsEngNeed },
- { kKyra1, kFMTownsVersionJ, kyra1TownsJapNeed },
+ { kKyra1, kFMTownsVersionE , kyra1TownsNeed },
+ { kKyra1, kFMTownsVersionJ, kyra1TownsNeed },
{ kKyra1, kAmigaVersion, kyra1AmigaNeed },
{ kKyra1, kDemoVersion, kyra1DemoNeed },
{ kKyra1, kDemoCDVersion, kyra1DemoCDNeed },
{ kKyra2, k2FloppyFile1, kyra2FloppyFile1Need },
{ kKyra2, k2FloppyFile2, kyra2FloppyFile2Need },
- { kKyra2, k2CDFile1E, kyra2CDFile1EngNeed },
- { kKyra2, k2CDFile1F, kyra2CDFile1FreNeed },
- { kKyra2, k2CDFile1G, kyra2CDFile1GerNeed },
- { kKyra2, k2CDFile1I, kyra2CDFile1ItaNeed }, // Italian fan translation
- { kKyra2, k2CDFile2E, kyra2CDFile2EngNeed },
- { kKyra2, k2CDFile2F, kyra2CDFile2FreNeed },
- { kKyra2, k2CDFile2G, kyra2CDFile2GerNeed },
- { kKyra2, k2TownsFile1E , kyra2TownsFile1EngNeed },
- { kKyra2, k2TownsFile1J, kyra2TownsFile1JapNeed },
- { kKyra2, k2TownsFile2E , kyra2TownsFile2EngNeed },
- { kKyra2, k2TownsFile2J, kyra2TownsFile2JapNeed },
- { kKyra2, k2DemoVersion, kyra2DemoNeed},
- { kKyra2, k2DemoVersionTlkE, kyra2TlkDemoNeed},
- { kKyra2, k2DemoVersionTlkF, kyra2TlkDemoNeed},
- { kKyra2, k2DemoVersionTlkG, kyra2TlkDemoNeed},
- { kLol, k2DemoLol, lolDemoNeed},
+ { kKyra2, k2CDFile1E, kyra2CDFile1Need },
+ { kKyra2, k2CDFile1F, kyra2CDFile1Need },
+ { kKyra2, k2CDFile1G, kyra2CDFile1Need },
+ { kKyra2, k2CDFile1I, kyra2CDFile1Need }, // Italian fan translation
+ { kKyra2, k2CDFile2E, kyra2CDFile2Need },
+ { kKyra2, k2CDFile2F, kyra2CDFile2Need },
+ { kKyra2, k2CDFile2G, kyra2CDFile2Need },
+ { kKyra2, k2CDDemoE, kyra2CDDemoNeed },
+ { kKyra2, k2CDDemoF, kyra2CDDemoNeed },
+ { kKyra2, k2CDDemoG, kyra2CDDemoNeed },
+ { kKyra2, k2TownsFile1E , kyra2TownsFile1Need },
+ { kKyra2, k2TownsFile1J, kyra2TownsFile1Need },
+ { kKyra2, k2TownsFile2E , kyra2TownsFile2Need },
+ { kKyra2, k2TownsFile2J, kyra2TownsFile2Need },
+ { kKyra2, k2DemoVersion, kyra2DemoNeed },
+ { kKyra2, k2DemoVersionTlkE, kyra2TlkDemoNeed },
+ { kKyra2, k2DemoVersionTlkF, kyra2TlkDemoNeed },
+ { kKyra2, k2DemoVersionTlkG, kyra2TlkDemoNeed },
+ { kLol, k2DemoLol, lolDemoNeed },
{ kKyra3, -1, kyra3Need },
{ kLol, -1, lolFloppyNeed },
- { kLol, kLolCD, lolCDFile1ENeed },
- { kLol, kLolCD, lolCDFile2Need },
+ { kLol, kLolCD1, lolCDFile1Need },
+ { kLol, kLolCD2, lolCDFile2Need },
{ -1, -1, 0 }
};
@@ -729,6 +681,9 @@ const SpecialExtension specialTable[] = {
{ k2CDFile2E, "CD" },
{ k2CDFile2F, "CD" },
{ k2CDFile2G, "CD" },
+ { k2CDDemoE, "CD" },
+ { k2CDDemoF, "CD" },
+ { k2CDDemoG, "CD" },
{ k2TownsFile1E, "TNS" },
{ k2TownsFile1J, "TNS" },
@@ -737,7 +692,8 @@ const SpecialExtension specialTable[] = {
{ k2DemoVersion, "DEM" },
{ k2DemoLol, "DEM" },
- { kLolCD, "CD" },
+ { kLolCD1, "CD" },
+ { kLolCD2, "CD" },
{ -1, 0 }
};
@@ -751,3 +707,85 @@ const Language languageTable[] = {
{ JA_JPN, "JPN" },
{ -1, 0 }
};
+
+const Game kyra1Games[] = {
+ // Demos
+ { kKyra1, EN_ANY, kDemoVersion, "7b7504c8560ffc914d34c44c71b3094c" },
+ { kKyra1, EN_ANY, kDemoCDVersion, "226fdba99cb11ef1047131d9a50e6292" },
+
+ // Amiga
+ { kKyra1, EN_ANY, kAmigaVersion, "b620564b6b7e0787b053ca9e35bd9f52" },
+
+ // Floppy
+ { kKyra1, EN_ANY, -1, "76a4fc84e173cadb6369785787e1546e" },
+ { kKyra1, DE_DEU, -1, "9442d6f7db6a41f3dd4aa4de5d36e107" },
+ { kKyra1, FR_FRA, -1, "aa9d6d78d8b199deaf48efeca6d19af2" },
+ { kKyra1, IT_ITA, -1, "5d7550306b369a3492f9f3402702477c" },
+ { kKyra1, ES_ESP, -1, "9ff130d2558bcd674d4074849d93c362" },
+
+ // Talkie
+ { kKyra1, EN_ANY, kTalkieVersion, "1ebc18f3e7fbb72474a55cb0fa089ed4" },
+ { kKyra1, DE_DEU, kTalkieVersion, "c65d381184f98ac26d9efd2d45baef51" },
+ { kKyra1, FR_FRA, kTalkieVersion, "307c5d4a554d9068ac3d326e350ae4a6" },
+ { kKyra1, IT_ITA, kTalkieVersion, "d0f1752098236083d81b9497bd2b6989" }, // Italian fan translation
+
+ // FM-TOWNS
+ { kKyra1, EN_ANY, kFMTownsVersionE, "5a3ad60ccd0f2e29463e0368cd14a60d" },
+ { kKyra1, JA_JPN, kFMTownsVersionJ, "5a3ad60ccd0f2e29463e0368cd14a60d" },
+
+ GAME_DUMMY_ENTRY
+};
+
+const Game kyra2Games[] = {
+ // demos
+ { kKyra2, EN_ANY, k2DemoVersion, "a620a37579dd44ab0403482285e3897f" },
+ { kKyra2, EN_ANY, k2CDDemoE, "fa54d8abfe05f9186c05f7de7eaf1480" },
+ { kKyra2, FR_FRA, k2CDDemoF, "fa54d8abfe05f9186c05f7de7eaf1480" },
+ { kKyra2, DE_DEU, k2CDDemoG, "fa54d8abfe05f9186c05f7de7eaf1480" },
+
+ // floppy games
+ { kKyra2, EN_ANY, k2FloppyFile1, "9b0f5e57b5a2ed88b5b989cbb402b6c7" },
+ { kKyra2, FR_FRA, k2FloppyFile1, "df31cc9e37e1cf68df2fdc75ddf2d87b" },
+ { kKyra2, DE_DEU, k2FloppyFile1, "0ca4f9a1438264a4c63c3218e064ed3b" },
+ { kKyra2, IT_ITA, k2FloppyFile1, "178d3ab913f61bfba21d2fb196405e8c" },
+ { kKyra2, EN_ANY, k2FloppyFile2, "7c3eadbe5122722cf2e5e1611e19dfb9" },
+ { kKyra2, FR_FRA, k2FloppyFile2, "fc2c6782778e6c6d5a553d1cb73c98ad" },
+ { kKyra2, DE_DEU, k2FloppyFile2, "0d9b0eb7b0ad889ec942d74d80dde1bf" },
+ { kKyra2, IT_ITA, k2FloppyFile2, "3a61ed6b7c00ddae383a0361799e2ba6" },
+
+ // talkie games
+ { kKyra2, EN_ANY, k2CDFile1E, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
+ { kKyra2, FR_FRA, k2CDFile1F, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
+ { kKyra2, DE_DEU, k2CDFile1G, "85bbc1cc6c4cef6ad31fc6ee79518efb" },
+ { kKyra2, EN_ANY, k2CDFile2E, "e20d0d2e500f01e399ec588247a7e213" },
+ { kKyra2, FR_FRA, k2CDFile2F, "e20d0d2e500f01e399ec588247a7e213" },
+ { kKyra2, DE_DEU, k2CDFile2G, "e20d0d2e500f01e399ec588247a7e213" },
+ { kKyra2, IT_ITA, k2CDFile1I, "130795aa8f2333250c895dae9028b9bb" }, // Italian Fan Translation (using same offsets as English)
+
+ // FM-TOWNS games
+ { kKyra2, EN_ANY, k2TownsFile1E, "74f50d79c919cc8e7196c24942ce43d7" },
+ { kKyra2, JA_JPN, k2TownsFile1J, "74f50d79c919cc8e7196c24942ce43d7" },
+ { kKyra2, EN_ANY, k2TownsFile2E, "a9a7fd4f05d00090e9e8bda073e6d431" },
+ { kKyra2, JA_JPN, k2TownsFile2J, "a9a7fd4f05d00090e9e8bda073e6d431" },
+
+ GAME_DUMMY_ENTRY
+};
+
+const Game kyra3Games[] = {
+ { kKyra3, EN_ANY, -1, "bf68701eb591d0b72219f314c0d32688" },
+ GAME_DUMMY_ENTRY
+};
+
+const Game lolGames[] = {
+ // DOS demo
+ { kLol, EN_ANY, k2DemoLol, "30bb5af87d38adb47d3e6ce06b1cb042" },
+
+ // DOS floppy
+ { kLol, EN_ANY, -1, "6b843869772c1b779e1386be868c15dd" },
+
+ // DOS CD
+ { kLol, EN_ANY, kLolCD1, "9d1778314de80598c0b0d032e2a1a1cf" },
+ { kLol, EN_ANY, kLolCD2, "263998ec600afca1cc7b935c473df670" },
+
+ GAME_DUMMY_ENTRY
+};
diff --git a/tools/create_kyradat/module.mk b/tools/create_kyradat/module.mk
index 557871ce4a..b5bd955b88 100644
--- a/tools/create_kyradat/module.mk
+++ b/tools/create_kyradat/module.mk
@@ -7,7 +7,8 @@ MODULE_OBJS := \
create_kyradat.o \
pak.o \
md5.o \
- util.o
+ util.o \
+ search.o
# Set the name of the executable
TOOL_EXECUTABLE := create_kyradat
diff --git a/tools/create_kyradat/providers.h b/tools/create_kyradat/providers.h
new file mode 100644
index 0000000000..593a9d316e
--- /dev/null
+++ b/tools/create_kyradat/providers.h
@@ -0,0 +1,201 @@
+const ExtractEntry extractProviders[] = {
+ { kForestSeq, kForestSeqProvider },
+ { kKallakWritingSeq, kKallakWritingSeqProvider },
+ { kKyrandiaLogoSeq, kKyrandiaLogoSeqProvider },
+ { kKallakMalcolmSeq, kKallakMalcolmSeqProvider },
+ { kMalcolmTreeSeq, kMalcolmTreeSeqProvider },
+ { kWestwoodLogoSeq, kWestwoodLogoSeqProvider },
+ { kDemo1Seq, kDemo1SeqProvider },
+ { kDemo2Seq, kDemo2SeqProvider },
+ { kDemo3Seq, kDemo3SeqProvider },
+ { kDemo4Seq, kDemo4SeqProvider },
+ { kAmuleteAnimSeq, kAmuleteAnimSeqProvider },
+ { kOutroReunionSeq, kOutroReunionSeqProvider },
+ { kIntroCPSStrings, kIntroCPSStringsProvider },
+ { kIntroCOLStrings, kIntroCOLStringsProvider },
+ { kIntroWSAStrings, kIntroWSAStringsProvider },
+ { kIntroStrings, kIntroStringsProvider },
+ { kOutroHomeString, kOutroHomeStringProvider },
+ { kRoomFilenames, kRoomFilenamesProvider },
+ { kRoomList, kRoomListProvider },
+ { kCharacterImageFilenames, kCharacterImageFilenamesProvider },
+ { kAudioTracks, kAudioTracksProvider },
+ { kAudioTracksIntro, kAudioTracksIntroProvider },
+ { kItemNames, kItemNamesProvider },
+ { kTakenStrings, kTakenStringsProvider },
+ { kPlacedStrings, kPlacedStringsProvider },
+ { kDroppedStrings, kDroppedStringsProvider },
+ { kNoDropStrings, kNoDropStringsProvider },
+ { kPutDownString, kPutDownStringProvider },
+ { kWaitAmuletString, kWaitAmuletStringProvider },
+ { kBlackJewelString, kBlackJewelStringProvider },
+ { kPoisonGoneString, kPoisonGoneStringProvider },
+ { kHealingTipString, kHealingTipStringProvider },
+ { kWispJewelStrings, kWispJewelStringsProvider },
+ { kMagicJewelStrings, kMagicJewelStringsProvider },
+ { kThePoisonStrings, kThePoisonStringsProvider },
+ { kFluteStrings, kFluteStringsProvider },
+ { kFlaskFullString, kFlaskFullStringProvider },
+ { kFullFlaskString, kFullFlaskStringProvider },
+ { kVeryCleverString, kVeryCleverStringProvider },
+ { kNewGameString, kNewGameStringProvider },
+ { kDefaultShapes, kDefaultShapesProvider },
+ { kHealing1Shapes, kHealing1ShapesProvider },
+ { kHealing2Shapes, kHealing2ShapesProvider },
+ { kPoisonDeathShapes, kPoisonDeathShapesProvider },
+ { kFluteShapes, kFluteShapesProvider },
+ { kWinter1Shapes, kWinter1ShapesProvider },
+ { kWinter2Shapes, kWinter2ShapesProvider },
+ { kWinter3Shapes, kWinter3ShapesProvider },
+ { kDrinkShapes, kDrinkShapesProvider },
+ { kWispShapes, kWispShapesProvider },
+ { kMagicAnimShapes, kMagicAnimShapesProvider },
+ { kBranStoneShapes, kBranStoneShapesProvider },
+ { kPaletteList1, kPaletteList1Provider },
+ { kPaletteList2, kPaletteList2Provider },
+ { kPaletteList3, kPaletteList3Provider },
+ { kPaletteList4, kPaletteList4Provider },
+ { kPaletteList5, kPaletteList5Provider },
+ { kPaletteList6, kPaletteList6Provider },
+ { kPaletteList7, kPaletteList7Provider },
+ { kPaletteList8, kPaletteList8Provider },
+ { kPaletteList9, kPaletteList9Provider },
+ { kPaletteList10, kPaletteList10Provider },
+ { kPaletteList11, kPaletteList11Provider },
+ { kPaletteList12, kPaletteList12Provider },
+ { kPaletteList13, kPaletteList13Provider },
+ { kPaletteList14, kPaletteList14Provider },
+ { kPaletteList15, kPaletteList15Provider },
+ { kPaletteList16, kPaletteList16Provider },
+ { kPaletteList17, kPaletteList17Provider },
+ { kPaletteList18, kPaletteList18Provider },
+ { kPaletteList19, kPaletteList19Provider },
+ { kPaletteList20, kPaletteList20Provider },
+ { kPaletteList21, kPaletteList21Provider },
+ { kPaletteList22, kPaletteList22Provider },
+ { kPaletteList23, kPaletteList23Provider },
+ { kPaletteList24, kPaletteList24Provider },
+ { kPaletteList25, kPaletteList25Provider },
+ { kPaletteList26, kPaletteList26Provider },
+ { kPaletteList27, kPaletteList27Provider },
+ { kPaletteList28, kPaletteList28Provider },
+ { kPaletteList29, kPaletteList29Provider },
+ { kPaletteList30, kPaletteList30Provider },
+ { kPaletteList31, kPaletteList31Provider },
+ { kPaletteList32, kPaletteList32Provider },
+ { kPaletteList33, kPaletteList33Provider },
+ { kGUIStrings, kGUIStringsProvider },
+ { kConfigStrings, kConfigStringsProvider },
+ { kKyra1TownsSFXwdTable, kKyra1TownsSFXwdTableProvider },
+ { kKyra1TownsSFXbtTable, kKyra1TownsSFXbtTableProvider },
+ { kKyra1TownsCDATable, kKyra1TownsCDATableProvider },
+ { kCreditsStrings, kCreditsStringsProvider },
+ { kAmigaIntroSFXTable, kAmigaIntroSFXTableProvider },
+ { kAmigaGameSFXTable, kAmigaGameSFXTableProvider },
+ { k2SeqplayPakFiles, k2SeqplayPakFilesProvider },
+ { k2SeqplayStrings, k2SeqplayStringsProvider },
+ { k2SeqplaySfxFiles, k2SeqplaySfxFilesProvider },
+ { k2SeqplayTlkFiles, k2SeqplayTlkFilesProvider },
+ { k2SeqplaySeqData, k2SeqplaySeqDataProvider },
+ { k2SeqplayCredits, k2SeqplayCreditsProvider },
+ { k2SeqplayCreditsSpecial, k2SeqplayCreditsSpecialProvider },
+ { k2SeqplayIntroTracks, k2SeqplayIntroTracksProvider },
+ { k2SeqplayFinaleTracks, k2SeqplayFinaleTracksProvider },
+ { k2SeqplayIntroCDA, k2SeqplayIntroCDAProvider },
+ { k2SeqplayFinaleCDA, k2SeqplayFinaleCDAProvider },
+ { k2SeqplayShapeAnimData, k2SeqplayShapeAnimDataProvider },
+ { k2IngamePakFiles, k2IngamePakFilesProvider },
+ { k2IngameSfxFiles, k2IngameSfxFilesProvider },
+ { k2IngameSfxFilesTns, k2IngameSfxFilesTnsProvider },
+ { k2IngameSfxIndex, k2IngameSfxIndexProvider },
+ { k2IngameTracks, k2IngameTracksProvider },
+ { k2IngameCDA, k2IngameCDAProvider },
+ { k2IngameTalkObjIndex, k2IngameTalkObjIndexProvider },
+ { k2IngameTimJpStrings, k2IngameTimJpStringsProvider },
+ { k2IngameItemAnimData, k2IngameItemAnimDataProvider },
+ { k2IngameTlkDemoStrings, k2IngameTlkDemoStringsProvider },
+ { k3MainMenuStrings, k3MainMenuStringsProvider },
+ { k3MusicFiles, k3MusicFilesProvider },
+ { k3ScoreTable, k3ScoreTableProvider },
+ { k3SfxFiles, k3SfxFilesProvider },
+ { k3SfxMap, k3SfxMapProvider },
+ { k3ItemAnimData, k3ItemAnimDataProvider },
+ { k3ItemMagicTable, k3ItemMagicTableProvider },
+ { k3ItemStringMap, k3ItemStringMapProvider },
+ { kLolSeqplayIntroTracks, kLolSeqplayIntroTracksProvider },
+ { kLolIngamePakFiles, kLolIngamePakFilesProvider },
+ { kLolCharacterDefs, kLolCharacterDefsProvider },
+ { kLolIngameSfxFiles, kLolIngameSfxFilesProvider },
+ { kLolIngameSfxIndex, kLolIngameSfxIndexProvider },
+ { kLolMusicTrackMap, kLolMusicTrackMapProvider },
+ { kLolGMSfxIndex, kLolGMSfxIndexProvider },
+ { kLolMT32SfxIndex, kLolMT32SfxIndexProvider },
+ { kLolSpellProperties, kLolSpellPropertiesProvider },
+ { kLolGameShapeMap, kLolGameShapeMapProvider },
+ { kLolSceneItemOffs, kLolSceneItemOffsProvider },
+ { kLolCharInvIndex, kLolCharInvIndexProvider },
+ { kLolCharInvDefs, kLolCharInvDefsProvider },
+ { kLolCharDefsMan, kLolCharDefsManProvider },
+ { kLolCharDefsWoman, kLolCharDefsWomanProvider },
+ { kLolCharDefsKieran, kLolCharDefsKieranProvider },
+ { kLolCharDefsAkshel, kLolCharDefsAkshelProvider },
+ { kLolExpRequirements, kLolExpRequirementsProvider },
+ { kLolMonsterModifiers, kLolMonsterModifiersProvider },
+ { kLolMonsterLevelOffsets, kLolMonsterLevelOffsetsProvider },
+ { kLolMonsterDirFlags, kLolMonsterDirFlagsProvider },
+ { kLolMonsterScaleY, kLolMonsterScaleYProvider },
+ { kLolMonsterScaleX, kLolMonsterScaleXProvider },
+ { kLolMonsterScaleWH, kLolMonsterScaleWHProvider },
+ { kLolFlyingItemShp, kLolFlyingItemShpProvider },
+ { kLolInventoryDesc, kLolInventoryDescProvider },
+ { kLolLevelShpList, kLolLevelShpListProvider },
+ { kLolLevelDatList, kLolLevelDatListProvider },
+ { kLolCompassDefs, kLolCompassDefsProvider },
+ { kLolItemPrices, kLolItemPricesProvider },
+ { kLolStashSetup, kLolStashSetupProvider },
+ { kLolDscUnk1, kLolDscUnk1Provider },
+ { kLolDscShapeIndex1, kLolDscShapeIndex1Provider },
+ { kLolDscShapeIndex2, kLolDscShapeIndex2Provider },
+ { kLolDscScaleWidthData, kLolDscScaleWidthDataProvider },
+ { kLolDscScaleHeightData, kLolDscScaleHeightDataProvider },
+ { kLolDscX, kLolDscXProvider },
+ { kLolDscY, kLolDscYProvider },
+ { kLolDscTileIndex, kLolDscTileIndexProvider },
+ { kLolDscUnk2, kLolDscUnk2Provider },
+ { kLolDscDoorShapeIndex, kLolDscDoorShapeIndexProvider },
+ { kLolDscDimData1, kLolDscDimData1Provider },
+ { kLolDscDimData2, kLolDscDimData2Provider },
+ { kLolDscBlockMap, kLolDscBlockMapProvider },
+ { kLolDscDimMap, kLolDscDimMapProvider },
+ { kLolDscShapeOvlIndex, kLolDscShapeOvlIndexProvider },
+ { kLolDscBlockIndex, kLolDscBlockIndexProvider },
+ { kLolDscDoor1, kLolDscDoor1Provider },
+ { kLolDscDoorScale, kLolDscDoorScaleProvider },
+ { kLolDscDoor4, kLolDscDoor4Provider },
+ { kLolDscDoorX, kLolDscDoorXProvider },
+ { kLolDscDoorY, kLolDscDoorYProvider },
+ { kLolScrollXTop, kLolScrollXTopProvider },
+ { kLolScrollYTop, kLolScrollYTopProvider },
+ { kLolScrollXBottom, kLolScrollXBottomProvider },
+ { kLolScrollYBottom, kLolScrollYBottomProvider },
+ { kLolButtonDefs, kLolButtonDefsProvider },
+ { kLolButtonList1, kLolButtonList1Provider },
+ { kLolButtonList2, kLolButtonList2Provider },
+ { kLolButtonList3, kLolButtonList3Provider },
+ { kLolButtonList4, kLolButtonList4Provider },
+ { kLolButtonList5, kLolButtonList5Provider },
+ { kLolButtonList6, kLolButtonList6Provider },
+ { kLolButtonList7, kLolButtonList7Provider },
+ { kLolButtonList8, kLolButtonList8Provider },
+ { kLolLegendData, kLolLegendDataProvider },
+ { kLolMapCursorOvl, kLolMapCursorOvlProvider },
+ { kLolMapStringId, kLolMapStringIdProvider },
+ { kLolSpellbookAnim, kLolSpellbookAnimProvider },
+ { kLolSpellbookCoords, kLolSpellbookCoordsProvider },
+ { kLolHealShapeFrames, kLolHealShapeFramesProvider },
+ { kLolLightningDefs, kLolLightningDefsProvider },
+ { kLolFireballCoords, kLolFireballCoordsProvider },
+ { kLolHistory, kLolHistoryProvider },
+ { -1, NULL }
+};
+
diff --git a/tools/create_kyradat/search.cpp b/tools/create_kyradat/search.cpp
new file mode 100644
index 0000000000..a12eb231ef
--- /dev/null
+++ b/tools/create_kyradat/search.cpp
@@ -0,0 +1,195 @@
+#include "search.h"
+#include "md5.h"
+
+#include <algorithm>
+#include <cassert>
+
+Hasher::Hash Hasher::createHash(const byte *data, uint32 size) {
+ md5_context ctx;
+ md5_starts(&ctx);
+ md5_update(&ctx, data, size);
+
+ Hash hash;
+ md5_finish(&ctx, hash.digest);
+ return hash;
+}
+
+SearchData SearchCreator::create(const char *filename) {
+ FILE *f = fopen(filename, "rb");
+ assert(f);
+
+ SearchData data;
+ data.size = fileSize(f);
+
+ byte *buffer = new byte[data.size];
+ fread(buffer, 1, data.size, f);
+ fclose(f);
+
+ data = create(buffer, data.size);
+ delete[] buffer;
+
+ return data;
+}
+
+SearchData SearchCreator::create(const byte *buffer, uint32 size) {
+ SearchData data;
+
+ data.size = size;
+ data.hash = Hasher::createHash(buffer, data.size);
+ data.byteSum = 0;
+
+ for (uint32 i = 0; i < data.size; ++i)
+ data.byteSum += buffer[i];
+
+ return data;
+}
+
+SumCreator::SumCreator(InputList list, const DataInput &input) : _curOffset(0), _input(input), _sums() {
+ // Sort in ascending order
+ list.sort(std::less<uint32>());
+
+ uint32 byteSum = 0;
+ uint32 oldSize = 0;
+
+ for (InputList::const_iterator i = list.begin(); i != list.end(); ++i) {
+ // Strip out entries, which exceed the buffer size
+ if (*i > _input.size())
+ continue;
+
+ // Strip out duplicates
+ if (_sums.find(*i) != _sums.end())
+ continue;
+
+ // Only add the bytes exceeding the old sum's size
+ // to the sum. This saves a few accesses.
+ for (uint32 j = oldSize; j < *i; ++j)
+ byteSum += _input[j];
+
+ _sums[*i] = byteSum;
+
+ // Save this sum's size
+ oldSize = *i;
+ }
+}
+
+bool SumCreator::nextByte() {
+ // Calculate the bytes available for summing. We need to add
+ // 1 here, since we will only update the offset AFTER everything
+ // is done.
+ const uint32 sizeLeft = _input.size() - (_curOffset + 1);
+
+ if (!sizeLeft) {
+ _sums.clear();
+ return false;
+ }
+
+ // Grab the old first byte.
+ const byte firstByte = _input[_curOffset];
+
+ typedef std::list<uint32> DeletionList;
+ DeletionList toRemove;
+
+ for (SumMap::iterator i = _sums.begin(); i != _sums.end(); ++i) {
+ // If this entry needs to sum up a larger buffer than the buffer
+ // size left, we will remove the entry and continue to the next
+ // one.
+ if (i->first > sizeLeft) {
+ // Add the current entry to the removal list.
+ toRemove.push_back(i->first);
+ continue;
+ }
+
+ // Update the byte sum. First we remove the old first byte
+ // from the sum, next we add the next available byte.
+ i->second -= firstByte;
+ i->second += _input[_curOffset + i->first];
+ }
+
+ // Remove all entries flagged for removal
+ for (DeletionList::const_iterator i = toRemove.begin(); i != toRemove.end(); ++i)
+ _sums.erase(*i);
+
+ // Update out offset.
+ ++_curOffset;
+
+ // We return whether there are still some sums left available.
+ return !_sums.empty();
+}
+
+bool SumCreator::hasSum(uint32 size) const {
+ return _sums.find(size) != _sums.end();
+}
+
+uint32 SumCreator::getSum(uint32 size) const {
+ SumMap::const_iterator s = _sums.find(size);
+
+ if (s == _sums.end())
+ return 0;
+
+ return s->second;
+}
+
+Search::Search(const char *filename) : _data(), _search() {
+ FILE *src = fopen(filename, "rb");
+ assert(src);
+
+ uint32 size = fileSize(src);
+ byte *data = new byte[size];
+ fread(data, 1, size, src);
+ fclose(src);
+
+ _data.resize(size);
+ for (uint32 i = 0; i < size; ++i)
+ _data[i] = data[i];
+ delete[] data;
+}
+
+Search::Search(const byte *data, uint32 size) : _data(), _search() {
+ _data.resize(size);
+ for (uint32 i = 0; i < size; ++i)
+ _data[i] = data[i];
+}
+
+void Search::addData(SearchData data) {
+ for (SearchList::const_iterator i = _search.begin(); i != _search.end(); ++i) {
+ // Do not add any duplicates
+ if (*i == data)
+ return;
+ }
+
+ _search.push_back(data);
+}
+
+bool Search::search(ResultList &res) {
+ SumCreator::InputList list;
+ for (SearchList::const_iterator i = _search.begin(); i != _search.end(); ++i)
+ list.push_back(i->size);
+
+ SumCreator sum(list, _data);
+ list.clear();
+
+ do {
+ const uint32 offset = sum.getOffset();
+
+ for (SearchList::iterator i = _search.begin(); i != _search.end(); ) {
+ if (!sum.hasSum(i->size)) {
+ i = _search.erase(i);
+ continue;
+ }
+
+ const uint32 byteSum = sum.getSum(i->size);
+ if (byteSum == i->byteSum) {
+ if (Hasher::createHash(&_data[offset], i->size) == i->hash) {
+ res.push_back(ResultData(*i, offset));
+ i = _search.erase(i);
+ continue;
+ }
+ }
+
+ ++i;
+ }
+ } while (sum.nextByte());
+
+ return !res.empty();
+}
+
diff --git a/tools/create_kyradat/search.h b/tools/create_kyradat/search.h
new file mode 100644
index 0000000000..8ec8c7017e
--- /dev/null
+++ b/tools/create_kyradat/search.h
@@ -0,0 +1,97 @@
+#ifndef SEARCH_H
+#define SEARCH_H
+
+#include "util.h"
+
+#include <list>
+#include <map>
+#include <vector>
+#include <cstring>
+
+class Hasher {
+public:
+ struct Hash {
+ uint8 digest[16];
+
+ bool operator==(const Hash &r) const {
+ return !std::memcmp(digest, r.digest, sizeof(digest));
+ }
+
+ bool operator<(const Hash &r) const {
+ return std::memcmp(digest, r.digest, sizeof(digest)) < 0;
+ }
+ };
+
+ static Hash createHash(const byte *data, uint32 size);
+};
+
+struct SearchData {
+ uint32 size;
+
+ uint32 byteSum;
+ Hasher::Hash hash;
+
+ bool operator==(const SearchData &r) const {
+ return (size == r.size && byteSum == r.byteSum && hash == r.hash);
+ }
+
+ bool operator<(const SearchData &r) const {
+ return (size < r.size && byteSum < r.byteSum && hash < r.hash);
+ }
+};
+
+class SearchCreator {
+public:
+ static SearchData create(const char *filename);
+ static SearchData create(const byte *buffer, uint32 size);
+};
+
+class SumCreator {
+public:
+ typedef std::list<uint32> InputList;
+ typedef std::vector<byte> DataInput;
+
+ SumCreator(InputList list, const DataInput &input);
+
+ bool nextByte();
+
+ uint32 getOffset() const { return _curOffset; }
+
+ bool hasSum(uint32 size) const;
+ uint32 getSum(uint32 size) const;
+private:
+ uint32 _curOffset;
+ DataInput _input;
+
+ typedef std::map<uint32, uint32> SumMap;
+ SumMap _sums;
+ typedef std::map<uint32, uint> SumCount;
+ SumCount _sumCount;
+};
+
+class Search {
+public:
+ Search(const char *filename);
+ Search(const byte *data, uint32 size);
+
+ void addData(SearchData data);
+
+ struct ResultData {
+ SearchData data;
+ uint32 offset;
+
+ ResultData() : data(), offset() {}
+ ResultData(SearchData d, uint32 o) : data(d), offset(o) {}
+ };
+
+ typedef std::list<ResultData> ResultList;
+ bool search(ResultList &res);
+private:
+ SumCreator::DataInput _data;
+
+ typedef std::list<SearchData> SearchList;
+ SearchList _search;
+};
+
+#endif
+
diff --git a/tools/create_kyradat/tables.h b/tools/create_kyradat/tables.h
new file mode 100644
index 0000000000..d337c1ed92
--- /dev/null
+++ b/tools/create_kyradat/tables.h
@@ -0,0 +1,1261 @@
+const ExtractEntrySearchData kForestSeqProvider[] = {
+ { -1, { 0x000002DE, 0x00003946, { { 0x85, 0x79, 0xDC, 0xB8, 0x62, 0xAD, 0xD6, 0x01, 0xA5, 0x66, 0x6B, 0xC4, 0x61, 0xCA, 0x82, 0xF5 } } } },
+ { -1, { 0x00000273, 0x00001D80, { { 0x18, 0x32, 0xB7, 0xFB, 0xD8, 0x1A, 0x6D, 0x83, 0x75, 0xF5, 0x2B, 0xF7, 0xC0, 0xFD, 0x85, 0xEF } } } },
+ { -1, { 0x00000195, 0x00001455, { { 0x86, 0xC2, 0x45, 0xEB, 0x16, 0x8A, 0x44, 0x73, 0xB4, 0x59, 0x13, 0x9B, 0x85, 0x40, 0x82, 0x81 } } } },
+ { -1, { 0x00000196, 0x00001468, { { 0x06, 0x8D, 0xC1, 0x9B, 0xBC, 0x28, 0xE8, 0x36, 0x43, 0x67, 0x34, 0xAA, 0x78, 0xB9, 0xCB, 0x72 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kKallakWritingSeqProvider[] = {
+ { -1, { 0x000007F4, 0x00006DAD, { { 0x84, 0x9D, 0x82, 0xD2, 0x4E, 0x8B, 0xE2, 0x86, 0x82, 0x5E, 0xE7, 0x2C, 0x7A, 0xD6, 0xFE, 0x19 } } } },
+ { -1, { 0x00000805, 0x0000719E, { { 0xA2, 0xFE, 0x0A, 0xAA, 0xD9, 0x43, 0x5A, 0xBE, 0x56, 0x38, 0x73, 0x42, 0xAC, 0xA9, 0x1B, 0x01 } } } },
+ { -1, { 0x000007F5, 0x00006DCD, { { 0x0E, 0x0A, 0x75, 0xA5, 0x71, 0x5A, 0xC6, 0x32, 0x52, 0x7F, 0xEC, 0x2B, 0x0B, 0xF2, 0x22, 0xE6 } } } },
+ { -1, { 0x000007F7, 0x00006E23, { { 0x97, 0x8C, 0x63, 0x8D, 0x91, 0x68, 0xA5, 0x63, 0x55, 0x43, 0xE7, 0xE0, 0x12, 0xF9, 0x80, 0xA4 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kKyrandiaLogoSeqProvider[] = {
+ { -1, { 0x0000005C, 0x000003D3, { { 0x75, 0xC5, 0x55, 0x54, 0x00, 0xD7, 0xE9, 0x26, 0x0F, 0x01, 0xB1, 0xB7, 0xA9, 0x29, 0xF7, 0x69 } } } },
+ { -1, { 0x000000A6, 0x00000A09, { { 0x70, 0x6E, 0x74, 0xBB, 0xD7, 0x09, 0x05, 0xDD, 0xA3, 0x09, 0x96, 0x40, 0xBD, 0x01, 0x19, 0x05 } } } },
+ { -1, { 0x00000054, 0x00000300, { { 0x4E, 0xAD, 0xD0, 0x73, 0xD2, 0x3C, 0xF6, 0x6B, 0x65, 0x23, 0xA2, 0x30, 0xD6, 0xEE, 0x1C, 0x13 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kKallakMalcolmSeqProvider[] = {
+ { -1, { 0x0000027B, 0x0000220A, { { 0xB7, 0xC1, 0x57, 0x04, 0x9B, 0x67, 0x82, 0x7B, 0x6E, 0xFD, 0x59, 0xF2, 0x10, 0x93, 0x89, 0x12 } } } },
+ { -1, { 0x000002B8, 0x0000280B, { { 0x98, 0xC8, 0x36, 0x8C, 0xF8, 0x92, 0xC2, 0xB9, 0x1B, 0x71, 0x6B, 0x4C, 0xA4, 0x6C, 0xF6, 0x30 } } } },
+ { -1, { 0x0000026B, 0x00002132, { { 0x51, 0x07, 0x32, 0xA2, 0x09, 0x47, 0x97, 0x02, 0x85, 0x31, 0x39, 0x93, 0x3A, 0x53, 0x47, 0xA5 } } } },
+ { -1, { 0x0000026D, 0x00002188, { { 0x7E, 0x3B, 0x06, 0x69, 0x11, 0x59, 0xBE, 0x42, 0xCB, 0x33, 0x9C, 0x15, 0xCF, 0x61, 0xF6, 0xB0 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kMalcolmTreeSeqProvider[] = {
+ { -1, { 0x00000214, 0x000014C4, { { 0xA2, 0x60, 0x16, 0x14, 0x20, 0xE4, 0x8D, 0x89, 0xC4, 0x30, 0x07, 0x21, 0xC9, 0x26, 0xA6, 0x84 } } } },
+ { -1, { 0x00000230, 0x0000192A, { { 0x28, 0xCC, 0x89, 0x40, 0x8A, 0xF7, 0xCB, 0xC0, 0x11, 0x8F, 0x0F, 0xE5, 0x5F, 0x24, 0x2D, 0x32 } } } },
+ { -1, { 0x00000216, 0x000014FB, { { 0xBA, 0x6F, 0x63, 0xD5, 0x44, 0xCE, 0xE8, 0x20, 0xD4, 0x4C, 0x06, 0x58, 0x21, 0x8E, 0x07, 0x8B } } } },
+ { -1, { 0x00000218, 0x00001551, { { 0x30, 0x42, 0xD3, 0x7D, 0x6B, 0x43, 0x3B, 0xC7, 0x63, 0x56, 0x7D, 0x12, 0xE0, 0x53, 0x41, 0x48 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kWestwoodLogoSeqProvider[] = {
+ { -1, { 0x0000004D, 0x00000319, { { 0xE9, 0x5D, 0xD4, 0x60, 0x4E, 0xA6, 0x92, 0x30, 0x9C, 0x77, 0x99, 0xBC, 0xB1, 0x97, 0xFB, 0xBD } } } },
+ { -1, { 0x0000004B, 0x0000032A, { { 0x9A, 0x54, 0x6F, 0x6C, 0x70, 0xD1, 0x02, 0x94, 0xD1, 0xA1, 0xA7, 0xBE, 0x1B, 0x10, 0xBD, 0x2F } } } },
+ { -1, { 0x00000044, 0x00000243, { { 0x00, 0x11, 0x10, 0x64, 0x60, 0xE8, 0xB5, 0x59, 0x00, 0x60, 0xF5, 0x10, 0xB5, 0x63, 0x9D, 0x55 } } } },
+ { -1, { 0x0000004B, 0x000002FE, { { 0x6E, 0xDA, 0x5D, 0x1E, 0xF4, 0x38, 0xAE, 0x7A, 0x9F, 0xBC, 0x00, 0x7C, 0x77, 0x9D, 0x03, 0xAF } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kDemo1SeqProvider[] = {
+ { -1, { 0x00000026, 0x0000016E, { { 0x61, 0xF2, 0x84, 0x42, 0x89, 0x6E, 0xB8, 0x0D, 0x01, 0xB7, 0xE4, 0x49, 0xA1, 0x72, 0xDC, 0x66 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kDemo2SeqProvider[] = {
+ { -1, { 0x00000023, 0x00000151, { { 0xE7, 0x9F, 0xA7, 0x80, 0xE3, 0xC1, 0x63, 0xF2, 0x3F, 0x7B, 0x64, 0xD9, 0x70, 0x3A, 0xF1, 0x55 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kDemo3SeqProvider[] = {
+ { -1, { 0x00000059, 0x000001A8, { { 0x9E, 0x90, 0x4F, 0x9E, 0xBC, 0x39, 0x37, 0xD1, 0x10, 0x67, 0x8C, 0xE5, 0x84, 0xFD, 0xD9, 0x7C } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kDemo4SeqProvider[] = {
+ { -1, { 0x00000020, 0x0000013E, { { 0xB7, 0x67, 0x1D, 0x50, 0x11, 0xD0, 0x16, 0x91, 0x40, 0x40, 0xD1, 0xC0, 0xA0, 0x79, 0x3D, 0xCE } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kAmuleteAnimSeqProvider[] = {
+ { -1, { 0x0000002A, 0x0000025D, { { 0xB1, 0x59, 0x3C, 0x9A, 0x61, 0xC0, 0x1D, 0x80, 0xB5, 0x0C, 0x2E, 0xF9, 0xF6, 0x36, 0xED, 0x7D } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kOutroReunionSeqProvider[] = {
+ { -1, { 0x0000054A, 0x0000785F, { { 0x55, 0xEA, 0xB8, 0x7F, 0x3A, 0x86, 0xCD, 0xA6, 0xBC, 0xA7, 0x9A, 0x39, 0xED, 0xF5, 0x30, 0x0A } } } },
+ { -1, { 0x000005E5, 0x00008918, { { 0x6A, 0x33, 0x8C, 0xB0, 0x16, 0x57, 0x2D, 0xEB, 0xB2, 0xE1, 0x64, 0x80, 0x98, 0x99, 0x98, 0x19 } } } },
+ { -1, { 0x00000547, 0x0000781C, { { 0xCF, 0xD6, 0x1D, 0x3D, 0x14, 0x40, 0x88, 0x35, 0x36, 0x4F, 0x0B, 0x1F, 0x9A, 0x1C, 0x3D, 0xAC } } } },
+ { -1, { 0x00000547, 0x00007876, { { 0x7A, 0xC7, 0x80, 0x34, 0x7A, 0x1B, 0xAB, 0xF8, 0xA7, 0x2F, 0x63, 0x3C, 0xDA, 0x89, 0x3F, 0x82 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kIntroCPSStringsProvider[] = {
+ { -1, { 0x00000016, 0x0000070A, { { 0xD9, 0xDB, 0x91, 0xCD, 0x93, 0x81, 0xC4, 0x3F, 0x14, 0xF1, 0xC5, 0x02, 0xE7, 0x3F, 0x3A, 0x6C } } } },
+ { -1, { 0x00000015, 0x00000786, { { 0xCF, 0x09, 0xE1, 0xD9, 0x8E, 0x34, 0x5D, 0xEA, 0xBC, 0xAC, 0xC4, 0xF4, 0x4A, 0xEC, 0xFF, 0xC1 } } } },
+ { -1, { 0x0000000C, 0x00000413, { { 0xA1, 0xE3, 0x06, 0x53, 0x23, 0x9A, 0xE0, 0xF1, 0xE4, 0xFD, 0xD9, 0x05, 0x22, 0xA6, 0x28, 0x46 } } } },
+ { -1, { 0x00000014, 0x0000071D, { { 0xBA, 0xB6, 0x58, 0xB3, 0x28, 0x5E, 0x9F, 0x77, 0x69, 0x9D, 0x77, 0x53, 0x9D, 0x0D, 0xB0, 0x29 } } } },
+ { -1, { 0x00000015, 0x0000071D, { { 0x59, 0x65, 0x08, 0xF9, 0x4C, 0x81, 0xA1, 0xE3, 0x68, 0xF7, 0xE3, 0xF6, 0x33, 0x5F, 0xF5, 0x36 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kIntroCOLStringsProvider[] = {
+ { -1, { 0x0000002E, 0x00000F09, { { 0x2A, 0x42, 0xB8, 0x4E, 0xC6, 0xF0, 0x5F, 0x4A, 0x08, 0xB4, 0xE3, 0xE5, 0xBD, 0x32, 0x11, 0x06 } } } },
+ { -1, { 0x0000002B, 0x00000F09, { { 0x01, 0x40, 0x65, 0xC1, 0x33, 0xAA, 0x64, 0xA7, 0x44, 0xD5, 0x89, 0x68, 0x17, 0x47, 0xC7, 0x1D } } } },
+ { -1, { 0x00000046, 0x0000174F, { { 0xAA, 0x59, 0x01, 0x20, 0x06, 0xB4, 0x80, 0xC0, 0x84, 0x38, 0xFD, 0x97, 0xBF, 0x78, 0xDD, 0x78 } } } },
+ { -1, { 0x00000030, 0x00000F09, { { 0x05, 0x7B, 0x69, 0xB7, 0x6A, 0xC3, 0x7F, 0xD9, 0x7E, 0x51, 0x87, 0xA5, 0x31, 0xD8, 0x80, 0xB3 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kIntroWSAStringsProvider[] = {
+ { -1, { 0x00000086, 0x00002E5D, { { 0xD2, 0x8D, 0x62, 0xEF, 0xEB, 0x75, 0x04, 0x13, 0x64, 0x85, 0x6B, 0x6C, 0xE8, 0x6C, 0xCF, 0x52 } } } },
+ { -1, { 0x00000080, 0x00002E5D, { { 0x67, 0x03, 0x20, 0xDF, 0xAA, 0x3C, 0x6A, 0xB5, 0x45, 0xD0, 0x00, 0x2B, 0x30, 0xCC, 0x36, 0xB6 } } } },
+ { -1, { 0x0000004D, 0x00001AEC, { { 0x15, 0xBC, 0x8C, 0xD9, 0x33, 0x0C, 0xC5, 0x66, 0x87, 0x3B, 0x76, 0xEE, 0x0C, 0x41, 0x4D, 0x1F } } } },
+ { -1, { 0x00000093, 0x00002E5D, { { 0xAB, 0xD1, 0x32, 0x89, 0x2A, 0x8D, 0xC0, 0x2C, 0x87, 0x87, 0xA3, 0x14, 0x2A, 0x2A, 0x22, 0x7F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kIntroStringsProvider[] = {
+ { kAmigaVersion, { 0x0000050A, 0x0001A7B1, { { 0x1B, 0x74, 0x71, 0x4C, 0xAB, 0x81, 0x10, 0x59, 0x8A, 0x21, 0x50, 0xBB, 0xFE, 0x6F, 0xD0, 0xE8 } } } },
+ { -1, { 0x000004F6, 0x0001A7B1, { { 0xDE, 0x41, 0xB1, 0x98, 0xD5, 0xAD, 0x6B, 0xBA, 0x33, 0x04, 0x19, 0x5D, 0xCC, 0x07, 0xB5, 0x56 } } } },
+ { -1, { 0x00000606, 0x000212AB, { { 0xB0, 0x78, 0x86, 0xFB, 0xCB, 0x3D, 0x1E, 0x1E, 0x86, 0xE7, 0x2C, 0x2B, 0x3A, 0x3C, 0x6F, 0x1C } } } },
+ { -1, { 0x000005F0, 0x000207E6, { { 0xB8, 0x51, 0xEA, 0x44, 0x64, 0x04, 0xE4, 0x6A, 0x7B, 0xBD, 0x31, 0x62, 0xC0, 0xDD, 0xEA, 0xEF } } } },
+ { -1, { 0x000005F0, 0x0001CF13, { { 0x4F, 0xA0, 0x47, 0x57, 0x6D, 0x2D, 0xA6, 0x62, 0x06, 0xBE, 0x86, 0xD2, 0xD7, 0xEA, 0x2E, 0xD6 } } } },
+ { -1, { 0x000002FA, 0x00010181, { { 0x48, 0xD3, 0x1B, 0x8E, 0x8D, 0xBC, 0x1F, 0x51, 0x35, 0x71, 0xE2, 0xAB, 0xC8, 0xBE, 0xFC, 0x88 } } } },
+ { -1, { 0x000004F5, 0x0001A7B1, { { 0xC7, 0x65, 0x5B, 0x5A, 0x56, 0x43, 0x94, 0x55, 0x5B, 0x00, 0xFD, 0x5D, 0xF4, 0xB5, 0x04, 0x15 } } } },
+ { -1, { 0x00000605, 0x000212AB, { { 0x8F, 0x3A, 0x9D, 0x9A, 0x81, 0xF2, 0x4A, 0x90, 0xBC, 0xBD, 0x62, 0x8B, 0xD8, 0xD6, 0xF4, 0x5D } } } },
+ { -1, { 0x000005EF, 0x000207E6, { { 0xDC, 0x6C, 0x9A, 0x7C, 0x19, 0x45, 0x2B, 0x25, 0x84, 0xCC, 0xE1, 0x40, 0xFE, 0x8E, 0xF4, 0x51 } } } },
+ { -1, { 0x0000057C, 0x0001DF02, { { 0x4B, 0x09, 0xBC, 0xBC, 0xB3, 0x3C, 0x69, 0xEB, 0xA6, 0xB5, 0x76, 0xED, 0xC7, 0x57, 0x71, 0xB0 } } } },
+ { -1, { 0x000005CF, 0x00020415, { { 0xCC, 0xE5, 0x9F, 0xB8, 0xCA, 0xFA, 0x2D, 0x05, 0xB8, 0xAF, 0x9F, 0x1F, 0x8A, 0xA8, 0x56, 0xDE } } } },
+ { kFMTownsVersionE, { 0x00000545, 0x0001A84C, { { 0xEF, 0xE2, 0xE4, 0x92, 0xE1, 0x18, 0xF8, 0x3C, 0x91, 0x29, 0x4D, 0x82, 0xA4, 0x3E, 0xE6, 0x7D } } } },
+ { kFMTownsVersionJ, { 0x000005FB, 0x0003163E, { { 0x16, 0x28, 0x83, 0xCE, 0x29, 0x94, 0x9F, 0x82, 0xDC, 0xD4, 0x06, 0xE8, 0x67, 0xC9, 0x56, 0x29 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kOutroHomeStringProvider[] = {
+ { -1, { 0x00000005, 0x00000189, { { 0xA5, 0xF3, 0x03, 0x3F, 0x43, 0x2B, 0x77, 0xCC, 0x5C, 0x96, 0x64, 0xB1, 0x75, 0xB5, 0x3E, 0xF6 } } } },
+ { -1, { 0x0000000E, 0x00000473, { { 0xB6, 0xEB, 0xE8, 0x22, 0x67, 0x24, 0xA9, 0xA3, 0x94, 0x55, 0xC6, 0x57, 0x17, 0x15, 0x5B, 0x04 } } } },
+ { -1, { 0x00000007, 0x00000267, { { 0xD0, 0xC1, 0x11, 0x49, 0x3D, 0x3F, 0xCE, 0x84, 0x8F, 0xEF, 0xE3, 0xFD, 0x43, 0xCA, 0x92, 0xB0 } } } },
+ { -1, { 0x00000007, 0x000001B8, { { 0x17, 0x95, 0x5B, 0x4F, 0xE2, 0x07, 0x5A, 0x49, 0xFA, 0xCE, 0x53, 0x8B, 0xE7, 0x46, 0x69, 0xC7 } } } },
+ { -1, { 0x00000005, 0x00000178, { { 0x2E, 0x9C, 0x94, 0x0F, 0x29, 0x77, 0x27, 0x1D, 0x77, 0x1E, 0x5A, 0xF8, 0x0E, 0x8D, 0x09, 0x6B } } } },
+ { kFMTownsVersionE, { 0x00000005, 0x00000189, { { 0xA5, 0xF3, 0x03, 0x3F, 0x43, 0x2B, 0x77, 0xCC, 0x5C, 0x96, 0x64, 0xB1, 0x75, 0xB5, 0x3E, 0xF6 } } } },
+ { kFMTownsVersionJ, { 0x00000007, 0x000003E8, { { 0x68, 0x35, 0x87, 0x53, 0xD9, 0x53, 0x1F, 0x13, 0x24, 0x61, 0x0D, 0x8D, 0x33, 0x91, 0xF3, 0x47 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kRoomFilenamesProvider[] = {
+ { -1, { 0x00000308, 0x0000B7AA, { { 0x6D, 0xA4, 0xE8, 0x27, 0x68, 0x24, 0xCF, 0xAA, 0x30, 0x32, 0x71, 0x74, 0x36, 0x68, 0x82, 0x20 } } } },
+ { -1, { 0x000002DC, 0x0000B7AA, { { 0x31, 0x56, 0x41, 0x69, 0x1E, 0x84, 0x54, 0x2C, 0xF7, 0x7B, 0x98, 0x25, 0xF3, 0x91, 0x56, 0xFD } } } },
+ { -1, { 0x0000034C, 0x0000B7AA, { { 0x7C, 0x1B, 0x89, 0x09, 0xF0, 0x87, 0x3C, 0x64, 0x3D, 0x0E, 0x61, 0xCC, 0x09, 0x8D, 0xC9, 0x95 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kRoomListProvider[] = {
+ { -1, { 0x00004ECC, 0x0010312B, { { 0x9A, 0x91, 0xF1, 0x9C, 0x8A, 0x96, 0x1C, 0x7B, 0xB7, 0xE4, 0xF1, 0xE9, 0x7D, 0xEF, 0x40, 0xBF } } } },
+ { -1, { 0x00004DD6, 0x0010312B, { { 0xC6, 0xF0, 0xC4, 0x2C, 0x5A, 0xD7, 0x48, 0xE4, 0x41, 0x23, 0x65, 0x6D, 0xC8, 0xC7, 0xCE, 0xF5 } } } },
+ { -1, { 0x000064E8, 0x0010312B, { { 0x94, 0x5C, 0x87, 0x35, 0x35, 0x6B, 0x3E, 0xBF, 0x55, 0x3D, 0xDB, 0xD9, 0xFB, 0x97, 0x27, 0x5D } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kCharacterImageFilenamesProvider[] = {
+ { -1, { 0x000000F0, 0x00003A8F, { { 0xC0, 0xD9, 0x8C, 0x2B, 0x65, 0x51, 0x7C, 0x13, 0x52, 0x7E, 0xF7, 0x63, 0xA6, 0xA9, 0xCE, 0x40 } } } },
+ { -1, { 0x000000E4, 0x00003A8F, { { 0x7A, 0x77, 0x6D, 0x26, 0xC8, 0x43, 0xCB, 0x74, 0x46, 0x2E, 0x04, 0x22, 0x89, 0x27, 0x33, 0x06 } } } },
+ { -1, { 0x000000F7, 0x00003A8F, { { 0x1F, 0xAB, 0x8E, 0x5F, 0xAD, 0x76, 0x57, 0x37, 0xD7, 0x9B, 0x3F, 0x35, 0x4B, 0xA0, 0x98, 0x37 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kAudioTracksProvider[] = {
+ { -1, { 0x00000041, 0x00000FBF, { { 0xB5, 0xA2, 0x90, 0xE9, 0x73, 0x83, 0x47, 0x5A, 0xB3, 0x3E, 0x04, 0xBB, 0xAA, 0xC8, 0x84, 0x53 } } } },
+ { -1, { 0x0000005D, 0x0000154E, { { 0xA7, 0x7E, 0x03, 0x0A, 0x81, 0x54, 0xD2, 0x5D, 0x7B, 0x33, 0x07, 0xBF, 0x70, 0x01, 0x4B, 0x79 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kAudioTracksIntroProvider[] = {
+ { -1, { 0x0000000C, 0x00000458, { { 0xEB, 0xB3, 0x96, 0xA5, 0x07, 0xE6, 0x11, 0x58, 0xDB, 0x3F, 0x34, 0x30, 0xFB, 0x7B, 0x92, 0xC8 } } } },
+ { -1, { 0x00000006, 0x0000022C, { { 0x5F, 0xC9, 0xE1, 0x4B, 0x34, 0x52, 0xB9, 0xF8, 0xFF, 0x37, 0x8B, 0xF4, 0xEF, 0x5E, 0xC5, 0xDA } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kItemNamesProvider[] = {
+ { -1, { 0x00000380, 0x00012960, { { 0x2D, 0x81, 0xCF, 0x7A, 0x9D, 0x71, 0x83, 0xB7, 0xE5, 0x00, 0xB0, 0x6E, 0x25, 0x94, 0xCB, 0xA4 } } } },
+ { -1, { 0x00000468, 0x00018B13, { { 0xCE, 0xFE, 0x19, 0x5D, 0x3F, 0xD7, 0x2A, 0xF6, 0xD0, 0xC5, 0xBC, 0x17, 0x6A, 0x52, 0xDB, 0xFE } } } },
+ { -1, { 0x00000512, 0x0001DD2C, { { 0x5D, 0xB0, 0x6B, 0x8E, 0x9C, 0x70, 0x09, 0x90, 0x3C, 0xC6, 0x58, 0x1F, 0x71, 0x24, 0x76, 0x56 } } } },
+ { -1, { 0x00000506, 0x0001C3CC, { { 0x46, 0xD4, 0x19, 0x04, 0x2A, 0x46, 0xCD, 0x63, 0x41, 0x5A, 0x8E, 0xA8, 0x00, 0xDD, 0x02, 0x77 } } } },
+ { -1, { 0x00000506, 0x0001C1D9, { { 0xF2, 0x2D, 0x18, 0x13, 0x61, 0xFB, 0x57, 0x93, 0x5C, 0xDC, 0x79, 0x44, 0x96, 0x01, 0xA6, 0x90 } } } },
+ { -1, { 0x00000591, 0x0001F869, { { 0x4D, 0xD7, 0x66, 0xBB, 0x9A, 0xD8, 0x79, 0x1E, 0x92, 0x2B, 0xE5, 0xC2, 0x0F, 0x02, 0x0B, 0x35 } } } },
+ { -1, { 0x00000530, 0x0001D90A, { { 0x52, 0xFB, 0xA8, 0x3F, 0xA3, 0x6F, 0xC2, 0x67, 0x55, 0x9F, 0x66, 0x9F, 0xFD, 0x79, 0x44, 0xDF } } } },
+ { kFMTownsVersionE, { 0x00000505, 0x00018B13, { { 0x62, 0x76, 0x84, 0x5D, 0x8D, 0xBA, 0x23, 0xC5, 0x67, 0x26, 0x22, 0xBD, 0xBE, 0x81, 0x2D, 0xFF } } } },
+ { kFMTownsVersionJ, { 0x00000587, 0x000247A1, { { 0xE8, 0xCA, 0x1E, 0x34, 0x05, 0xE5, 0x08, 0xCA, 0xA7, 0xFE, 0x55, 0xCB, 0x75, 0xD0, 0xA7, 0x19 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kTakenStringsProvider[] = {
+ { -1, { 0x00000008, 0x00000261, { { 0x93, 0x5B, 0x79, 0xE8, 0x89, 0x8E, 0xB5, 0x37, 0x39, 0x2A, 0xB0, 0x04, 0x98, 0x80, 0x5A, 0x4E } } } },
+ { -1, { 0x00000010, 0x000004C2, { { 0x08, 0xC0, 0x66, 0xB1, 0x45, 0x04, 0x78, 0xF9, 0xAF, 0x0F, 0x52, 0xC8, 0x0E, 0x0C, 0x69, 0x86 } } } },
+ { -1, { 0x0000001C, 0x000009C0, { { 0xA8, 0x64, 0xDD, 0x9D, 0x91, 0x42, 0x04, 0x26, 0xD0, 0x80, 0x40, 0xED, 0x08, 0x51, 0xC9, 0xBB } } } },
+ { -1, { 0x0000000F, 0x0000047D, { { 0xE8, 0xB5, 0x15, 0xD5, 0x96, 0x81, 0xD2, 0x84, 0xAB, 0x33, 0xC1, 0x1C, 0x47, 0x1B, 0xFE, 0xDB } } } },
+ { -1, { 0x0000000F, 0x000002F0, { { 0x37, 0x22, 0x62, 0xE4, 0x1B, 0x1F, 0xD6, 0x9E, 0x94, 0xA3, 0x41, 0x00, 0xD5, 0x29, 0x28, 0x09 } } } },
+ { -1, { 0x0000001E, 0x000008FA, { { 0xC9, 0xCC, 0x2E, 0x0B, 0xE4, 0xE0, 0x44, 0xBD, 0xC2, 0x10, 0x09, 0xA3, 0x36, 0xB1, 0x5D, 0x1C } } } },
+ { -1, { 0x00000014, 0x00000588, { { 0x5B, 0x75, 0xAE, 0xD7, 0x50, 0x6C, 0x3E, 0x65, 0x5C, 0xF8, 0x84, 0x34, 0x48, 0x58, 0x0E, 0x6E } } } },
+ { -1, { 0x00000014, 0x000005D8, { { 0xD6, 0x00, 0x90, 0x6A, 0x75, 0x3B, 0xF1, 0xFE, 0xF4, 0x3E, 0x0E, 0x1D, 0x39, 0xEB, 0x2D, 0xC8 } } } },
+ { kFMTownsVersionE, { 0x0000001C, 0x00000AED, { { 0x32, 0xD2, 0x87, 0x67, 0x3D, 0x01, 0x50, 0xF3, 0xFA, 0x19, 0x7A, 0xB0, 0xF8, 0x6F, 0x8A, 0x07 } } } },
+ { kFMTownsVersionJ, { 0x0000001F, 0x00000EB7, { { 0x7F, 0x8C, 0xFF, 0x35, 0x30, 0x71, 0x9A, 0x78, 0xCC, 0x07, 0x11, 0x86, 0xE3, 0x0D, 0x16, 0xDF } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPlacedStringsProvider[] = {
+ { -1, { 0x00000009, 0x000002B7, { { 0xE7, 0xCF, 0x8A, 0x19, 0xEF, 0x98, 0xE5, 0x74, 0x46, 0x46, 0x47, 0x65, 0xB6, 0x81, 0x70, 0x0A } } } },
+ { -1, { 0x0000000B, 0x00000389, { { 0xB9, 0x74, 0xBE, 0x63, 0xB4, 0xA4, 0x8A, 0x04, 0xD9, 0x50, 0x73, 0xB7, 0x01, 0x9E, 0x77, 0xD3 } } } },
+ { -1, { 0x00000011, 0x00000545, { { 0x05, 0xEF, 0x74, 0x54, 0x06, 0xB7, 0x64, 0x47, 0x21, 0x56, 0x55, 0x74, 0x70, 0x2D, 0xA8, 0x23 } } } },
+ { -1, { 0x00000011, 0x000003B8, { { 0xC8, 0xA6, 0xE4, 0x8A, 0xF7, 0x4C, 0x3F, 0xA6, 0x24, 0x7F, 0xEF, 0xE4, 0x63, 0x8B, 0x72, 0xF3 } } } },
+ { -1, { 0x0000000D, 0x0000040D, { { 0x9C, 0x71, 0x53, 0x35, 0xC3, 0xE8, 0x46, 0xB9, 0xD2, 0xFA, 0x1C, 0x8C, 0xC3, 0xFF, 0xBC, 0x1F } } } },
+ { -1, { 0x0000000D, 0x00000439, { { 0x57, 0xAE, 0x1C, 0xC1, 0xF5, 0xE8, 0x5B, 0x9E, 0x90, 0x02, 0xB9, 0x8D, 0x86, 0x38, 0xFB, 0xA8 } } } },
+ { kFMTownsVersionE, { 0x00000009, 0x000002B7, { { 0xE7, 0xCF, 0x8A, 0x19, 0xEF, 0x98, 0xE5, 0x74, 0x46, 0x46, 0x47, 0x65, 0xB6, 0x81, 0x70, 0x0A } } } },
+ { kFMTownsVersionJ, { 0x0000000D, 0x0000074C, { { 0x0E, 0x1C, 0x1F, 0xD2, 0xCF, 0xBF, 0x40, 0xE1, 0x59, 0x0F, 0x1B, 0x46, 0xED, 0x8B, 0x96, 0x8E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kDroppedStringsProvider[] = {
+ { -1, { 0x0000000A, 0x0000033C, { { 0x96, 0x63, 0xFD, 0x73, 0x71, 0xCC, 0x62, 0x59, 0x86, 0x02, 0x47, 0x55, 0x82, 0xF8, 0x5E, 0x1F } } } },
+ { -1, { 0x00000011, 0x00000612, { { 0xEC, 0xCD, 0x99, 0x58, 0xF7, 0x08, 0x92, 0x43, 0x95, 0x10, 0x6B, 0xDD, 0x61, 0xF7, 0x5C, 0xA4 } } } },
+ { -1, { 0x00000011, 0x00000579, { { 0x3D, 0x0C, 0x3C, 0xAD, 0x2E, 0xE3, 0x7A, 0x5A, 0x4A, 0x21, 0x1C, 0x96, 0xC5, 0x5A, 0xA7, 0x9E } } } },
+ { -1, { 0x00000011, 0x000003B8, { { 0xC8, 0xA6, 0xE4, 0x8A, 0xF7, 0x4C, 0x3F, 0xA6, 0x24, 0x7F, 0xEF, 0xE4, 0x63, 0x8B, 0x72, 0xF3 } } } },
+ { -1, { 0x0000000B, 0x0000031B, { { 0x32, 0x0C, 0xCD, 0x83, 0xF6, 0x97, 0xC8, 0x76, 0x57, 0x6B, 0x7C, 0xAD, 0x51, 0xEB, 0x91, 0x1F } } } },
+ { -1, { 0x00000008, 0x00000261, { { 0x1D, 0xB5, 0xFB, 0x23, 0x94, 0xA7, 0x86, 0x7A, 0xAC, 0x53, 0xDA, 0x6F, 0xCC, 0x41, 0x0F, 0xD7 } } } },
+ { kFMTownsVersionE, { 0x0000000A, 0x0000033C, { { 0x96, 0x63, 0xFD, 0x73, 0x71, 0xCC, 0x62, 0x59, 0x86, 0x02, 0x47, 0x55, 0x82, 0xF8, 0x5E, 0x1F } } } },
+ { kFMTownsVersionJ, { 0x0000000B, 0x0000059F, { { 0xDD, 0x5E, 0x51, 0x7E, 0xD9, 0xFC, 0xCD, 0xAD, 0x6B, 0x93, 0x71, 0xBE, 0x83, 0x63, 0x3F, 0x88 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kNoDropStringsProvider[] = {
+ { -1, { 0x00000048, 0x00001881, { { 0x69, 0xA8, 0x0B, 0x47, 0xFD, 0xA0, 0x94, 0x12, 0x82, 0x1D, 0xE0, 0x9C, 0xB1, 0x10, 0x6D, 0x11 } } } },
+ { -1, { 0x00000047, 0x00001881, { { 0xEF, 0x81, 0x2B, 0x8F, 0x06, 0x0C, 0xA6, 0xBA, 0x50, 0x9C, 0x99, 0x40, 0x53, 0xFD, 0xC1, 0x55 } } } },
+ { -1, { 0x0000004C, 0x00001AFF, { { 0xE5, 0x05, 0x79, 0x10, 0x91, 0x95, 0x64, 0x40, 0xB2, 0x73, 0x39, 0xFA, 0x50, 0x8D, 0xCE, 0x8A } } } },
+ { -1, { 0x0000004C, 0x00001B39, { { 0xFF, 0xD5, 0x5D, 0x1C, 0xF1, 0x8A, 0xA4, 0x21, 0xB1, 0x56, 0x2B, 0xAC, 0x9F, 0x40, 0x30, 0x53 } } } },
+ { -1, { 0x0000004C, 0x00001650, { { 0x42, 0x7A, 0x04, 0xCD, 0x69, 0xB1, 0x06, 0x9A, 0xD8, 0x7E, 0x7A, 0x14, 0x5B, 0x1C, 0x70, 0xB8 } } } },
+ { -1, { 0x00000045, 0x00001850, { { 0x50, 0x34, 0x82, 0xA9, 0x28, 0xDE, 0x44, 0xB3, 0x2D, 0x59, 0x0B, 0x7F, 0xCE, 0x42, 0x1F, 0x73 } } } },
+ { -1, { 0x0000003D, 0x000015FA, { { 0x87, 0x2E, 0xE6, 0x8A, 0xF1, 0xC9, 0xC9, 0xEC, 0xD3, 0x2C, 0x25, 0x7E, 0x36, 0x02, 0xF7, 0xAC } } } },
+ { kFMTownsVersionE, { 0x0000007A, 0x0000323C, { { 0x00, 0x7F, 0x8E, 0x2E, 0x7B, 0xFC, 0x06, 0x0B, 0x7A, 0x7F, 0x17, 0xAF, 0x47, 0x82, 0xC1, 0x16 } } } },
+ { kFMTownsVersionJ, { 0x00000061, 0x00002E9C, { { 0x8A, 0xFA, 0x43, 0x26, 0x68, 0x6D, 0x5A, 0x59, 0x0C, 0x9E, 0xCB, 0x28, 0x43, 0x33, 0x54, 0x49 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPutDownStringProvider[] = {
+ { -1, { 0x00000026, 0x00000D27, { { 0x83, 0x09, 0x51, 0xD3, 0x94, 0x2B, 0xB1, 0x8B, 0x8B, 0x16, 0xA9, 0xEB, 0xE8, 0xA2, 0x4F, 0x0C } } } },
+ { -1, { 0x00000028, 0x00000E7E, { { 0x26, 0x93, 0x76, 0x37, 0x41, 0x2E, 0xF3, 0xED, 0xF5, 0x7B, 0xA7, 0xEB, 0x80, 0x61, 0x3B, 0x84 } } } },
+ { -1, { 0x0000002E, 0x0000101D, { { 0xBC, 0xEA, 0x6C, 0x1F, 0x31, 0xCF, 0x30, 0x26, 0x2D, 0x24, 0xC5, 0xEA, 0x97, 0x49, 0xDC, 0x4C } } } },
+ { -1, { 0x0000002E, 0x00000EB2, { { 0x14, 0x08, 0xE6, 0xD1, 0x54, 0x76, 0x2A, 0x9E, 0xBE, 0x5A, 0x15, 0xEB, 0x52, 0x01, 0x52, 0x97 } } } },
+ { -1, { 0x00000034, 0x0000131D, { { 0x36, 0x87, 0x4D, 0x73, 0x2A, 0x67, 0xBA, 0xCE, 0xCB, 0x33, 0x3C, 0x10, 0xCC, 0x3E, 0x7E, 0xAD } } } },
+ { -1, { 0x0000002D, 0x00001052, { { 0x12, 0x0A, 0x23, 0x11, 0xDF, 0x8A, 0x59, 0xD4, 0xF2, 0xCA, 0xA5, 0xA7, 0x76, 0x1B, 0x54, 0xB6 } } } },
+ { kFMTownsVersionE, { 0x00000026, 0x00000D27, { { 0x83, 0x09, 0x51, 0xD3, 0x94, 0x2B, 0xB1, 0x8B, 0x8B, 0x16, 0xA9, 0xEB, 0xE8, 0xA2, 0x4F, 0x0C } } } },
+ { kFMTownsVersionJ, { 0x00000029, 0x0000187D, { { 0xDE, 0xEE, 0x66, 0x88, 0x57, 0xF5, 0xF9, 0x2E, 0xD2, 0x14, 0xF5, 0x83, 0xA0, 0x0D, 0x96, 0x86 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kWaitAmuletStringProvider[] = {
+ { -1, { 0x0000003E, 0x0000150D, { { 0xA8, 0xBF, 0x99, 0x9B, 0xC1, 0x36, 0x21, 0x47, 0x6D, 0x99, 0x4F, 0x34, 0xE6, 0x61, 0x47, 0xFD } } } },
+ { -1, { 0x0000003D, 0x0000150D, { { 0x11, 0xC8, 0x7E, 0x83, 0x7A, 0xC3, 0x5D, 0xD9, 0x72, 0xFC, 0x75, 0xCB, 0x57, 0xE9, 0xF1, 0x36 } } } },
+ { -1, { 0x00000048, 0x000019CF, { { 0x82, 0xDD, 0xBD, 0xA3, 0xD0, 0xE0, 0x19, 0xC0, 0x6D, 0xC5, 0xEE, 0x7A, 0x0B, 0x49, 0x06, 0xCE } } } },
+ { -1, { 0x00000049, 0x00001ADD, { { 0xFD, 0xCF, 0x9C, 0xAD, 0xA2, 0xAA, 0x74, 0x11, 0x8E, 0x89, 0x02, 0xCB, 0x2B, 0x5B, 0x2B, 0x1C } } } },
+ { -1, { 0x00000049, 0x0000184F, { { 0x11, 0x42, 0xB2, 0xD6, 0x76, 0xEA, 0xF9, 0xCA, 0x46, 0xE4, 0xA6, 0x35, 0xE8, 0xB9, 0x8B, 0xE9 } } } },
+ { -1, { 0x0000004A, 0x00001B4C, { { 0x38, 0x26, 0x54, 0x10, 0x3D, 0x32, 0xCD, 0xAE, 0x3F, 0x96, 0xFE, 0x6F, 0x4A, 0x94, 0x72, 0xB0 } } } },
+ { -1, { 0x00000042, 0x000017FD, { { 0x0A, 0x8A, 0x7E, 0x9A, 0x5F, 0x4A, 0x35, 0x06, 0x4D, 0x6B, 0xBF, 0x29, 0x1B, 0xAD, 0xD8, 0x37 } } } },
+ { kFMTownsVersionE, { 0x0000003D, 0x0000150D, { { 0x11, 0xC8, 0x7E, 0x83, 0x7A, 0xC3, 0x5D, 0xD9, 0x72, 0xFC, 0x75, 0xCB, 0x57, 0xE9, 0xF1, 0x36 } } } },
+ { kFMTownsVersionJ, { 0x00000029, 0x000017A7, { { 0xFD, 0xA3, 0xAD, 0x24, 0x16, 0x49, 0x22, 0x6F, 0x52, 0xE9, 0x50, 0x11, 0x51, 0x38, 0xCA, 0xE0 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kBlackJewelStringProvider[] = {
+ { -1, { 0x00000024, 0x00000B73, { { 0x8D, 0x57, 0x5F, 0x93, 0x85, 0x75, 0xF2, 0xD8, 0x36, 0xC2, 0x7C, 0x0E, 0x3B, 0xEA, 0xE0, 0x0A } } } },
+ { -1, { 0x00000023, 0x00000B73, { { 0xBE, 0xE9, 0xBD, 0x65, 0xB9, 0xB1, 0xCD, 0xF0, 0x45, 0x03, 0x01, 0x70, 0xBE, 0xD0, 0x0F, 0x80 } } } },
+ { -1, { 0x00000031, 0x0000113B, { { 0xA5, 0x00, 0xD1, 0xDC, 0x25, 0x99, 0x3E, 0x6B, 0xFF, 0xC8, 0x6C, 0xDA, 0xA4, 0xCF, 0x51, 0xD7 } } } },
+ { -1, { 0x0000002B, 0x00000F11, { { 0x68, 0xA0, 0xA3, 0xA0, 0xB6, 0xD1, 0x40, 0x22, 0xB4, 0x10, 0x3D, 0x5A, 0x7F, 0x1F, 0x4B, 0xE7 } } } },
+ { -1, { 0x0000002B, 0x00000D6D, { { 0x08, 0x5E, 0x1F, 0xA8, 0x8F, 0x1F, 0x6A, 0xE0, 0xF3, 0x49, 0xEF, 0x44, 0xA8, 0xCD, 0xDE, 0x45 } } } },
+ { -1, { 0x00000022, 0x00000B6E, { { 0xAE, 0xA0, 0xDF, 0x07, 0xDD, 0x88, 0x98, 0x6B, 0xDD, 0x9E, 0x2E, 0xC0, 0xBD, 0x45, 0x2E, 0x2B } } } },
+ { -1, { 0x00000025, 0x00000CF6, { { 0x4B, 0x13, 0x39, 0xCB, 0x3F, 0x44, 0x18, 0x46, 0x43, 0xDB, 0x94, 0xC5, 0x3E, 0x6B, 0xC4, 0x74 } } } },
+ { kFMTownsVersionE, { 0x00000023, 0x00000B73, { { 0xBE, 0xE9, 0xBD, 0x65, 0xB9, 0xB1, 0xCD, 0xF0, 0x45, 0x03, 0x01, 0x70, 0xBE, 0xD0, 0x0F, 0x80 } } } },
+ { kFMTownsVersionJ, { 0x00000035, 0x0000205F, { { 0x33, 0xD6, 0x19, 0xEE, 0xEA, 0xDD, 0x9F, 0xB5, 0x77, 0x0C, 0x8E, 0x84, 0x5E, 0x61, 0x22, 0x3E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPoisonGoneStringProvider[] = {
+ { -1, { 0x0000002E, 0x00000F59, { { 0xAD, 0x95, 0xF3, 0xA7, 0xBB, 0x04, 0x08, 0x77, 0xD0, 0x71, 0xFC, 0x8B, 0x33, 0x2A, 0x6D, 0xD3 } } } },
+ { -1, { 0x0000002D, 0x00000F59, { { 0x9A, 0x88, 0x07, 0x5A, 0x9C, 0xC3, 0x7B, 0xB0, 0x79, 0x69, 0xE0, 0x84, 0x11, 0x9B, 0x82, 0xCD } } } },
+ { -1, { 0x00000036, 0x00001324, { { 0x30, 0x67, 0xEE, 0x7C, 0x4D, 0x36, 0xFE, 0x46, 0x05, 0x44, 0x23, 0xA1, 0xB4, 0x07, 0x16, 0xB5 } } } },
+ { -1, { 0x0000002A, 0x00000EAA, { { 0x0B, 0x4E, 0xDF, 0x03, 0x9E, 0x64, 0x3B, 0x13, 0x10, 0x6A, 0xF9, 0x4C, 0x66, 0x0D, 0x09, 0xC5 } } } },
+ { -1, { 0x0000002A, 0x00000DFD, { { 0x57, 0xDC, 0xE0, 0x45, 0x2E, 0x89, 0x77, 0x7F, 0x4B, 0x41, 0xCF, 0x4A, 0xFE, 0x0B, 0xAF, 0xC1 } } } },
+ { -1, { 0x00000059, 0x00001E91, { { 0xDA, 0x9C, 0xC4, 0x7A, 0x79, 0x73, 0x60, 0xBF, 0x31, 0xF8, 0x8F, 0xAF, 0xC1, 0x4D, 0x25, 0xEC } } } },
+ { -1, { 0x00000034, 0x0000128D, { { 0x4E, 0x54, 0xFE, 0x58, 0x7F, 0x15, 0xFA, 0xC1, 0x50, 0xF8, 0x47, 0x29, 0x15, 0xE8, 0x83, 0xC7 } } } },
+ { -1, { 0x00000033, 0x0000127E, { { 0x67, 0xEB, 0xD3, 0x00, 0xF8, 0x4F, 0xF1, 0x79, 0x48, 0xE6, 0x9C, 0xB2, 0xA7, 0xCF, 0x76, 0x07 } } } },
+ { kFMTownsVersionE, { 0x0000003C, 0x000013B4, { { 0xE9, 0x54, 0xF1, 0xEC, 0x64, 0x5A, 0xEB, 0xC7, 0xAA, 0x7E, 0xA2, 0x9F, 0xE8, 0xFB, 0x3A, 0x82 } } } },
+ { kFMTownsVersionJ, { 0x0000003D, 0x000017D1, { { 0x7C, 0x93, 0x62, 0x32, 0x47, 0xB9, 0x78, 0x03, 0x86, 0x8D, 0x99, 0xB8, 0x86, 0x68, 0xEF, 0x3A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kHealingTipStringProvider[] = {
+ { -1, { 0x0000002E, 0x00000F04, { { 0x95, 0x39, 0x36, 0x89, 0xC4, 0x60, 0x7C, 0x0C, 0xDC, 0x06, 0xF7, 0x86, 0x1A, 0xF7, 0x93, 0x2B } } } },
+ { -1, { 0x0000002D, 0x00000F04, { { 0xC0, 0xC7, 0x0C, 0x3D, 0xA7, 0x62, 0x14, 0xFB, 0xE8, 0x52, 0x05, 0x0D, 0xFE, 0xF6, 0xC7, 0x28 } } } },
+ { -1, { 0x0000003C, 0x00001537, { { 0x78, 0xC2, 0x76, 0x24, 0x0D, 0x1F, 0xC0, 0x13, 0x4E, 0x34, 0x0A, 0x50, 0x4C, 0x35, 0x7E, 0xB1 } } } },
+ { -1, { 0x00000036, 0x0000132C, { { 0x86, 0x65, 0x80, 0x10, 0x40, 0x32, 0x6C, 0x2F, 0x5E, 0x76, 0xFB, 0xDC, 0x19, 0x33, 0x02, 0x3C } } } },
+ { -1, { 0x00000036, 0x00001364, { { 0x59, 0x70, 0x13, 0x8D, 0x93, 0x9C, 0x1B, 0x69, 0x2F, 0x13, 0x9A, 0xB2, 0x4C, 0x97, 0x7E, 0x95 } } } },
+ { -1, { 0x0000003F, 0x0000170E, { { 0x0B, 0x37, 0xA4, 0x5E, 0x05, 0x4A, 0x96, 0x1F, 0x2E, 0x02, 0x43, 0xBE, 0xCC, 0xF9, 0x21, 0x5E } } } },
+ { -1, { 0x00000028, 0x00000E0F, { { 0x3E, 0x40, 0xCA, 0x2A, 0x5F, 0xFE, 0x74, 0x30, 0x8C, 0x31, 0x41, 0x09, 0xBD, 0xFD, 0xA3, 0x7E } } } },
+ { kFMTownsVersionE, { 0x0000002D, 0x00000F04, { { 0xC0, 0xC7, 0x0C, 0x3D, 0xA7, 0x62, 0x14, 0xFB, 0xE8, 0x52, 0x05, 0x0D, 0xFE, 0xF6, 0xC7, 0x28 } } } },
+ { kFMTownsVersionJ, { 0x0000002B, 0x00001949, { { 0xC7, 0xE3, 0x0A, 0x6B, 0x8F, 0xCA, 0xBC, 0x3A, 0xDC, 0x76, 0x48, 0xD3, 0x8B, 0xD9, 0x44, 0x2E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kWispJewelStringsProvider[] = {
+ { -1, { 0x00000056, 0x00001C62, { { 0x43, 0x28, 0x3C, 0x0F, 0x78, 0x52, 0xE7, 0x2A, 0x77, 0xF3, 0x21, 0x5A, 0xF0, 0xFC, 0x9E, 0xF8 } } } },
+ { -1, { 0x00000052, 0x00001CE8, { { 0x6D, 0x69, 0x6D, 0x15, 0x4F, 0xF1, 0xD8, 0xA6, 0x53, 0x9F, 0xE3, 0x77, 0x75, 0x25, 0xE7, 0x93 } } } },
+ { -1, { 0x00000058, 0x00001E88, { { 0x0E, 0x14, 0xD1, 0xF3, 0x03, 0x29, 0x48, 0x1D, 0x32, 0x2A, 0xBB, 0x0B, 0x48, 0xB3, 0x2E, 0x47 } } } },
+ { -1, { 0x00000050, 0x00001B8D, { { 0x9A, 0xCE, 0x1D, 0x62, 0xFA, 0xC6, 0x73, 0x80, 0x02, 0x0A, 0x61, 0x24, 0xDC, 0x2A, 0xEF, 0xE6 } } } },
+ { -1, { 0x00000050, 0x00001A10, { { 0xFB, 0x79, 0x74, 0x14, 0xB9, 0x75, 0x4F, 0x44, 0x83, 0xB1, 0xD4, 0xBE, 0x17, 0x0F, 0xC4, 0xD6 } } } },
+ { -1, { 0x00000053, 0x00001C62, { { 0x9A, 0xF1, 0xCC, 0xB3, 0x09, 0xF0, 0x9C, 0x33, 0x0E, 0xF0, 0xE3, 0xF8, 0x24, 0x63, 0x40, 0x95 } } } },
+ { -1, { 0x00000061, 0x00002184, { { 0x4B, 0x20, 0xD7, 0xE6, 0x00, 0xBF, 0x32, 0x40, 0xB7, 0xD0, 0xD6, 0xEC, 0x9C, 0x0F, 0x0B, 0xF0 } } } },
+ { -1, { 0x0000005B, 0x00001E9A, { { 0xC1, 0x26, 0xF3, 0x64, 0x18, 0x7D, 0xF7, 0x5A, 0xB6, 0x2B, 0x44, 0x57, 0xDC, 0x60, 0x20, 0x3C } } } },
+ { -1, { 0x00000074, 0x00002945, { { 0x17, 0x8B, 0x7E, 0xD9, 0x04, 0x7C, 0xD4, 0x9D, 0xCE, 0xF0, 0x79, 0x00, 0xAC, 0x82, 0x7C, 0x82 } } } },
+ { -1, { 0x0000005F, 0x0000211E, { { 0xE7, 0x0A, 0x85, 0x25, 0x44, 0x41, 0x47, 0x3B, 0x7A, 0xA6, 0x62, 0xAE, 0xAE, 0xD5, 0x92, 0x45 } } } },
+ { kFMTownsVersionE, { 0x00000075, 0x00002B94, { { 0xA5, 0x4C, 0xBF, 0x5F, 0xD3, 0xF8, 0x6D, 0xE4, 0xB4, 0x8E, 0x64, 0x84, 0xD9, 0xBA, 0x2B, 0x33 } } } },
+ { kFMTownsVersionJ, { 0x00000067, 0x00002C6B, { { 0x55, 0x56, 0x6B, 0xEA, 0xEF, 0x34, 0xDA, 0x23, 0x23, 0xF4, 0x9D, 0x0F, 0xBF, 0xC3, 0x1F, 0xDA } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kMagicJewelStringsProvider[] = {
+ { -1, { 0x00000014, 0x0000069E, { { 0x6A, 0x1C, 0x9B, 0x85, 0x61, 0xC7, 0x28, 0xA9, 0xA3, 0xF4, 0xFA, 0x47, 0x90, 0x8F, 0x06, 0xB4 } } } },
+ { -1, { 0x00000013, 0x0000069E, { { 0x7C, 0xF2, 0xEE, 0x7C, 0x8A, 0xCE, 0x5B, 0x09, 0x32, 0xDC, 0x31, 0x1F, 0x45, 0x21, 0x84, 0xFF } } } },
+ { -1, { 0x00000014, 0x000006EF, { { 0xDE, 0x77, 0xB6, 0x8C, 0x39, 0x5C, 0x6F, 0xDF, 0x7D, 0x04, 0x0F, 0x65, 0x24, 0x75, 0xED, 0x95 } } } },
+ { -1, { 0x00000011, 0x000005DB, { { 0x44, 0x99, 0x35, 0x77, 0x9B, 0x3D, 0xF8, 0xAF, 0x7A, 0xA6, 0x14, 0xD0, 0x99, 0xC6, 0x80, 0x7B } } } },
+ { -1, { 0x00000011, 0x000005E4, { { 0xD5, 0x11, 0xDA, 0x40, 0x09, 0x6A, 0x5D, 0x76, 0x5C, 0x20, 0xC4, 0x43, 0x4D, 0xF3, 0x67, 0xF0 } } } },
+ { -1, { 0x0000001D, 0x00000A83, { { 0x60, 0x69, 0x18, 0x6C, 0x34, 0xB0, 0x56, 0xE3, 0x06, 0x7C, 0xB1, 0xDD, 0x26, 0x80, 0xAE, 0x30 } } } },
+ { -1, { 0x00000011, 0x000005CD, { { 0x32, 0x2A, 0xFF, 0x9F, 0x10, 0x75, 0x6B, 0xD6, 0x46, 0xAE, 0x55, 0xD3, 0x68, 0x4F, 0xBB, 0x5A } } } },
+ { kFMTownsVersionE, { 0x00000013, 0x0000069E, { { 0x7C, 0xF2, 0xEE, 0x7C, 0x8A, 0xCE, 0x5B, 0x09, 0x32, 0xDC, 0x31, 0x1F, 0x45, 0x21, 0x84, 0xFF } } } },
+ { kFMTownsVersionJ, { 0x0000000F, 0x0000087E, { { 0xD8, 0xF1, 0x40, 0x9D, 0x9C, 0x15, 0x9E, 0xBD, 0x69, 0xE5, 0xE1, 0x51, 0x34, 0x22, 0xF3, 0x75 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kThePoisonStringsProvider[] = {
+ { -1, { 0x00000058, 0x00001C24, { { 0xBA, 0x1F, 0xBD, 0x5C, 0x85, 0x3D, 0x3C, 0x92, 0xD1, 0x13, 0xF3, 0x40, 0x2E, 0xBB, 0x1C, 0xE2 } } } },
+ { -1, { 0x00000057, 0x00001C24, { { 0xBC, 0x31, 0x5C, 0x25, 0x50, 0x36, 0x58, 0x20, 0x55, 0xFC, 0x75, 0x47, 0x2D, 0x43, 0x73, 0x78 } } } },
+ { -1, { 0x00000072, 0x00002690, { { 0xEF, 0x62, 0x85, 0xA3, 0x8B, 0x20, 0x4B, 0x65, 0xF8, 0xE7, 0x2C, 0x02, 0x3F, 0x3F, 0x25, 0x65 } } } },
+ { -1, { 0x00000068, 0x000022D8, { { 0x39, 0xDA, 0xB3, 0xD2, 0xDA, 0x3F, 0xAB, 0x40, 0x1A, 0x4F, 0x9D, 0x02, 0xBA, 0x37, 0xEC, 0x4D } } } },
+ { -1, { 0x00000068, 0x00002077, { { 0x5D, 0xF4, 0xF9, 0xD9, 0x87, 0x34, 0x14, 0xAB, 0xE4, 0x9A, 0x67, 0xAF, 0x18, 0x8B, 0x40, 0x98 } } } },
+ { -1, { 0x00000063, 0x000021F8, { { 0x3C, 0x2E, 0xF8, 0xAD, 0xCF, 0xB5, 0xE7, 0x2C, 0x98, 0x7A, 0xB9, 0x6F, 0x7A, 0x42, 0xE1, 0x92 } } } },
+ { -1, { 0x00000059, 0x00001DF7, { { 0x16, 0x7B, 0x5F, 0x91, 0x06, 0x5B, 0xFC, 0x9C, 0x88, 0x61, 0xCC, 0x1B, 0x52, 0x4F, 0x91, 0xC5 } } } },
+ { kFMTownsVersionE, { 0x00000092, 0x0000334E, { { 0xC9, 0x02, 0xB5, 0xEF, 0x90, 0xA8, 0x9C, 0x6E, 0xAD, 0xD6, 0x1F, 0xCC, 0x71, 0x9F, 0x19, 0x2C } } } },
+ { kFMTownsVersionJ, { 0x000000A0, 0x00003EEB, { { 0x4B, 0x0C, 0xD5, 0xF0, 0xFE, 0x05, 0xF5, 0x09, 0x96, 0xA9, 0xE4, 0xDD, 0x86, 0x8D, 0x79, 0x3C } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kFluteStringsProvider[] = {
+ { -1, { 0x0000003C, 0x00001599, { { 0x96, 0x72, 0x5A, 0x8A, 0xA0, 0xEE, 0xA2, 0xCE, 0x4D, 0x21, 0x01, 0x6C, 0xC5, 0x1A, 0xEB, 0x21 } } } },
+ { -1, { 0x0000009C, 0x00002334, { { 0xA8, 0xA3, 0x1F, 0x0D, 0x36, 0x25, 0x19, 0x98, 0x50, 0xA0, 0x13, 0x65, 0xF4, 0xE8, 0x27, 0x19 } } } },
+ { -1, { 0x00000040, 0x000016F2, { { 0x70, 0xFF, 0x86, 0x73, 0x9E, 0x75, 0xDD, 0x17, 0x27, 0x86, 0x44, 0xE9, 0x78, 0x3D, 0x48, 0xDB } } } },
+ { -1, { 0x00000045, 0x000018EE, { { 0x3E, 0x3B, 0x20, 0x46, 0xEB, 0xB0, 0x88, 0x26, 0xB2, 0x0D, 0xD6, 0x8F, 0xF7, 0x53, 0x74, 0xAE } } } },
+ { -1, { 0x00000045, 0x00001726, { { 0x5A, 0xCF, 0x64, 0x4B, 0x61, 0x57, 0xEC, 0xB3, 0xBF, 0x32, 0x45, 0x51, 0x5D, 0x02, 0xC5, 0xB6 } } } },
+ { -1, { 0x0000004C, 0x00001BFB, { { 0x06, 0x4F, 0x6A, 0x37, 0x8B, 0x44, 0x27, 0x26, 0xCE, 0x28, 0xB2, 0x47, 0x71, 0xE2, 0x27, 0x73 } } } },
+ { -1, { 0x00000052, 0x00001D8E, { { 0x9D, 0xA5, 0xF1, 0x42, 0xD1, 0x48, 0xEB, 0x8F, 0x4B, 0xDC, 0xD9, 0x10, 0x55, 0xBD, 0x12, 0xBB } } } },
+ { kFMTownsVersionE, { 0x0000005A, 0x000024F9, { { 0xCA, 0x1F, 0x62, 0x23, 0x22, 0x25, 0x4A, 0x94, 0x8A, 0x50, 0x59, 0xD5, 0xB4, 0x4E, 0xF1, 0xA6 } } } },
+ { kFMTownsVersionJ, { 0x00000053, 0x00002745, { { 0x7A, 0xBB, 0xFC, 0x30, 0xB6, 0xCE, 0x61, 0xD4, 0xDB, 0xB0, 0xE6, 0xB2, 0xF4, 0x4D, 0x81, 0x35 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kFlaskFullStringProvider[] = {
+ { -1, { 0x0000001C, 0x000009C8, { { 0xA5, 0xC7, 0x5E, 0x6E, 0x02, 0xEE, 0x8C, 0xF8, 0xF0, 0xBF, 0x69, 0xB8, 0x05, 0x1E, 0xF5, 0x28 } } } },
+ { -1, { 0x0000001E, 0x00000A71, { { 0x11, 0x88, 0x37, 0x8E, 0x17, 0xF2, 0x82, 0x1E, 0x72, 0xF0, 0xA3, 0x2B, 0x4F, 0x76, 0x5F, 0xBA } } } },
+ { -1, { 0x0000001E, 0x00000AC7, { { 0x4E, 0x7A, 0xC8, 0xC5, 0xD4, 0xB8, 0xD0, 0x73, 0x66, 0x2B, 0x2A, 0x13, 0xDE, 0xE1, 0x32, 0xAA } } } },
+ { -1, { 0x0000001E, 0x00000973, { { 0xD3, 0x93, 0x3C, 0xA6, 0xF7, 0x79, 0xE6, 0x05, 0x49, 0x88, 0x89, 0xDE, 0xCA, 0x77, 0x2F, 0x1B } } } },
+ { -1, { 0x00000021, 0x00000C19, { { 0xC0, 0xFA, 0xD2, 0xB8, 0xCA, 0x94, 0x67, 0x10, 0x65, 0x01, 0x7F, 0xB0, 0x95, 0xC6, 0x0E, 0xFF } } } },
+ { -1, { 0x0000001B, 0x0000099D, { { 0x13, 0x23, 0x5D, 0x38, 0x9B, 0xFB, 0x00, 0x5C, 0xA1, 0x3A, 0x22, 0xD6, 0xCD, 0x5C, 0x09, 0xAE } } } },
+ { kFMTownsVersionE, { 0x0000001C, 0x000009C8, { { 0xA5, 0xC7, 0x5E, 0x6E, 0x02, 0xEE, 0x8C, 0xF8, 0xF0, 0xBF, 0x69, 0xB8, 0x05, 0x1E, 0xF5, 0x28 } } } },
+ { kFMTownsVersionJ, { 0x0000001F, 0x00001135, { { 0x90, 0x52, 0x4A, 0x95, 0xE4, 0x89, 0xD6, 0x0A, 0xE1, 0x2E, 0x98, 0x11, 0x02, 0xF5, 0x79, 0x37 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kFullFlaskStringProvider[] = {
+ { -1, { 0x0000009A, 0x00003521, { { 0x26, 0xE5, 0xC8, 0x6D, 0x14, 0x81, 0x9F, 0x90, 0x38, 0x3C, 0x00, 0x9D, 0x8E, 0x72, 0xB1, 0x83 } } } },
+ { -1, { 0x00000097, 0x00003521, { { 0x9C, 0x30, 0xC7, 0xC9, 0x97, 0xF3, 0x0E, 0xC4, 0x6E, 0xCA, 0x63, 0xC6, 0xD8, 0x06, 0xFF, 0x30 } } } },
+ { -1, { 0x000000AF, 0x00003E38, { { 0x66, 0x86, 0xAF, 0x1A, 0x2D, 0x33, 0x40, 0xE7, 0x96, 0x9B, 0x32, 0x26, 0xFF, 0x9F, 0x79, 0x8B } } } },
+ { -1, { 0x00000086, 0x00002E16, { { 0x94, 0x6C, 0x6D, 0xB6, 0x4C, 0x84, 0xBB, 0xF6, 0xC8, 0x50, 0x4C, 0x00, 0x38, 0xE3, 0x09, 0x5B } } } },
+ { -1, { 0x00000086, 0x00002CDB, { { 0xB1, 0xAE, 0x2A, 0x03, 0x28, 0xEC, 0x6D, 0x2F, 0xED, 0x71, 0xBE, 0x60, 0xCF, 0xAB, 0x8C, 0x00 } } } },
+ { -1, { 0x000000B5, 0x00004111, { { 0xA3, 0x4D, 0xA0, 0xF5, 0xE5, 0xD7, 0xFE, 0x11, 0xBB, 0x2C, 0xB5, 0xF2, 0xE0, 0x52, 0xF1, 0xF0 } } } },
+ { -1, { 0x0000009A, 0x0000363B, { { 0x38, 0x25, 0xE6, 0xB5, 0xCB, 0x78, 0x5E, 0xAD, 0x2D, 0xD4, 0x2E, 0x8B, 0x89, 0x20, 0xB1, 0x95 } } } },
+ { kFMTownsVersionE, { 0x0000009D, 0x00003521, { { 0xAB, 0x74, 0x71, 0x5C, 0x6E, 0x65, 0xF5, 0x5E, 0xB0, 0x6E, 0x0E, 0xC7, 0x56, 0xCB, 0x55, 0x98 } } } },
+ { kFMTownsVersionJ, { 0x0000007D, 0x000039CE, { { 0x9E, 0xBE, 0x13, 0x7F, 0x4D, 0x4B, 0xCB, 0x08, 0xC3, 0xE5, 0xF1, 0xC2, 0xD3, 0x69, 0x9E, 0xDF } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kVeryCleverStringProvider[] = {
+ { -1, { 0x00000032, 0x0000118D, { { 0x4B, 0x6D, 0xD4, 0xDC, 0x3E, 0xA2, 0x2D, 0x6D, 0x2C, 0x5A, 0xF7, 0x67, 0x4B, 0x6D, 0x40, 0xEF } } } },
+ { -1, { 0x00000043, 0x00001871, { { 0x33, 0x3F, 0xEA, 0x7F, 0x5F, 0x56, 0x98, 0xF3, 0x03, 0x8D, 0x3E, 0xAC, 0xA1, 0x62, 0x2A, 0xD7 } } } },
+ { -1, { 0x00000027, 0x00000DE1, { { 0x43, 0xC2, 0xC7, 0xD2, 0xA3, 0x70, 0x36, 0x38, 0xB5, 0x5B, 0x22, 0xEF, 0xBA, 0x0D, 0x37, 0x27 } } } },
+ { -1, { 0x00000027, 0x00000D01, { { 0x72, 0x7E, 0x88, 0xFB, 0xDA, 0xC0, 0x9E, 0x31, 0xAC, 0x32, 0xFD, 0x90, 0x7D, 0x01, 0x86, 0xD0 } } } },
+ { -1, { 0x00000038, 0x000013CF, { { 0x58, 0x7B, 0x59, 0x50, 0x84, 0xBB, 0x5B, 0x70, 0xDF, 0x76, 0x2F, 0xC3, 0x7E, 0xEC, 0x6A, 0x8B } } } },
+ { -1, { 0x00000036, 0x000013F8, { { 0x2D, 0x9B, 0x7D, 0x58, 0xD1, 0x94, 0x04, 0x45, 0x6E, 0x81, 0xCC, 0x1E, 0x2F, 0xC5, 0xC9, 0xEA } } } },
+ { kFMTownsVersionE, { 0x00000032, 0x0000118D, { { 0x4B, 0x6D, 0xD4, 0xDC, 0x3E, 0xA2, 0x2D, 0x6D, 0x2C, 0x5A, 0xF7, 0x67, 0x4B, 0x6D, 0x40, 0xEF } } } },
+ { kFMTownsVersionJ, { 0x0000002F, 0x00001BDF, { { 0x32, 0x2C, 0x60, 0x1E, 0xB7, 0xE0, 0xFE, 0x5F, 0xEA, 0xEF, 0xA4, 0x73, 0xAC, 0xCB, 0xBA, 0xFE } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kNewGameStringProvider[] = {
+ { -1, { 0x00000015, 0x0000052B, { { 0xAB, 0xD2, 0x16, 0x26, 0xC2, 0x86, 0xFA, 0xC8, 0x42, 0xCD, 0x16, 0xCD, 0x25, 0xB7, 0x44, 0xDC } } } },
+ { -1, { 0x0000001D, 0x0000076F, { { 0x5C, 0x84, 0x2A, 0xB1, 0x61, 0xDD, 0x7B, 0xB3, 0xD4, 0x6A, 0xD2, 0xEF, 0xA4, 0x5F, 0x81, 0xFE } } } },
+ { -1, { 0x0000001D, 0x0000079B, { { 0x2B, 0x5B, 0x54, 0x29, 0x76, 0x31, 0x5E, 0x89, 0xC2, 0xD1, 0xDB, 0x3B, 0xF0, 0xBC, 0xCD, 0x66 } } } },
+ { -1, { 0x0000001D, 0x000007BD, { { 0xF4, 0x5C, 0x50, 0x82, 0x91, 0x7E, 0x09, 0x52, 0x44, 0x95, 0xC2, 0x2E, 0xC9, 0x52, 0x12, 0x2B } } } },
+ { -1, { 0x0000001C, 0x0000075E, { { 0xC8, 0xCB, 0x35, 0x5E, 0x73, 0x09, 0xDB, 0xA1, 0xF1, 0x8D, 0x14, 0x54, 0x8D, 0xF7, 0xB1, 0xD3 } } } },
+ { -1, { 0x0000001B, 0x00000701, { { 0x2B, 0x87, 0xC3, 0x82, 0x68, 0xA5, 0xFC, 0xC5, 0x64, 0x9E, 0xAB, 0xD2, 0x8A, 0x07, 0x9C, 0x1E } } } },
+ { kFMTownsVersionE, { 0x00000015, 0x0000052B, { { 0xAB, 0xD2, 0x16, 0x26, 0xC2, 0x86, 0xFA, 0xC8, 0x42, 0xCD, 0x16, 0xCD, 0x25, 0xB7, 0x44, 0xDC } } } },
+ { kFMTownsVersionJ, { 0x0000001B, 0x00000EC8, { { 0x13, 0x9A, 0xBC, 0x8F, 0xE2, 0x4B, 0xD7, 0x0B, 0xC0, 0x81, 0x60, 0x10, 0xC2, 0xA6, 0x9C, 0xFA } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kDefaultShapesProvider[] = {
+ { -1, { 0x0000048A, 0x00012C0A, { { 0x90, 0x9E, 0x21, 0x9F, 0x90, 0x16, 0x1D, 0xA5, 0x57, 0xF8, 0x71, 0xE1, 0x15, 0x44, 0x29, 0x73 } } } },
+ { -1, { 0x000004F3, 0x00014AE4, { { 0x6E, 0x37, 0x81, 0x15, 0x4D, 0xDD, 0xBA, 0xA6, 0xE3, 0x5F, 0xB6, 0xC8, 0x20, 0xE9, 0xE0, 0x63 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kHealing1ShapesProvider[] = {
+ { -1, { 0x0000009A, 0x00002F17, { { 0x92, 0x2C, 0xF1, 0x5C, 0x8B, 0xCE, 0xEB, 0x0B, 0xE4, 0x07, 0x16, 0xAA, 0x25, 0x4F, 0x83, 0xEB } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kHealing2ShapesProvider[] = {
+ { -1, { 0x000000D2, 0x00004257, { { 0xAC, 0x35, 0xAA, 0x72, 0x50, 0x67, 0x58, 0xE4, 0x70, 0xB0, 0xBB, 0xCA, 0xA7, 0x4C, 0x91, 0x82 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPoisonDeathShapesProvider[] = {
+ { -1, { 0x0000008C, 0x00002E90, { { 0xBC, 0x44, 0xFB, 0x98, 0xE7, 0x42, 0xF6, 0xC8, 0x87, 0xDD, 0x00, 0x42, 0x85, 0xD8, 0x1E, 0x81 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kFluteShapesProvider[] = {
+ { -1, { 0x000000FC, 0x00004F0F, { { 0xB1, 0xF0, 0x56, 0x6E, 0xAB, 0x3C, 0x88, 0x13, 0x97, 0x7C, 0xCC, 0x61, 0x85, 0x8A, 0x28, 0x12 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kWinter1ShapesProvider[] = {
+ { -1, { 0x00000031, 0x00000E70, { { 0x3A, 0x15, 0x36, 0x51, 0x2F, 0xF8, 0xAF, 0xE6, 0x41, 0x71, 0x8D, 0x44, 0x99, 0x48, 0xB3, 0x4F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kWinter2ShapesProvider[] = {
+ { -1, { 0x000000F5, 0x00005192, { { 0xD3, 0x64, 0xAC, 0x64, 0x42, 0x9F, 0xB9, 0xCA, 0x0C, 0xC8, 0x97, 0x67, 0x8C, 0x92, 0xB4, 0x79 } } } },
+ { -1, { 0x000000F5, 0x000029E4, { { 0xF0, 0x7B, 0x05, 0xD8, 0xC1, 0x97, 0x27, 0x17, 0xFA, 0x32, 0xE9, 0x1A, 0x46, 0xA5, 0xEB, 0x84 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kWinter3ShapesProvider[] = {
+ { -1, { 0x0000001C, 0x00000A5E, { { 0x84, 0xDD, 0xC0, 0xEA, 0xE3, 0xBE, 0x98, 0x66, 0xE0, 0xA3, 0x4D, 0x00, 0x88, 0x31, 0x61, 0x1F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kDrinkShapesProvider[] = {
+ { -1, { 0x00000069, 0x00001EDA, { { 0x21, 0xFA, 0x2F, 0x41, 0x8F, 0x70, 0x3B, 0xBB, 0x93, 0x35, 0x49, 0xEC, 0x1C, 0xEE, 0xDD, 0xAC } } } },
+ { -1, { 0x0000006A, 0x00001EDA, { { 0xE2, 0xDA, 0xEC, 0x87, 0x4A, 0x27, 0xD8, 0xC1, 0x57, 0xE7, 0xD8, 0xD7, 0x87, 0x5F, 0x3A, 0xEB } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kWispShapesProvider[] = {
+ { -1, { 0x000000B6, 0x00003A53, { { 0x34, 0x52, 0x9D, 0x06, 0x4F, 0x1B, 0xCD, 0xB7, 0x30, 0xF7, 0xB4, 0x9F, 0x0F, 0x34, 0xDD, 0xF7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kMagicAnimShapesProvider[] = {
+ { -1, { 0x00000023, 0x00000A2D, { { 0x48, 0x8E, 0x2A, 0x61, 0x93, 0xCD, 0x58, 0x3B, 0x45, 0x62, 0xD9, 0x01, 0x8F, 0xBA, 0x2A, 0x1A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kBranStoneShapesProvider[] = {
+ { -1, { 0x0000006E, 0x00002026, { { 0x5A, 0xAF, 0x28, 0xF3, 0x0F, 0x82, 0x05, 0xB4, 0x33, 0x83, 0xCE, 0x56, 0xDB, 0xE7, 0x5C, 0xB4 } } } },
+ { -1, { 0x0000006E, 0x00001E41, { { 0x77, 0x99, 0x54, 0xED, 0x4C, 0x31, 0x08, 0x50, 0x41, 0x22, 0x6B, 0xED, 0x34, 0xF4, 0x17, 0xA1 } } } },
+ { -1, { 0x00000063, 0x00001E41, { { 0xDA, 0xA1, 0x93, 0x68, 0xBF, 0xB3, 0xBB, 0xD1, 0x2E, 0xF9, 0xB2, 0x25, 0x72, 0xD9, 0xA6, 0x00 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList1Provider[] = {
+ { -1, { 0x00000015, 0x0000024B, { { 0x6C, 0x6C, 0xE9, 0xB6, 0xC4, 0xC2, 0x29, 0xA5, 0xB6, 0xB3, 0x82, 0xB6, 0x03, 0x5B, 0x66, 0x7A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList2Provider[] = {
+ { -1, { 0x00000033, 0x00000470, { { 0x63, 0x02, 0x97, 0x7D, 0xBE, 0x97, 0x5E, 0x88, 0x2E, 0x50, 0x18, 0x6A, 0x4A, 0x61, 0x09, 0xA6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList3Provider[] = {
+ { -1, { 0x00000033, 0x0000042A, { { 0xF8, 0x32, 0x65, 0x55, 0x1C, 0xC5, 0x6E, 0x71, 0xC6, 0x6A, 0x8E, 0xC5, 0x3C, 0xBC, 0x1F, 0xA8 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList4Provider[] = {
+ { -1, { 0x00000033, 0x000003A4, { { 0xA1, 0xA6, 0x6F, 0x53, 0xA2, 0x1E, 0x27, 0x6F, 0x0D, 0xD0, 0x4F, 0xDC, 0x4C, 0xDC, 0xAE, 0x17 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList5Provider[] = {
+ { -1, { 0x00000033, 0x0000033D, { { 0x22, 0x02, 0xB3, 0xCD, 0x4E, 0xD5, 0x6E, 0x65, 0x2B, 0x38, 0x7D, 0x3E, 0x27, 0x03, 0x1A, 0x59 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList6Provider[] = {
+ { -1, { 0x00000033, 0x000001EA, { { 0xC7, 0xA7, 0x0E, 0xBA, 0x3F, 0x5E, 0xD3, 0x02, 0x99, 0x3B, 0x32, 0x00, 0x39, 0x3C, 0xD2, 0xAC } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList7Provider[] = {
+ { -1, { 0x00000036, 0x0000040C, { { 0x1A, 0x8E, 0x3E, 0x5F, 0x09, 0xFE, 0x4A, 0xF1, 0x5D, 0x2E, 0x2C, 0xD3, 0xFF, 0x75, 0x7D, 0x1C } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList8Provider[] = {
+ { -1, { 0x00000036, 0x000008E4, { { 0x55, 0xB4, 0xD3, 0xD1, 0x89, 0x49, 0xA5, 0x7E, 0x40, 0xF9, 0xFE, 0x6E, 0x16, 0xE8, 0xBD, 0xBB } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList9Provider[] = {
+ { -1, { 0x0000002D, 0x000001DB, { { 0x7A, 0x04, 0x16, 0xDD, 0x6A, 0xBA, 0x51, 0x9E, 0x24, 0x9E, 0xEA, 0x76, 0xD0, 0xFA, 0x92, 0xF4 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList10Provider[] = {
+ { -1, { 0x0000002D, 0x0000017A, { { 0xD2, 0x20, 0x1F, 0x12, 0xE1, 0x65, 0x68, 0xA7, 0x9C, 0x69, 0x8E, 0x99, 0xDF, 0xC5, 0xD2, 0x8E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList11Provider[] = {
+ { -1, { 0x0000002D, 0x00000136, { { 0xBF, 0x38, 0xB1, 0xFE, 0xBF, 0x25, 0xBC, 0xD3, 0xCC, 0x60, 0x40, 0x97, 0xB6, 0x4A, 0xC7, 0xB2 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList12Provider[] = {
+ { -1, { 0x0000002D, 0x00000102, { { 0x1C, 0x1E, 0x6A, 0x30, 0xE1, 0xD1, 0xF9, 0x3D, 0x9A, 0xF1, 0x84, 0xBD, 0x44, 0x07, 0x51, 0xEA } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList13Provider[] = {
+ { -1, { 0x0000002D, 0x00000000, { { 0x76, 0x22, 0x21, 0x4B, 0x85, 0x36, 0xAF, 0xE7, 0xB8, 0x9B, 0x1C, 0x66, 0x06, 0x06, 0x9B, 0x0D } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList14Provider[] = {
+ { -1, { 0x0000003C, 0x000003BF, { { 0x78, 0xE8, 0xA8, 0xF2, 0x4D, 0x54, 0x48, 0x47, 0xC9, 0xC1, 0x5B, 0x6C, 0x69, 0xCB, 0x65, 0xB6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList15Provider[] = {
+ { -1, { 0x0000002D, 0x000002DD, { { 0x9F, 0x66, 0x50, 0xAC, 0xED, 0x0C, 0x63, 0x20, 0xE9, 0x4E, 0x4D, 0x3D, 0xC4, 0xBC, 0x94, 0x8A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList16Provider[] = {
+ { -1, { 0x00000021, 0x0000036E, { { 0xA9, 0xDB, 0x1C, 0x35, 0xED, 0xED, 0xE4, 0x40, 0x68, 0x29, 0xB1, 0x6E, 0x60, 0xE4, 0xB0, 0xDB } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList17Provider[] = {
+ { -1, { 0x00000021, 0x000004D7, { { 0xC0, 0xB5, 0x7B, 0x94, 0xED, 0xD7, 0x48, 0x66, 0x37, 0x54, 0xE8, 0xFC, 0x0F, 0xA5, 0x54, 0x8A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList18Provider[] = {
+ { -1, { 0x00000015, 0x000002FD, { { 0x0A, 0xDD, 0x81, 0xA8, 0x89, 0xD2, 0x53, 0x05, 0x25, 0xCC, 0x2B, 0x8B, 0x48, 0x1D, 0xAB, 0x0A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList19Provider[] = {
+ { -1, { 0x00000015, 0x00000134, { { 0xCB, 0x0F, 0xA9, 0xD2, 0xD8, 0xEA, 0x2A, 0x1F, 0x16, 0x7B, 0x90, 0xE5, 0x72, 0xB3, 0x52, 0x50 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList20Provider[] = {
+ { -1, { 0x00000015, 0x00000396, { { 0x3B, 0xD8, 0xA5, 0xC5, 0x66, 0x3E, 0xC7, 0x88, 0xD0, 0x3B, 0x42, 0x29, 0x84, 0x58, 0xA7, 0x00 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList21Provider[] = {
+ { -1, { 0x00000015, 0x00000134, { { 0x96, 0x70, 0x7D, 0x5B, 0xC4, 0xBA, 0x89, 0x89, 0xC9, 0x42, 0xF4, 0x70, 0x33, 0xF5, 0xE8, 0x02 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList22Provider[] = {
+ { -1, { 0x00000015, 0x00000376, { { 0xA2, 0x92, 0x28, 0x65, 0xAB, 0xCC, 0x16, 0xE8, 0xA5, 0x72, 0x2F, 0x00, 0x66, 0x8F, 0x8D, 0x96 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList23Provider[] = {
+ { -1, { 0x00000015, 0x000002C2, { { 0x5C, 0x78, 0x74, 0x81, 0x76, 0xB5, 0x26, 0x8E, 0x20, 0xAE, 0x50, 0xCD, 0x2B, 0x9E, 0x81, 0x8B } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList24Provider[] = {
+ { -1, { 0x00000030, 0x00000472, { { 0xC6, 0xF0, 0xA6, 0x33, 0x7E, 0xAE, 0xBC, 0xF9, 0xAE, 0xE2, 0xF4, 0x7B, 0x71, 0x44, 0x50, 0xEF } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList25Provider[] = {
+ { -1, { 0x00000030, 0x000004CD, { { 0x57, 0x03, 0xB5, 0x27, 0x64, 0x48, 0xBF, 0x6A, 0x0F, 0xC2, 0xC0, 0x4A, 0x73, 0x9A, 0xFE, 0xB3 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList26Provider[] = {
+ { -1, { 0x00000030, 0x000004CA, { { 0xF8, 0x39, 0x8D, 0x6F, 0x8D, 0x9C, 0x6E, 0x0A, 0x33, 0xE8, 0xF2, 0xA6, 0xF6, 0x40, 0x70, 0xE5 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList27Provider[] = {
+ { -1, { 0x00000030, 0x000004D9, { { 0xF6, 0xD4, 0x88, 0x57, 0x6F, 0x1A, 0xA3, 0x1F, 0x6B, 0x17, 0x4D, 0xA0, 0x9E, 0xD8, 0x09, 0x66 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList28Provider[] = {
+ { -1, { 0x00000030, 0x0000051D, { { 0x59, 0x02, 0xE3, 0xC6, 0x28, 0xF6, 0xBC, 0xD4, 0xC8, 0x7E, 0x58, 0x6F, 0xE4, 0xA2, 0x28, 0x4F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList29Provider[] = {
+ { -1, { 0x00000030, 0x00000534, { { 0xC2, 0x26, 0x94, 0x47, 0x28, 0x11, 0xAA, 0xE6, 0x10, 0xA2, 0xD4, 0xD9, 0x61, 0x57, 0x62, 0x22 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList30Provider[] = {
+ { -1, { 0x0000003C, 0x00000453, { { 0xE1, 0x30, 0xC2, 0xCD, 0x79, 0xD8, 0x36, 0x8D, 0xAC, 0xF7, 0x87, 0x05, 0x49, 0xD7, 0x7A, 0x5F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList31Provider[] = {
+ { -1, { 0x00000027, 0x000002FB, { { 0xA6, 0x65, 0xE1, 0xE1, 0xCC, 0x71, 0x83, 0x63, 0x9A, 0x04, 0xE2, 0x00, 0xBF, 0x90, 0xDF, 0x95 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList32Provider[] = {
+ { -1, { 0x00000027, 0x0000016C, { { 0xAA, 0x88, 0x97, 0xE3, 0xCA, 0x06, 0x11, 0x07, 0x8F, 0xFA, 0x75, 0x26, 0xA8, 0x7A, 0x49, 0x28 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kPaletteList33Provider[] = {
+ { -1, { 0x0000003C, 0x0000094C, { { 0x2E, 0x5E, 0x34, 0x3E, 0x99, 0x61, 0x6F, 0x88, 0x91, 0xA7, 0x75, 0xAA, 0x42, 0x4B, 0x1F, 0x5D } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kGUIStringsProvider[] = {
+ { -1, { 0x000001DF, 0x00009042, { { 0x0D, 0xD3, 0x1A, 0x92, 0x8D, 0x9C, 0x72, 0x55, 0xEF, 0xFB, 0x81, 0x21, 0x3B, 0x43, 0xA7, 0xE8 } } } },
+ { -1, { 0x00000209, 0x00009788, { { 0xDD, 0xA0, 0x5C, 0x30, 0x60, 0x68, 0xDC, 0x24, 0xBE, 0x3F, 0xA2, 0x31, 0xE0, 0x81, 0x6C, 0xCA } } } },
+ { -1, { 0x00000261, 0x0000C538, { { 0xF3, 0xED, 0x5E, 0x73, 0x6F, 0x6E, 0x06, 0xF8, 0x48, 0xF8, 0x30, 0x69, 0x34, 0x5D, 0x99, 0x0C } } } },
+ { -1, { 0x0000025D, 0x0000CBDC, { { 0x36, 0xF0, 0x92, 0x9C, 0x5F, 0xFF, 0x5D, 0x65, 0x5F, 0x0B, 0xC0, 0x72, 0x9F, 0x30, 0x47, 0xAB } } } },
+ { -1, { 0x0000025D, 0x0000AFD0, { { 0x8E, 0x97, 0xA9, 0x55, 0x16, 0xF7, 0x42, 0x83, 0xA3, 0x68, 0x2F, 0xD6, 0x37, 0x1C, 0x9A, 0xD1 } } } },
+ { -1, { 0x000001B0, 0x00009562, { { 0x78, 0xB0, 0x81, 0x15, 0x96, 0x09, 0x1E, 0x6C, 0x20, 0x7B, 0xF7, 0xB1, 0x29, 0x2A, 0x3D, 0xE4 } } } },
+ { -1, { 0x00000236, 0x0000BA9C, { { 0xEB, 0xA6, 0x90, 0x9D, 0x99, 0x4B, 0x4F, 0xD9, 0xCE, 0xFF, 0x44, 0x3F, 0x77, 0x6F, 0xE1, 0x71 } } } },
+ { -1, { 0x00000234, 0x0000C262, { { 0x08, 0x83, 0x32, 0x4E, 0x48, 0xEC, 0x83, 0x4B, 0x1B, 0x82, 0x58, 0x48, 0xA3, 0x30, 0x05, 0x33 } } } },
+ { -1, { 0x00000225, 0x0000B0E1, { { 0x57, 0xE2, 0x39, 0xA8, 0xF5, 0x70, 0x48, 0xB4, 0x3D, 0xD4, 0x2A, 0x8C, 0x7C, 0x76, 0xB7, 0x8D } } } },
+ { -1, { 0x0000023A, 0x0000C3BD, { { 0xED, 0x0D, 0xE7, 0x5B, 0xDC, 0x21, 0x41, 0x54, 0x68, 0x7D, 0x8E, 0x97, 0x1A, 0xB1, 0xA1, 0x4A } } } },
+ { kFMTownsVersionE, { 0x000001FC, 0x00009D9A, { { 0xE8, 0x39, 0x46, 0x0A, 0x41, 0xC3, 0xDC, 0x33, 0x6E, 0xC5, 0x5D, 0x99, 0xCC, 0xF6, 0xDD, 0xCC } } } },
+ { kFMTownsVersionJ, { 0x0000025F, 0x0000E56A, { { 0x77, 0x9A, 0x02, 0x52, 0xED, 0x62, 0x23, 0x5A, 0x58, 0x78, 0x19, 0x52, 0x03, 0xD7, 0x88, 0x40 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kConfigStringsProvider[] = {
+ { -1, { 0x0000002E, 0x00000FA1, { { 0x5E, 0xFF, 0xFF, 0x3D, 0xF8, 0x11, 0x6F, 0x3B, 0xC5, 0x39, 0x8F, 0x25, 0x8F, 0x0F, 0xE9, 0x2B } } } },
+ { -1, { 0x00000061, 0x00002249, { { 0x5D, 0xE2, 0x05, 0xA7, 0xEC, 0x0A, 0x73, 0xF5, 0x01, 0x5B, 0x64, 0x71, 0x83, 0xEC, 0x56, 0x24 } } } },
+ { -1, { 0x00000082, 0x00002E94, { { 0xC5, 0xDC, 0x44, 0x6C, 0x4B, 0x3E, 0x4E, 0x27, 0x0C, 0xCC, 0x65, 0x6C, 0x20, 0x8D, 0x71, 0x07 } } } },
+ { -1, { 0x0000007A, 0x00002C37, { { 0x9E, 0xD8, 0x85, 0xB4, 0x9D, 0x32, 0x9D, 0x80, 0x58, 0xE4, 0x08, 0xC7, 0x75, 0xD2, 0x9C, 0x1E } } } },
+ { -1, { 0x0000007A, 0x00002904, { { 0xD3, 0xD2, 0x96, 0x6E, 0xE7, 0xE8, 0x64, 0x77, 0x73, 0xCD, 0xC2, 0x9E, 0x57, 0xB5, 0xD3, 0xCD } } } },
+ { -1, { 0x0000003F, 0x000016E9, { { 0x4F, 0x19, 0x60, 0x67, 0xA8, 0x31, 0x0B, 0xD5, 0x3D, 0x06, 0x39, 0xF1, 0x42, 0xB0, 0xFD, 0x5C } } } },
+ { -1, { 0x0000005E, 0x00002280, { { 0xC7, 0xD2, 0x22, 0xB5, 0xD3, 0xBC, 0x7A, 0x97, 0x26, 0x04, 0x07, 0x78, 0xAA, 0xAB, 0x1D, 0x5C } } } },
+ { -1, { 0x0000004B, 0x00001AE8, { { 0xE3, 0xC9, 0x0F, 0x54, 0x48, 0x31, 0x6E, 0x5F, 0x51, 0x8E, 0xF8, 0xE6, 0xAC, 0x16, 0xAC, 0x1C } } } },
+ { -1, { 0x00000054, 0x00001E98, { { 0x10, 0x6B, 0x6B, 0x9B, 0x91, 0x05, 0xE9, 0x30, 0xE2, 0x75, 0xE2, 0x45, 0x79, 0x17, 0x73, 0xC9 } } } },
+ { -1, { 0x0000004A, 0x00001B7B, { { 0x6B, 0x69, 0x50, 0x92, 0x9B, 0x35, 0x58, 0xE1, 0xEA, 0xBF, 0x42, 0x0B, 0xEB, 0x88, 0x41, 0x8D } } } },
+ { kFMTownsVersionE, { 0x0000004A, 0x000016E9, { { 0x37, 0x12, 0xAD, 0x4C, 0xB8, 0x2C, 0xF5, 0x75, 0x20, 0x74, 0xA0, 0xFD, 0x58, 0xB1, 0x71, 0x77 } } } },
+ { kFMTownsVersionJ, { 0x00000057, 0x00002262, { { 0xC5, 0x9A, 0x4A, 0xE3, 0xDF, 0xD3, 0x0E, 0x8E, 0xBB, 0xAF, 0x75, 0xD3, 0x67, 0xB1, 0xF6, 0x08 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kKyra1TownsSFXwdTableProvider[] = {
+ { -1, { 0x00012608, 0x006717A1, { { 0x34, 0xDD, 0x2D, 0xA5, 0x14, 0x05, 0xEE, 0x2F, 0x93, 0x7C, 0x78, 0x4D, 0xCA, 0x13, 0xED, 0x93 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kKyra1TownsSFXbtTableProvider[] = {
+ { -1, { 0x00000100, 0x00007FFE, { { 0xEF, 0x3D, 0x9F, 0x31, 0xE7, 0x19, 0x1E, 0x4F, 0xF3, 0x66, 0x42, 0xC8, 0x0D, 0x89, 0x96, 0x20 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kKyra1TownsCDATableProvider[] = {
+ { -1, { 0x000002C4, 0x0000C5ED, { { 0x76, 0x86, 0x77, 0xF9, 0x85, 0x23, 0x32, 0x56, 0x3C, 0x06, 0x03, 0xCF, 0x0C, 0x49, 0x94, 0xB5 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kCreditsStringsProvider[] = {
+ { -1, { 0x000004CC, 0x000182F7, { { 0x7D, 0x14, 0xA6, 0xEC, 0x12, 0x67, 0xAC, 0xA7, 0x7B, 0xF8, 0x44, 0x19, 0x52, 0xCC, 0x3A, 0x65 } } } },
+ { -1, { 0x0000058C, 0x0001AD16, { { 0xFC, 0x1B, 0xE6, 0xEB, 0x03, 0x1C, 0x54, 0x93, 0x64, 0x53, 0xB1, 0x17, 0x9D, 0x95, 0x1B, 0x4A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kAmigaIntroSFXTableProvider[] = {
+ { -1, { 0x00000140, 0x00000D82, { { 0x61, 0xF6, 0x8F, 0xE5, 0xCD, 0x15, 0x58, 0x9F, 0xDF, 0x0E, 0x22, 0xAA, 0x9A, 0xCF, 0xC4, 0xA6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kAmigaGameSFXTableProvider[] = {
+ { -1, { 0x000003C0, 0x00005505, { { 0x8D, 0x6D, 0x2C, 0x58, 0x50, 0xF7, 0xBF, 0x60, 0xC3, 0x15, 0x20, 0x23, 0x1F, 0x90, 0x3E, 0xD6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayPakFilesProvider[] = {
+ { -1, { 0x00000046, 0x0000121A, { { 0x42, 0xC2, 0x5A, 0xDC, 0x27, 0x2D, 0xB4, 0x44, 0x85, 0x58, 0x0F, 0xB6, 0x6D, 0x76, 0x04, 0x4F } } } },
+ { -1, { 0x00000014, 0x000004FA, { { 0xBB, 0x4C, 0x16, 0xEB, 0x56, 0xEF, 0xAC, 0x68, 0x6B, 0x49, 0x96, 0x3A, 0x9F, 0x00, 0x75, 0xF6 } } } },
+ { -1, { 0x00000022, 0x000008E0, { { 0xB7, 0x3B, 0x51, 0x46, 0x78, 0x2D, 0x4D, 0x82, 0xD4, 0x30, 0xFC, 0x6E, 0xC4, 0x5B, 0x27, 0x3E } } } },
+ { -1, { 0x0000002E, 0x00000C09, { { 0x6A, 0x25, 0xF6, 0x03, 0xA6, 0x88, 0xA0, 0x53, 0xE1, 0xF4, 0xB9, 0x0C, 0x71, 0x17, 0x36, 0x6B } } } },
+ { -1, { 0x00000033, 0x00000BBD, { { 0x92, 0x5B, 0xDA, 0xE3, 0x7C, 0x39, 0xC4, 0x75, 0x24, 0xBA, 0x67, 0x27, 0x6E, 0x21, 0xA3, 0xF7 } } } },
+ { -1, { 0x0000000C, 0x00000308, { { 0xC0, 0xAC, 0x10, 0xF1, 0x12, 0xD1, 0x21, 0x92, 0xA1, 0x62, 0x5B, 0x6E, 0xCF, 0x88, 0x32, 0x7C } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayStringsProvider[] = {
+ { k2CDFile1E, { 0x00000916, 0x00031417, { { 0x3E, 0x15, 0xDA, 0xF4, 0x77, 0x44, 0x80, 0x47, 0xDB, 0x32, 0x0E, 0x6D, 0xCA, 0x32, 0x65, 0x1B } } } },
+ { k2CDFile1F, { 0x000009C9, 0x00036324, { { 0x2C, 0xC2, 0xD9, 0xCF, 0x90, 0x2A, 0xDF, 0xE9, 0x85, 0x9E, 0x5D, 0xBB, 0x1D, 0x9A, 0x14, 0x69 } } } },
+ { k2CDFile1G, { 0x00000A3F, 0x000389F4, { { 0x51, 0xC1, 0x87, 0x16, 0x53, 0x8C, 0x68, 0x8E, 0x9B, 0x81, 0xA1, 0xD2, 0xCE, 0x5F, 0x83, 0x31 } } } },
+ { k2CDFile1I, { 0x00000916, 0x0003188F, { { 0xDC, 0x46, 0x06, 0xE1, 0xB0, 0x66, 0xBC, 0x18, 0x2E, 0x6E, 0x9E, 0xC9, 0xA4, 0x14, 0x8D, 0x08 } } } },
+ { -1, { 0x000008C8, 0x0002FDE3, { { 0x62, 0xD1, 0x6F, 0xBC, 0xEC, 0xE6, 0xCF, 0xE8, 0xD8, 0xE9, 0xDE, 0xFB, 0x09, 0xAF, 0x34, 0x92 } } } },
+ { -1, { 0x000009EC, 0x000370F9, { { 0x56, 0x94, 0xCC, 0xE5, 0x38, 0x19, 0xAD, 0xD1, 0xBB, 0x6A, 0x6E, 0xEC, 0xC5, 0x1B, 0x57, 0x7B } } } },
+ { -1, { 0x00000995, 0x000352D7, { { 0xED, 0x7C, 0x49, 0x7B, 0x1A, 0x2C, 0x73, 0x61, 0x73, 0xAF, 0x16, 0x89, 0x1E, 0x01, 0xE2, 0xAE } } } },
+ { -1, { 0x000008C8, 0x00030947, { { 0x7F, 0x75, 0x5F, 0x99, 0x94, 0xFE, 0xA1, 0xE6, 0xEF, 0xB8, 0x93, 0x71, 0x83, 0x1B, 0xAC, 0x4A } } } },
+ { k2TownsFile1E, { 0x00000990, 0x00030C61, { { 0x60, 0x51, 0x11, 0x83, 0x3F, 0x06, 0xC3, 0xA3, 0xE0, 0xC0, 0x2F, 0x41, 0x29, 0xDE, 0x65, 0xB1 } } } },
+ { k2TownsFile1J, { 0x000008A8, 0x00036831, { { 0x56, 0x5B, 0x23, 0x61, 0xE8, 0x3B, 0xE1, 0x36, 0xD6, 0x62, 0xD0, 0x84, 0x00, 0x04, 0x05, 0xAD } } } },
+ { -1, { 0x00000102, 0x00005BD6, { { 0xB3, 0x00, 0xE5, 0x39, 0x02, 0x3D, 0xBF, 0xDD, 0x54, 0x70, 0xEA, 0xC1, 0xCB, 0xAC, 0xAA, 0xF7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplaySfxFilesProvider[] = {
+ { -1, { 0x00000234, 0x0000B0B2, { { 0xE4, 0x19, 0x4F, 0x8C, 0x53, 0xFD, 0x5F, 0x2A, 0xFB, 0x77, 0x1C, 0x32, 0xB3, 0x39, 0x25, 0x85 } } } },
+ { -1, { 0x000000DE, 0x00004EA4, { { 0x97, 0xA8, 0x4A, 0xED, 0x12, 0x87, 0xEB, 0x82, 0x42, 0xFA, 0x45, 0x0D, 0x45, 0x8F, 0xFE, 0x76 } } } },
+ { -1, { 0x00000173, 0x00008198, { { 0x2D, 0xF5, 0x5C, 0xAE, 0xDB, 0x71, 0x60, 0xFE, 0x78, 0x04, 0xFC, 0xAD, 0x4B, 0x43, 0xB1, 0x4B } } } },
+ { -1, { 0x000001A3, 0x00008098, { { 0xA9, 0xD2, 0xE2, 0x32, 0x59, 0xC4, 0x97, 0x74, 0x11, 0x49, 0x8F, 0x2B, 0xBF, 0x00, 0xF9, 0xF1 } } } },
+ { -1, { 0x000000C5, 0x00004508, { { 0xBF, 0xA9, 0x1A, 0x37, 0x0B, 0xF8, 0x13, 0x9D, 0x2D, 0x67, 0x3D, 0x9B, 0xE9, 0x16, 0x07, 0x0C } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayTlkFilesProvider[] = {
+ { k2CDFile1E, { 0x0000009D, 0x0000286B, { { 0x58, 0x30, 0x72, 0x62, 0xC8, 0x77, 0x2A, 0x06, 0xD6, 0x24, 0x1A, 0x7A, 0xAF, 0x79, 0xFF, 0xAE } } } },
+ { k2CDFile1F, { 0x0000009D, 0x00002878, { { 0x28, 0x5D, 0x7F, 0x5B, 0x57, 0xC2, 0xFF, 0x73, 0xC1, 0x8E, 0xD6, 0xE0, 0x4D, 0x03, 0x99, 0x2C } } } },
+ { k2CDFile1G, { 0x0000009D, 0x00002885, { { 0x87, 0x24, 0xB6, 0xE9, 0xD6, 0xAA, 0x68, 0x2D, 0x6B, 0x05, 0xDF, 0xE1, 0x2B, 0xA4, 0x79, 0xE5 } } } },
+ { k2CDFile1I, { 0x0000009D, 0x0000286B, { { 0x58, 0x30, 0x72, 0x62, 0xC8, 0x77, 0x2A, 0x06, 0xD6, 0x24, 0x1A, 0x7A, 0xAF, 0x79, 0xFF, 0xAE } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplaySeqDataProvider[] = {
+ { -1, { 0x000006BE, 0x0000E9FF, { { 0x9A, 0xCD, 0x40, 0x44, 0xEF, 0x9F, 0x05, 0x86, 0xDA, 0x49, 0x8A, 0x85, 0x68, 0xDF, 0xA7, 0x55 } } } },
+ { -1, { 0x0000027C, 0x00007742, { { 0x42, 0x37, 0xF8, 0xDD, 0xA2, 0x8C, 0xA6, 0x26, 0x89, 0x5F, 0xCF, 0x61, 0xDD, 0x8F, 0xC7, 0x1E } } } },
+ { -1, { 0x000006F4, 0x0000F5AD, { { 0x23, 0x1E, 0x30, 0xF0, 0xF1, 0x5B, 0xFF, 0x4B, 0xDF, 0xB1, 0x78, 0xD8, 0x48, 0x7A, 0xA3, 0xDD } } } },
+ { -1, { 0x000006F4, 0x0000F8A6, { { 0x8B, 0xF3, 0x80, 0xE1, 0xB8, 0xCA, 0xE1, 0x18, 0x72, 0xA3, 0xF0, 0x4C, 0xBF, 0x81, 0x97, 0x71 } } } },
+ { -1, { 0x0000039E, 0x00009F90, { { 0x86, 0x54, 0xEF, 0xDC, 0xBB, 0x0B, 0x5C, 0x8B, 0x36, 0x37, 0xD2, 0x89, 0xD1, 0xDB, 0x36, 0xC8 } } } },
+ { -1, { 0x000006F4, 0x0000FA35, { { 0x4C, 0x26, 0x1B, 0xF6, 0x8E, 0x73, 0xB7, 0xD2, 0x58, 0x59, 0xB8, 0x97, 0x58, 0xFB, 0x0E, 0x2A } } } },
+ { -1, { 0x000006BC, 0x0000DCE3, { { 0x27, 0x09, 0x22, 0xDC, 0xED, 0xDE, 0x88, 0xAE, 0xDB, 0x97, 0x52, 0x12, 0x96, 0x8D, 0x8D, 0x37 } } } },
+ { -1, { 0x0000024C, 0x00004C10, { { 0x21, 0x3A, 0x86, 0x60, 0xA8, 0xFF, 0x42, 0x19, 0x35, 0x32, 0xA5, 0xB9, 0x3A, 0xDD, 0xA9, 0xC7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayCreditsProvider[] = {
+ { -1, { 0x00000AE8, 0x0002E520, { { 0x19, 0x59, 0xEA, 0x70, 0x23, 0xE2, 0x41, 0x78, 0x2D, 0xF5, 0xE6, 0x28, 0xEA, 0x0C, 0xCF, 0x79 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayCreditsSpecialProvider[] = {
+ { -1, { 0x0000001A, 0x00000829, { { 0xDF, 0x31, 0x0F, 0xB9, 0xC9, 0xC4, 0xF2, 0xB5, 0xF7, 0x98, 0x6F, 0x44, 0x4E, 0x9C, 0xFE, 0xA7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayIntroTracksProvider[] = {
+ { -1, { 0x00000008, 0x000002C9, { { 0xFA, 0x80, 0x3C, 0x78, 0x66, 0x2C, 0xD5, 0x91, 0x5D, 0xF1, 0xE9, 0xC1, 0x6A, 0x65, 0xEB, 0xD6 } } } },
+ { -1, { 0x00000010, 0x00000542, { { 0xE5, 0xAA, 0x6A, 0xB9, 0x19, 0xAB, 0x35, 0x26, 0x43, 0x70, 0x32, 0xEF, 0xB9, 0x7F, 0x0F, 0x19 } } } },
+ { -1, { 0x00000010, 0x00000592, { { 0xDE, 0xD9, 0x5E, 0xCA, 0x5A, 0x9F, 0x8B, 0xB1, 0xE2, 0xDB, 0xA4, 0xA1, 0xAF, 0xD4, 0x75, 0x46 } } } },
+ { -1, { 0x00000000, 0x00000000, { { 0xD4, 0x1D, 0x8C, 0xD9, 0x8F, 0x00, 0xB2, 0x04, 0xE9, 0x80, 0x09, 0x98, 0xEC, 0xF8, 0x42, 0x7E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayFinaleTracksProvider[] = {
+ { -1, { 0x00000009, 0x0000030C, { { 0x24, 0x3F, 0x57, 0xFA, 0x7E, 0x6D, 0x61, 0x6C, 0x53, 0xBC, 0x44, 0x38, 0x61, 0xE9, 0x3E, 0xE6 } } } },
+ { -1, { 0x00000012, 0x00000618, { { 0x22, 0x61, 0x4D, 0x6F, 0xCE, 0x38, 0x64, 0xAB, 0x20, 0xD8, 0x34, 0x33, 0x44, 0x21, 0xE0, 0x23 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayIntroCDAProvider[] = {
+ { -1, { 0x00000018, 0x00000036, { { 0xCE, 0x10, 0x68, 0x7E, 0x84, 0x68, 0x3A, 0x23, 0x36, 0x41, 0x07, 0xE8, 0x59, 0xDB, 0xA3, 0x31 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayFinaleCDAProvider[] = {
+ { -1, { 0x00000008, 0x000000AE, { { 0x38, 0x47, 0x35, 0xAA, 0xEC, 0xBA, 0xD3, 0xD0, 0x3E, 0x17, 0xFD, 0xB8, 0x9F, 0xB9, 0xAD, 0x61 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2SeqplayShapeAnimDataProvider[] = {
+ { -1, { 0x000000B8, 0x00000270, { { 0xBD, 0x3B, 0xFA, 0xE6, 0xA0, 0x40, 0x4E, 0x6E, 0x3E, 0x43, 0x81, 0xF3, 0x35, 0x57, 0x62, 0x27 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngamePakFilesProvider[] = {
+ { -1, { 0x0000049F, 0x00012F40, { { 0x4B, 0x2A, 0x84, 0xE3, 0xA5, 0x34, 0xE9, 0xB3, 0xB7, 0x39, 0xF1, 0x1B, 0x4C, 0xE6, 0x43, 0x79 } } } },
+ { -1, { 0x0000007E, 0x00001E45, { { 0xC6, 0x52, 0xCC, 0x1A, 0x23, 0x3B, 0xDA, 0x03, 0xF3, 0xC2, 0x46, 0xDF, 0x01, 0xA3, 0x9E, 0x50 } } } },
+ { -1, { 0x0000011C, 0x00003FB8, { { 0x66, 0x34, 0xE8, 0x1C, 0xF9, 0xFF, 0x84, 0x90, 0x20, 0x71, 0x42, 0xA3, 0x2C, 0x4A, 0xE9, 0x46 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameSfxFilesProvider[] = {
+ { -1, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameSfxFilesTnsProvider[] = {
+ { -1, { 0x00000967, 0x0002101A, { { 0x09, 0xC7, 0xB7, 0x2A, 0x76, 0xF1, 0x4B, 0x87, 0xC5, 0x83, 0xFF, 0xF3, 0xDB, 0x3C, 0x66, 0x60 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameSfxIndexProvider[] = {
+ { -1, { 0x00000358, 0x000074F4, { { 0xC8, 0x30, 0x1D, 0x9C, 0xFC, 0xF8, 0xD5, 0xBA, 0x7E, 0xAB, 0x13, 0x3F, 0x43, 0x50, 0xFA, 0xC4 } } } },
+ { -1, { 0x00000358, 0x0000747E, { { 0x20, 0x99, 0x4D, 0xB8, 0xF2, 0x05, 0xF2, 0xA7, 0x07, 0x28, 0x97, 0xFB, 0x70, 0x1F, 0x2A, 0x73 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameTracksProvider[] = {
+ { -1, { 0x0000007E, 0x00001E45, { { 0xC6, 0x52, 0xCC, 0x1A, 0x23, 0x3B, 0xDA, 0x03, 0xF3, 0xC2, 0x46, 0xDF, 0x01, 0xA3, 0x9E, 0x50 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameCDAProvider[] = {
+ { -1, { 0x00000130, 0x00001B9D, { { 0x9E, 0xFB, 0x01, 0xE7, 0xBA, 0xE1, 0x4F, 0x3C, 0xC5, 0xB9, 0x75, 0x80, 0xEA, 0xAC, 0xB0, 0x0F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameTalkObjIndexProvider[] = {
+ { -1, { 0x00000084, 0x00000CD0, { { 0x82, 0x2E, 0xF4, 0xDD, 0x28, 0x75, 0xDD, 0x79, 0x78, 0x62, 0x55, 0x48, 0xDD, 0xF7, 0x16, 0x81 } } } },
+ { -1, { 0x00000078, 0x00000A9C, { { 0x27, 0x65, 0xFA, 0xB1, 0xF8, 0x04, 0x7F, 0x93, 0x2B, 0x2D, 0x44, 0x3C, 0x95, 0x13, 0x50, 0xD2 } } } },
+ { -1, { 0x00000078, 0x00000A53, { { 0x18, 0x5B, 0x79, 0x92, 0x54, 0xDB, 0x4B, 0x0C, 0x78, 0x89, 0x7C, 0x59, 0xBF, 0x53, 0x37, 0x14 } } } },
+ { -1, { 0x00000078, 0x00000A7C, { { 0x33, 0x89, 0x69, 0xEF, 0x62, 0x94, 0x3A, 0xC0, 0xB2, 0xBA, 0xFB, 0x0C, 0x86, 0x2C, 0xAC, 0x5C } } } },
+ { -1, { 0x0000007A, 0x00000744, { { 0x74, 0x84, 0xB4, 0xA6, 0x9D, 0x91, 0xBF, 0x24, 0x1E, 0xD5, 0xDE, 0xD4, 0x73, 0x93, 0x1F, 0xE6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameTimJpStringsProvider[] = {
+ { -1, { 0x0000002D, 0x00001302, { { 0x15, 0x29, 0xFD, 0xB1, 0xEB, 0xC0, 0x00, 0xA4, 0x19, 0xDA, 0xC7, 0x2E, 0x17, 0x0F, 0x3F, 0xB7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameItemAnimDataProvider[] = {
+ { -1, { 0x00000348, 0x0001AAEB, { { 0x67, 0xD1, 0x03, 0xBF, 0x4B, 0xEC, 0x80, 0x26, 0x5D, 0x1D, 0x0E, 0x5B, 0xF1, 0xE8, 0x4C, 0x64 } } } },
+ { -1, { 0x00000348, 0x00002473, { { 0xBC, 0x18, 0x51, 0xFA, 0x51, 0x1D, 0x24, 0x7D, 0x44, 0xD0, 0xE2, 0x38, 0x31, 0x33, 0x3B, 0x56 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k2IngameTlkDemoStringsProvider[] = {
+ { k2CDDemoE, { 0x000000CB, 0x00004741, { { 0xF3, 0x54, 0x37, 0xEE, 0x61, 0x9E, 0xE0, 0x82, 0x64, 0x8B, 0xF3, 0x53, 0xC7, 0x2F, 0x49, 0x1F } } } },
+ { k2CDDemoF, { 0x000000BE, 0x00004327, { { 0x8C, 0xF2, 0x5E, 0x85, 0xDA, 0xA1, 0x91, 0x90, 0xE5, 0xC7, 0x2A, 0xBA, 0x48, 0xC3, 0x9A, 0xCA } } } },
+ { k2CDDemoG, { 0x000000DC, 0x00004C7B, { { 0xC9, 0x75, 0x3A, 0x4A, 0xF4, 0xB0, 0xE8, 0x61, 0x90, 0x74, 0x34, 0x84, 0x53, 0x54, 0xA2, 0x4F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3MainMenuStringsProvider[] = {
+ { -1, { 0x000000B0, 0x00003E75, { { 0xA7, 0x91, 0x9B, 0x61, 0x31, 0x12, 0x74, 0xB5, 0x4B, 0x4F, 0x8A, 0x44, 0xA9, 0xB1, 0x03, 0xC0 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3MusicFilesProvider[] = {
+ { -1, { 0x000001D5, 0x00007436, { { 0x27, 0xC2, 0x96, 0xFF, 0x22, 0xEC, 0xB5, 0x26, 0xF9, 0x4F, 0x04, 0xDD, 0x58, 0x17, 0xFE, 0xC6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3ScoreTableProvider[] = {
+ { -1, { 0x000000C8, 0x0000038F, { { 0x4E, 0x2E, 0xC3, 0xD9, 0x13, 0xA0, 0x74, 0x7E, 0xAB, 0xA1, 0x23, 0x2F, 0x11, 0x35, 0x4D, 0xA5 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3SfxFilesProvider[] = {
+ { -1, { 0x000008BF, 0x0001A766, { { 0xBD, 0x5D, 0x65, 0x5D, 0xC4, 0x34, 0xDF, 0x36, 0xF5, 0xC0, 0xE8, 0x7B, 0x51, 0x9F, 0xE5, 0xC7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3SfxMapProvider[] = {
+ { -1, { 0x000004C0, 0x0000C4F9, { { 0x06, 0x61, 0x45, 0x38, 0xC2, 0x6A, 0x12, 0x23, 0x55, 0x2C, 0x7F, 0xA5, 0xE2, 0x79, 0x81, 0x9E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3ItemAnimDataProvider[] = {
+ { -1, { 0x000001C8, 0x00003777, { { 0x8F, 0xE8, 0x80, 0x4A, 0x88, 0x83, 0xC0, 0x48, 0x55, 0x47, 0x81, 0xD3, 0xB7, 0xD5, 0x09, 0x8F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3ItemMagicTableProvider[] = {
+ { -1, { 0x00000048, 0x00000F9E, { { 0x87, 0xA7, 0xC0, 0xA2, 0x0F, 0xA3, 0x5B, 0x08, 0x76, 0x6F, 0x02, 0x68, 0x13, 0x17, 0x3B, 0x76 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData k3ItemStringMapProvider[] = {
+ { -1, { 0x00000048, 0x0000003C, { { 0x4C, 0xA7, 0xAA, 0xB0, 0x3C, 0xCC, 0x78, 0x91, 0x0A, 0xF2, 0x7F, 0x25, 0x80, 0xB3, 0x74, 0x74 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolSeqplayIntroTracksProvider[] = {
+ { -1, { 0x0000001A, 0x0000096C, { { 0xC2, 0xBD, 0x2C, 0x65, 0xD3, 0xFE, 0xF1, 0x6A, 0xE7, 0x34, 0x18, 0x0C, 0x86, 0x95, 0x66, 0x35 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolIngamePakFilesProvider[] = {
+ { -1, { 0x00000088, 0x0000224F, { { 0xDA, 0x24, 0x18, 0xA3, 0xEF, 0x16, 0x70, 0x8F, 0xA8, 0xC2, 0x2E, 0xC2, 0xED, 0x39, 0x03, 0xD1 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCharacterDefsProvider[] = {
+ { -1, { 0x00000492, 0x000047FD, { { 0x8C, 0x0B, 0x8B, 0xCE, 0xE0, 0xB0, 0x8F, 0xA9, 0x06, 0xC3, 0x98, 0xE6, 0x2E, 0x09, 0xB6, 0x93 } } } },
+ { -1, { 0x00000492, 0x00004ACD, { { 0xDF, 0x87, 0xFE, 0x89, 0x59, 0xCC, 0x01, 0xD7, 0xC7, 0xEB, 0x16, 0xA4, 0x09, 0xAF, 0x5D, 0xC0 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolIngameSfxFilesProvider[] = {
+ { -1, { 0x000008F2, 0x0001E5B6, { { 0x63, 0x5E, 0x37, 0xAA, 0x27, 0x80, 0x4C, 0x85, 0xB1, 0x9D, 0x7B, 0x1D, 0x64, 0xA3, 0xEB, 0x97 } } } },
+ { -1, { 0x000008F2, 0x0001E5B7, { { 0x9E, 0xC8, 0xE8, 0x19, 0x2F, 0x58, 0x0B, 0xC7, 0x2D, 0x41, 0x72, 0xE7, 0xF4, 0x80, 0x03, 0xCB } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolIngameSfxIndexProvider[] = {
+ { -1, { 0x000003E8, 0x0000E8D2, { { 0x19, 0x39, 0x17, 0xED, 0xAE, 0xDC, 0x7A, 0xAC, 0x45, 0x5F, 0x2D, 0xCD, 0x65, 0x8D, 0xAD, 0xAE } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMusicTrackMapProvider[] = {
+ { -1, { 0x000000F0, 0x0000210D, { { 0x55, 0x25, 0x3E, 0x35, 0xD2, 0xD8, 0x13, 0xE3, 0x1D, 0xB1, 0xB3, 0x00, 0x2E, 0x17, 0x91, 0x2F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolGMSfxIndexProvider[] = {
+ { -1, { 0x000000FA, 0x00006281, { { 0x25, 0x89, 0xB0, 0x3B, 0x12, 0x09, 0x02, 0xF6, 0xFE, 0x76, 0xD5, 0xC9, 0x5B, 0x88, 0xAC, 0xAA } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMT32SfxIndexProvider[] = {
+ { -1, { 0x000000FA, 0x00006579, { { 0x16, 0x40, 0x1C, 0x09, 0x69, 0xA9, 0x0D, 0x6D, 0x4B, 0x0C, 0x99, 0xF0, 0x40, 0x5D, 0xBB, 0x6E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolSpellPropertiesProvider[] = {
+ { -1, { 0x00000118, 0x00000B06, { { 0x27, 0x69, 0x53, 0x01, 0xA0, 0xE3, 0x76, 0xAA, 0x33, 0xA4, 0x52, 0x11, 0x52, 0xB1, 0x0E, 0xDA } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolGameShapeMapProvider[] = {
+ { -1, { 0x00000114, 0x000038D3, { { 0xB2, 0x8A, 0x5D, 0x9A, 0x51, 0x63, 0x4D, 0x65, 0xE4, 0xF5, 0xBA, 0x88, 0x70, 0x6C, 0xA6, 0xF8 } } } },
+ { -1, { 0x00000114, 0x00003B97, { { 0x29, 0xE5, 0x0F, 0x51, 0xF0, 0x10, 0x35, 0x3E, 0x70, 0x3A, 0xAA, 0xFE, 0xD7, 0xD5, 0xAA, 0x9F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolSceneItemOffsProvider[] = {
+ { -1, { 0x00000008, 0x00000300, { { 0x69, 0x80, 0x5A, 0x3E, 0x63, 0xC1, 0x04, 0x60, 0x09, 0x2F, 0x49, 0xD7, 0x26, 0x32, 0xAA, 0xE2 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCharInvIndexProvider[] = {
+ { -1, { 0x0000000A, 0x00000006, { { 0x19, 0x79, 0x4E, 0xFC, 0x05, 0x14, 0x89, 0x23, 0xEB, 0xCA, 0x94, 0x50, 0xE8, 0xD3, 0x81, 0x24 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCharInvDefsProvider[] = {
+ { -1, { 0x00000058, 0x00001D7A, { { 0x25, 0xE4, 0xEB, 0x6D, 0xBE, 0xEA, 0xBD, 0x9A, 0x9F, 0xA5, 0x9E, 0xEB, 0x3D, 0x03, 0x1D, 0x72 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCharDefsManProvider[] = {
+ { -1, { 0x00000012, 0x0000003D, { { 0xEB, 0x82, 0x32, 0x9D, 0x76, 0xC8, 0x3D, 0x5E, 0x8C, 0x26, 0x53, 0xDF, 0xC1, 0xFD, 0x0F, 0xC5 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCharDefsWomanProvider[] = {
+ { -1, { 0x00000012, 0x0000003D, { { 0xEB, 0x82, 0x32, 0x9D, 0x76, 0xC8, 0x3D, 0x5E, 0x8C, 0x26, 0x53, 0xDF, 0xC1, 0xFD, 0x0F, 0xC5 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCharDefsKieranProvider[] = {
+ { -1, { 0x00000012, 0x000002E3, { { 0xBF, 0xB1, 0x0F, 0x40, 0xBF, 0xA1, 0xD0, 0x2B, 0xC9, 0x80, 0x35, 0x40, 0xA9, 0xA3, 0x01, 0xC8 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCharDefsAkshelProvider[] = {
+ { -1, { 0x00000012, 0x000002FB, { { 0x47, 0x3C, 0x07, 0x15, 0x20, 0xE6, 0x90, 0x59, 0x55, 0xF2, 0xA7, 0xC3, 0x27, 0x22, 0xAB, 0xDC } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolExpRequirementsProvider[] = {
+ { -1, { 0x0000002C, 0x00000C0A, { { 0x3F, 0x36, 0xFA, 0xE3, 0xB0, 0x76, 0x5E, 0xFF, 0xE9, 0xBA, 0xDF, 0xD0, 0x9D, 0xFF, 0xDD, 0x27 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMonsterModifiersProvider[] = {
+ { -1, { 0x00000018, 0x000002C6, { { 0x38, 0x9A, 0x8B, 0x50, 0xD2, 0x9B, 0x95, 0x38, 0x91, 0x02, 0xA9, 0xBE, 0x78, 0xE5, 0x89, 0x65 } } } },
+ { -1, { 0x00000018, 0x000002EE, { { 0x4E, 0x37, 0x56, 0xE3, 0x42, 0xB3, 0x15, 0x2C, 0x7E, 0x9B, 0x7E, 0x50, 0x32, 0x91, 0x55, 0xBE } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMonsterLevelOffsetsProvider[] = {
+ { -1, { 0x00000020, 0x00000803, { { 0x30, 0x55, 0x74, 0x0D, 0xC7, 0x3B, 0xD9, 0x5C, 0x26, 0xF0, 0x4E, 0x8F, 0xE4, 0x4D, 0xCB, 0x2A } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMonsterDirFlagsProvider[] = {
+ { -1, { 0x00000010, 0x00000080, { { 0xE5, 0xA1, 0xE3, 0xCE, 0xA0, 0x5F, 0x15, 0xE9, 0x5B, 0x28, 0x90, 0xC0, 0xDF, 0x21, 0xEC, 0x24 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMonsterScaleYProvider[] = {
+ { -1, { 0x0000001E, 0x00000982, { { 0xE2, 0x71, 0x5F, 0x57, 0x4A, 0x8F, 0x50, 0xDB, 0x3E, 0xDA, 0xAB, 0x10, 0xEB, 0xDB, 0x0D, 0x14 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMonsterScaleXProvider[] = {
+ { -1, { 0x00000020, 0x00000918, { { 0xF6, 0x14, 0xE6, 0x48, 0x4E, 0x5B, 0x43, 0xCC, 0xCE, 0x4E, 0x98, 0x71, 0x5A, 0xC2, 0x00, 0x1E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMonsterScaleWHProvider[] = {
+ { -1, { 0x00000082, 0x00001D2A, { { 0x85, 0x7E, 0x18, 0xDD, 0x74, 0x1C, 0x62, 0x6F, 0xF4, 0xE5, 0xAF, 0x65, 0xEC, 0x6A, 0x90, 0xAD } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolFlyingItemShpProvider[] = {
+ { -1, { 0x00000082, 0x00000252, { { 0xDE, 0x9D, 0x89, 0xAF, 0x0F, 0x50, 0x14, 0x60, 0x68, 0xAF, 0x19, 0xD8, 0x54, 0x8A, 0x36, 0x27 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolInventoryDescProvider[] = {
+ { -1, { 0x00000016, 0x0000082D, { { 0x86, 0xB4, 0xB9, 0x50, 0xB6, 0xDA, 0x29, 0xB2, 0xC0, 0x0D, 0x34, 0x3F, 0x8D, 0x88, 0xAA, 0xE4 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolLevelShpListProvider[] = {
+ { -1, { 0x0000007F, 0x00002090, { { 0x17, 0x31, 0x8A, 0xB5, 0x9B, 0x3A, 0xDA, 0x16, 0x9E, 0xE3, 0xD1, 0x5F, 0xB4, 0x7B, 0xB2, 0x25 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolLevelDatListProvider[] = {
+ { -1, { 0x0000007F, 0x00001FB8, { { 0xF6, 0xE9, 0x98, 0x79, 0x51, 0xCA, 0xA0, 0x35, 0xE4, 0xD0, 0xA1, 0xCD, 0x23, 0x89, 0x7D, 0x11 } } } },
+ { -1, { 0x000000FF, 0x000047EC, { { 0x0D, 0xA5, 0xFD, 0x8A, 0x33, 0xDB, 0x93, 0x43, 0xE2, 0x57, 0x35, 0xEC, 0xA6, 0xCF, 0x7A, 0xA1 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolCompassDefsProvider[] = {
+ { -1, { 0x00000100, 0x000030EF, { { 0x6F, 0xF0, 0x46, 0x6E, 0xB3, 0x72, 0xCF, 0xC7, 0xE3, 0xAF, 0xBE, 0x63, 0xA1, 0x1C, 0x33, 0x20 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolItemPricesProvider[] = {
+ { -1, { 0x0000005C, 0x00001251, { { 0x18, 0x62, 0x5E, 0xE2, 0xE4, 0x2A, 0xB0, 0xA0, 0x8B, 0x8D, 0x9D, 0x07, 0x5F, 0x83, 0x53, 0xF7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolStashSetupProvider[] = {
+ { -1, { 0x0000000C, 0x0000001E, { { 0x1C, 0x93, 0x66, 0x56, 0xDB, 0xD7, 0xA4, 0xB3, 0xE7, 0x2F, 0xEA, 0x88, 0xE2, 0xC8, 0x79, 0xD0 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscUnk1Provider[] = {
+ { -1, { 0x00000024, 0x00000A2A, { { 0xAC, 0x4E, 0x73, 0x2C, 0xB0, 0xEE, 0x24, 0x0E, 0x66, 0x8D, 0x48, 0xE5, 0xCA, 0x6B, 0x7F, 0x7F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscShapeIndex1Provider[] = {
+ { -1, { 0x00000024, 0x00000728, { { 0x14, 0xBA, 0x6D, 0x5C, 0x7D, 0x20, 0x0D, 0x35, 0xA7, 0xB0, 0x8D, 0x2F, 0x1D, 0x2A, 0x49, 0xA4 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscShapeIndex2Provider[] = {
+ { -1, { 0x0000000A, 0x0000001F, { { 0x9C, 0xF2, 0xCC, 0x48, 0x42, 0xC6, 0x76, 0x83, 0xD3, 0x1A, 0x43, 0x42, 0x7F, 0xEF, 0x19, 0x0F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscScaleWidthDataProvider[] = {
+ { -1, { 0x00000048, 0x00000ABE, { { 0x28, 0x9A, 0xAA, 0x16, 0xC4, 0xFD, 0x52, 0xA9, 0x76, 0x98, 0x72, 0x0C, 0x2D, 0xE4, 0xB0, 0x57 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscScaleHeightDataProvider[] = {
+ { -1, { 0x00000048, 0x000009E8, { { 0x25, 0x35, 0x07, 0xBC, 0xF9, 0x82, 0x8B, 0x5B, 0x67, 0x7C, 0x38, 0xD1, 0xF8, 0x35, 0x81, 0xC7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscXProvider[] = {
+ { -1, { 0x00000048, 0x00001468, { { 0x55, 0xC5, 0x30, 0x76, 0x0A, 0xDC, 0xEC, 0xAB, 0x68, 0x9B, 0x61, 0xF0, 0x58, 0x78, 0x56, 0xA6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscYProvider[] = {
+ { -1, { 0x00000024, 0x00000282, { { 0x09, 0x98, 0x3A, 0x33, 0x15, 0xA1, 0x4A, 0xFF, 0x76, 0x19, 0x2B, 0xB1, 0x74, 0x89, 0xF4, 0x37 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscTileIndexProvider[] = {
+ { -1, { 0x00000012, 0x00000099, { { 0x18, 0xD9, 0x39, 0x27, 0x5B, 0x34, 0xAE, 0x7C, 0xA9, 0xA9, 0xDB, 0x42, 0x49, 0x61, 0x6B, 0x37 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscUnk2Provider[] = {
+ { -1, { 0x00000017, 0x000000D2, { { 0xDE, 0xDA, 0x75, 0x15, 0x2B, 0xDC, 0x90, 0x3F, 0xC9, 0x92, 0x04, 0x01, 0x23, 0x7A, 0xDA, 0x2E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDoorShapeIndexProvider[] = {
+ { -1, { 0x00000017, 0x0000000A, { { 0x2E, 0xC4, 0xA1, 0x47, 0x7C, 0xAE, 0xAD, 0xD8, 0x8A, 0x72, 0x95, 0x2F, 0x18, 0xC5, 0x08, 0x19 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDimData1Provider[] = {
+ { -1, { 0x00000144, 0x0001007D, { { 0x18, 0x3D, 0xA5, 0xF7, 0x1A, 0x5A, 0x90, 0xA7, 0x4E, 0x66, 0x1A, 0x4E, 0x0C, 0x69, 0x58, 0x31 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDimData2Provider[] = {
+ { -1, { 0x00000289, 0x00001BC2, { { 0x7F, 0x9D, 0xD3, 0x5A, 0x57, 0x73, 0xEA, 0x37, 0x44, 0x5E, 0x1A, 0x88, 0xFB, 0xE8, 0xE8, 0x8F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscBlockMapProvider[] = {
+ { -1, { 0x0000000C, 0x00000012, { { 0x01, 0xEE, 0x32, 0xA6, 0x71, 0x15, 0x8D, 0xFB, 0x33, 0xF2, 0xD6, 0x8A, 0x30, 0x00, 0x10, 0x4B } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDimMapProvider[] = {
+ { -1, { 0x00000012, 0x00000014, { { 0x4D, 0x53, 0x2E, 0xF2, 0xA3, 0xF9, 0xE2, 0xEC, 0x44, 0xBE, 0x5F, 0x04, 0x91, 0xF8, 0xE1, 0x04 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscShapeOvlIndexProvider[] = {
+ { -1, { 0x00000028, 0x00000048, { { 0x3E, 0x8E, 0x62, 0xAF, 0xD1, 0x28, 0x39, 0x73, 0x0D, 0xD8, 0x4A, 0xA7, 0xF4, 0xD7, 0x32, 0x25 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscBlockIndexProvider[] = {
+ { -1, { 0x00000048, 0x00002200, { { 0xF4, 0x8B, 0x32, 0xC3, 0xD3, 0xFB, 0x46, 0xF2, 0xB8, 0x3A, 0x58, 0x39, 0x94, 0x57, 0x97, 0x4B } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDoor1Provider[] = {
+ { -1, { 0x00000080, 0x00000348, { { 0xC6, 0x58, 0x8B, 0xFE, 0x18, 0x72, 0x47, 0xF1, 0xB6, 0x3A, 0x0F, 0xFB, 0x3D, 0x99, 0x74, 0xD0 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDoorScaleProvider[] = {
+ { -1, { 0x00000010, 0x0000024C, { { 0x8D, 0x83, 0x26, 0xEE, 0xDC, 0xF7, 0x13, 0xC0, 0xAA, 0x88, 0xC2, 0xAA, 0x66, 0xA7, 0x59, 0x41 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDoor4Provider[] = {
+ { -1, { 0x00000008, 0x00000103, { { 0x29, 0xC0, 0x4B, 0x7F, 0x36, 0x23, 0xBB, 0x38, 0x4C, 0x83, 0xC6, 0x9D, 0xB4, 0x8F, 0x29, 0x2E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDoorXProvider[] = {
+ { -1, { 0x00000480, 0x0001654D, { { 0x2A, 0x1F, 0xBF, 0xE3, 0xC4, 0xEF, 0x7E, 0xD1, 0x61, 0x51, 0xFE, 0x88, 0x8D, 0x1F, 0x59, 0x70 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolDscDoorYProvider[] = {
+ { -1, { 0x00000480, 0x00026666, { { 0x06, 0xBF, 0xA4, 0xD4, 0x6E, 0x29, 0x42, 0xA2, 0xA0, 0x8E, 0x3C, 0x14, 0xF3, 0xD6, 0x3F, 0x87 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolScrollXTopProvider[] = {
+ { -1, { 0x0000000A, 0x0000004B, { { 0x18, 0x1E, 0x6E, 0xE9, 0x34, 0xF0, 0x02, 0xC6, 0x57, 0x34, 0xDF, 0x55, 0xD9, 0x39, 0xE8, 0x98 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolScrollYTopProvider[] = {
+ { -1, { 0x0000000A, 0x00000022, { { 0xF3, 0x20, 0x5A, 0xC1, 0xBB, 0x0C, 0x79, 0x52, 0x23, 0xC1, 0x36, 0x81, 0x70, 0x2F, 0x92, 0xFC } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolScrollXBottomProvider[] = {
+ { -1, { 0x0000000A, 0x0000004B, { { 0x18, 0x1E, 0x6E, 0xE9, 0x34, 0xF0, 0x02, 0xC6, 0x57, 0x34, 0xDF, 0x55, 0xD9, 0x39, 0xE8, 0x98 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolScrollYBottomProvider[] = {
+ { -1, { 0x0000000A, 0x0000003C, { { 0x5B, 0x4F, 0xB7, 0xB5, 0x55, 0xA2, 0x9A, 0x21, 0xEF, 0xB4, 0x98, 0x47, 0x05, 0x57, 0x49, 0x55 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonDefsProvider[] = {
+ { -1, { 0x0000082A, 0x0000C34E, { { 0x7F, 0x9A, 0x0F, 0x28, 0x1A, 0x8F, 0x03, 0x46, 0x48, 0xEB, 0xC9, 0xB9, 0x23, 0x29, 0x5E, 0x50 } } } },
+ { -1, { 0x0000082A, 0x0000C47B, { { 0xDF, 0x1A, 0x18, 0x1F, 0x58, 0x05, 0x1F, 0x56, 0xD8, 0x6D, 0xBB, 0x93, 0xEC, 0x35, 0x9D, 0xA5 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList1Provider[] = {
+ { -1, { 0x00000050, 0x00000A37, { { 0x0F, 0x73, 0xEC, 0xDD, 0xAB, 0xFF, 0x49, 0x46, 0x5E, 0x8F, 0x0D, 0xC3, 0xE7, 0x1B, 0x89, 0x51 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList2Provider[] = {
+ { -1, { 0x0000001E, 0x00000522, { { 0xEA, 0x41, 0x46, 0xE2, 0xFE, 0xAA, 0x7D, 0x5E, 0x89, 0x7F, 0xBF, 0x9B, 0x30, 0x60, 0x74, 0xF3 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList3Provider[] = {
+ { -1, { 0x00000004, 0x0000023E, { { 0x70, 0xAA, 0xCA, 0xAC, 0x5C, 0x21, 0xCF, 0xA5, 0xBF, 0x7F, 0x5F, 0xBC, 0xF1, 0x24, 0x8A, 0xAF } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList4Provider[] = {
+ { -1, { 0x0000001E, 0x0000054D, { { 0x19, 0x2A, 0xBE, 0x7F, 0x94, 0x10, 0xA0, 0x60, 0x2A, 0x33, 0xD6, 0x11, 0x85, 0xF0, 0xA4, 0xA9 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList5Provider[] = {
+ { -1, { 0x00000020, 0x0000045D, { { 0xE3, 0x7C, 0xC2, 0x36, 0x21, 0x46, 0xDB, 0xF3, 0xDD, 0x38, 0x4B, 0x40, 0xE0, 0x35, 0x09, 0xC3 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList6Provider[] = {
+ { -1, { 0x0000001C, 0x000004C4, { { 0x21, 0x7C, 0x29, 0x3F, 0x95, 0x6F, 0x91, 0x8C, 0xB2, 0x30, 0x09, 0xA6, 0x7B, 0x48, 0x44, 0x8F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList7Provider[] = {
+ { -1, { 0x00000006, 0x0000021D, { { 0xDC, 0xCE, 0x1B, 0xEB, 0x11, 0x6D, 0xDE, 0x37, 0x17, 0xC8, 0x06, 0x51, 0xC3, 0x0C, 0xCB, 0xA6 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolButtonList8Provider[] = {
+ { -1, { 0x00000004, 0x00000253, { { 0x0C, 0x7B, 0x10, 0x99, 0x93, 0xD0, 0x33, 0xCA, 0xAB, 0x8D, 0x7E, 0x24, 0xE5, 0x7E, 0x6C, 0x91 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolLegendDataProvider[] = {
+ { -1, { 0x0000003C, 0x00000A52, { { 0x81, 0xC5, 0xA4, 0xE7, 0x60, 0xDA, 0xD6, 0x5E, 0x19, 0xAB, 0xF3, 0xC7, 0xDD, 0xDB, 0x92, 0x5E } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMapCursorOvlProvider[] = {
+ { -1, { 0x00000019, 0x000009CD, { { 0xF6, 0xD2, 0xFA, 0x36, 0x62, 0x95, 0x1D, 0x99, 0x7F, 0x11, 0x5F, 0xA8, 0x4D, 0x47, 0x72, 0x40 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolMapStringIdProvider[] = {
+ { -1, { 0x0000003C, 0x00000CFB, { { 0xE3, 0xC3, 0x41, 0x06, 0xD1, 0x71, 0x77, 0x78, 0xAD, 0x39, 0xAE, 0x2C, 0x16, 0x21, 0x45, 0xB7 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolSpellbookAnimProvider[] = {
+ { -1, { 0x00000038, 0x000003A1, { { 0x50, 0xA0, 0xF6, 0xA7, 0x53, 0x96, 0x86, 0x49, 0xB0, 0x8D, 0xA8, 0xB2, 0x2D, 0x9A, 0xE2, 0x1F } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolSpellbookCoordsProvider[] = {
+ { -1, { 0x00000018, 0x0000018F, { { 0xA5, 0xF6, 0x8A, 0x58, 0x9A, 0xC7, 0x3C, 0x3A, 0xB5, 0x87, 0x89, 0x87, 0x73, 0x51, 0x9B, 0x1B } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolHealShapeFramesProvider[] = {
+ { -1, { 0x00000050, 0x000000F4, { { 0xC9, 0x6E, 0x39, 0xE1, 0xD7, 0xAD, 0x10, 0x4F, 0xE2, 0xFE, 0xDC, 0xAD, 0x00, 0x9D, 0x41, 0xEF } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolLightningDefsProvider[] = {
+ { -1, { 0x00000014, 0x00000385, { { 0x68, 0x39, 0x65, 0xCB, 0xA9, 0x80, 0x90, 0xFB, 0xDD, 0x77, 0x0C, 0x76, 0x5A, 0xB5, 0x05, 0x03 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolFireballCoordsProvider[] = {
+ { -1, { 0x00000200, 0x0000FD81, { { 0xB3, 0xE0, 0x6F, 0x89, 0xCD, 0xE5, 0xA9, 0x6A, 0x4B, 0x61, 0x7A, 0x3F, 0x47, 0x26, 0x73, 0x58 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
+const ExtractEntrySearchData kLolHistoryProvider[] = {
+ { -1, { 0x000001D1, 0x00007F9B, { { 0x25, 0x10, 0x86, 0x40, 0xAC, 0x53, 0xFE, 0x11, 0x4D, 0xE2, 0xD9, 0x35, 0xD6, 0x89, 0xBB, 0x09 } } } },
+ { -1, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
+};
+
diff --git a/tools/create_kyradat/towns.h b/tools/create_kyradat/towns.h
deleted file mode 100644
index 4e632ec571..0000000000
--- a/tools/create_kyradat/towns.h
+++ /dev/null
@@ -1,122 +0,0 @@
-const ExtractEntry kyra1FMTownsE[] = {
- { kKallakWritingSeq, 0x0002F1FF, 0x0002F9F6 },
- { kMalcolmTreeSeq, 0x0002FCC3, 0x0002FEDB },
- { kWestwoodLogoSeq, 0x0002FEDB, 0x0002FF26 },
- { kKyrandiaLogoSeq, 0x0002F9F7, 0x0002FA53 },
- { kKallakMalcolmSeq, 0x0002FA53, 0x0002FCC0 },
- { kForestSeq, 0x0002F067, 0x0002F1FD },
- { kIntroCPSStrings, 0x00027D5A, 0x00027D6F },
- { kIntroWSAStrings, 0x00027D72, 0x00027E05 },
- { kIntroCOLStrings, 0x00027E06, 0x00027E36 },
- { kIntroStrings, 0x00027E36, 0x0002837B },
- { kRoomList, 0x0002FF90, 0x00036478 },
- { kRoomFilenames, 0x00028B20, 0x00028E6C},
- { kCharacterImageFilenames, 0x0002606E, 0x00026165 },
- { kDefaultShapes, 0x00037CF9, 0x00038183 },
- { kItemNames, 0x00029724, 0x00029C29 },
- { kTakenStrings, 0x00028978, 0x00028994 },
- { kPlacedStrings, 0x000289A0, 0x000289A9 },
- { kDroppedStrings, 0x000289E4, 0x000289EE },
- { kNoDropStrings, 0x00027C0E, 0x00027C88 },
- { kAmuleteAnimSeq, 0x0002A814, 0x0002A83E },
- { kPaletteList1, 0x0002E80B, 0x0002E820 },
- { kPaletteList2, 0x0002E823, 0x0002E856 },
- { kPaletteList3, 0x0002E857, 0x0002E88A },
- { kPaletteList4, 0x0002E88B, 0x0002E8BE },
- { kPaletteList5, 0x0002E8BF, 0x0002E8F2 },
- { kPaletteList6, 0x0002E8F3, 0x0002E926 },
- { kPaletteList7, 0x0002E927, 0x0002E95D },
- { kPaletteList8, 0x0002E95F, 0x0002E995 },
- { kPaletteList9, 0x0002E997, 0x0002E9C4 },
- { kPaletteList10, 0x0002E9C7, 0x0002E9F4 },
- { kPaletteList11, 0x0002E9F7, 0x0002EA24 },
- { kPaletteList12, 0x0002EA27, 0x0002EA54 },
- { kPaletteList13, 0x0002EA54, 0x0002EA81 },
- { kPaletteList14, 0x0002EA87, 0x0002EAC3 },
- { kPaletteList15, 0x0002EAC3, 0x0002EAF0 },
- { kPaletteList16, 0x0002EAF3, 0x0002EB14 },
- { kPaletteList17, 0x0002EB17, 0x0002EB38 },
- { kPaletteList18, 0x0002EB3B, 0x0002EB50 },
- { kPaletteList19, 0x0002EB53, 0x0002EB68 },
- { kPaletteList20, 0x0002EB6B, 0x0002EB80 },
- { kPaletteList21, 0x0002EB83, 0x0002EB98 },
- { kPaletteList22, 0x0002EB9B, 0x0002EBB0 },
- { kPaletteList23, 0x0002EBB3, 0x0002EBC8 },
- { kPaletteList24, 0x0002EBCB, 0x0002EBFB },
- { kPaletteList25, 0x0002EBFB, 0x0002EC2B },
- { kPaletteList26, 0x0002EC2B, 0x0002EC5B },
- { kPaletteList27, 0x0002EC5B, 0x0002EC8B },
- { kPaletteList28, 0x0002EC8B, 0x0002ECBB },
- { kPaletteList29, 0x0002ECBB, 0x0002ECEB },
- { kPaletteList30, 0x0002ECEB, 0x0002ED27 },
- { kPaletteList31, 0x0002ED27, 0x0002ED4E },
- { kPaletteList32, 0x0002ED4F, 0x0002ED76 },
- { kPaletteList33, 0x0002ED77, 0x0002EDB3 },
- { kPutDownString, 0x00025BD6, 0x00025BFC },
- { kWaitAmuletString, 0x00025C2A, 0x00025C67 },
- { kBlackJewelString, 0x00025C96, 0x00025CB9 },
- { kHealingTipString, 0x00025CF2, 0x00025D1F },
- { kPoisonGoneString, 0x00025E06, 0x00025E42 },
- { kHealing1Shapes, 0x000381F1, 0x0003828B },
- { kHealing2Shapes, 0x0003828D, 0x0003835F },
- { kThePoisonStrings, 0x000294B8, 0x0002954A },
- { kFluteStrings, 0x00025B1E, 0x00025B78 },
- { kPoisonDeathShapes, 0x0003865D, 0x000386E9 },
- { kFluteShapes, 0x00038561, 0x0003865D },
- { kWinter1Shapes, 0x00038361, 0x00038392 },
- { kWinter2Shapes, 0x00038395, 0x0003848A },
- { kWinter3Shapes, 0x0003848D, 0x000384A9 },
- { kDrinkShapes, 0x00038185, 0x000381EF },
- { kWispShapes, 0x000384A9, 0x0003855F },
- { kMagicAnimShapes, 0x000386E9, 0x0003870C },
- { kBranStoneShapes, 0x0003870D, 0x00038770 },
- { kWispJewelStrings, 0x00025D4E, 0x00025DC3 },
- { kMagicJewelStrings, 0x00025DE2, 0x00025DF5 },
- { kFlaskFullString, 0x00029688, 0x000296A4 },
- { kFullFlaskString, 0x00029568, 0x00029605 },
- { kOutroReunionSeq, 0x0002B529, 0x0002BA70 },
- { kOutroHomeString, 0x00025F7E, 0x00025F83 },
- { kVeryCleverString, 0x00025F8E, 0x00025FC0 },
- { kGUIStrings, 0x000291E0, 0x000293DC },
- { kNewGameString, 0x0002919C, 0x000291B1 },
- { kConfigStrings, 0x00029360, 0x000293AA},
- { kKyra1TownsSFXwdTable, 0x0003A978, 0x0004CF80 },
- { kKyra1TownsSFXbtTable, 0x0003A878, 0x0003A978 },
- { kKyra1TownsCDATable, 0x0004D021, 0x0004D2E5 },
- { kAudioTracks, 0x00027B8E, 0x00027BEB },
- { kCreditsStrings, 0x0002AED8, 0x0002B464 },
- { -1, 0, 0 }
-};
-
-const ExtractEntry kyra1FMTownsJ[] = {
- { kIntroStrings, 0x0002837C, 0x00028977 },
- { kItemNames, 0x00029C2C, 0x0002A1B3 },
- { kTakenStrings, 0x00028980, 0x0002899F },
- { kPlacedStrings, 0x000289AC, 0x000289B9 },
- { kDroppedStrings, 0x000289F0, 0x000289FB },
- { kNoDropStrings, 0x00027C3E, 0x00027C9F },
- { kPutDownString, 0x00025BFE, 0x00025C27 },
- { kWaitAmuletString, 0x00025C6A, 0x00025C93 },
- { kBlackJewelString, 0x00025CBA, 0x00025CEF },
- { kHealingTipString, 0x00025D22, 0x00025D4D },
- { kPoisonGoneString, 0x00025E12, 0x00025E4F },
- { kThePoisonStrings, 0x000294C8, 0x00029568 },
- { kFluteStrings, 0x00025B3E, 0x00025B91 },
- { kWispJewelStrings, 0x00025D7A, 0x00025DE1 },
- { kMagicJewelStrings, 0x00025DF6, 0x00025E05 },
- { kFlaskFullString, 0x000296A4, 0x000296C3 },
- { kFullFlaskString, 0x00029608, 0x00029685 },
- { kOutroHomeString, 0x00025F86, 0x00025F8D },
- { kVeryCleverString, 0x00025FC2, 0x00025FF1 },
- { kGUIStrings, 0x000368D1, 0x00036B30 },
- { kNewGameString, 0x000291B4, 0x000291CF},
- { kConfigStrings, 0x000290AC, 0x00029103 },
- { -1, 0, 0 }
-};
-
-const Game kyra1TownsGames[] = {
- { kKyra1, EN_ANY, kFMTownsVersionE, "5a3ad60ccd0f2e29463e0368cd14a60d", kyra1FMTownsE },
- { kKyra1, JA_JPN, kFMTownsVersionJ, "5a3ad60ccd0f2e29463e0368cd14a60d", kyra1FMTownsJ },
- GAME_DUMMY_ENTRY
-};
-