[Scummvm-cvs-logs] scummvm master -> d771c4d3bbde84ca37579b1dc9e5b6f491bbd2d5
lordhoto
lordhoto at gmail.com
Mon Mar 3 02:08:48 CET 2014
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
800fc0722d DEVTOOLS: Rewrite create_kyradat.
02697757ea DISTS: Regenerate kyra.dat.
d771c4d3bb KYRA: Fix EoB 1 German rest string when monsters are nearby.
Commit: 800fc0722df4c39b8fac5fcfec14802358894533
https://github.com/scummvm/scummvm/commit/800fc0722df4c39b8fac5fcfec14802358894533
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2014-03-02T17:00:04-08:00
Commit Message:
DEVTOOLS: Rewrite create_kyradat.
Now static data is directly stored inside source code files which allows the
tool to generate kyra.dat without any additional input.
This will make supporting fan translations easier, since only the localized
strings have to be added and an appropriate game entry has to be added.
Changed paths:
A devtools/create_kyradat/resources.cpp
A devtools/create_kyradat/resources.h
A devtools/create_kyradat/resources/eob1_dos.h
A devtools/create_kyradat/resources/eob1_dos_english.h
A devtools/create_kyradat/resources/eob1_dos_german.h
A devtools/create_kyradat/resources/eob2_dos.h
A devtools/create_kyradat/resources/eob2_dos_english.h
A devtools/create_kyradat/resources/eob2_dos_german.h
A devtools/create_kyradat/resources/hof_dos.h
A devtools/create_kyradat/resources/hof_dos_cd.h
A devtools/create_kyradat/resources/hof_dos_cd_english.h
A devtools/create_kyradat/resources/hof_dos_cd_french.h
A devtools/create_kyradat/resources/hof_dos_cd_german.h
A devtools/create_kyradat/resources/hof_dos_cd_italian.h
A devtools/create_kyradat/resources/hof_dos_cd_russian.h
A devtools/create_kyradat/resources/hof_dos_cddemo.h
A devtools/create_kyradat/resources/hof_dos_cddemo_english.h
A devtools/create_kyradat/resources/hof_dos_cddemo_french.h
A devtools/create_kyradat/resources/hof_dos_cddemo_german.h
A devtools/create_kyradat/resources/hof_dos_demo.h
A devtools/create_kyradat/resources/hof_dos_english.h
A devtools/create_kyradat/resources/hof_dos_french.h
A devtools/create_kyradat/resources/hof_dos_german.h
A devtools/create_kyradat/resources/hof_dos_italian.h
A devtools/create_kyradat/resources/hof_dos_russian.h
A devtools/create_kyradat/resources/hof_fmtowns.h
A devtools/create_kyradat/resources/hof_fmtowns_english.h
A devtools/create_kyradat/resources/hof_fmtowns_japanese.h
A devtools/create_kyradat/resources/hof_pc98.h
A devtools/create_kyradat/resources/hof_pc98_english.h
A devtools/create_kyradat/resources/hof_pc98_japanese.h
A devtools/create_kyradat/resources/lok_amiga.h
A devtools/create_kyradat/resources/lok_amiga_english.h
A devtools/create_kyradat/resources/lok_amiga_german.h
A devtools/create_kyradat/resources/lok_dos.h
A devtools/create_kyradat/resources/lok_dos_cd.h
A devtools/create_kyradat/resources/lok_dos_cd_english.h
A devtools/create_kyradat/resources/lok_dos_cd_french.h
A devtools/create_kyradat/resources/lok_dos_cd_german.h
A devtools/create_kyradat/resources/lok_dos_cd_italian.h
A devtools/create_kyradat/resources/lok_dos_cddemo.h
A devtools/create_kyradat/resources/lok_dos_cddemo_english.h
A devtools/create_kyradat/resources/lok_dos_demo.h
A devtools/create_kyradat/resources/lok_dos_demo_english.h
A devtools/create_kyradat/resources/lok_dos_english.h
A devtools/create_kyradat/resources/lok_dos_french.h
A devtools/create_kyradat/resources/lok_dos_german.h
A devtools/create_kyradat/resources/lok_dos_italian.h
A devtools/create_kyradat/resources/lok_dos_oldfloppy.h
A devtools/create_kyradat/resources/lok_dos_oldfloppy_russian.h
A devtools/create_kyradat/resources/lok_dos_spanish.h
A devtools/create_kyradat/resources/lok_fmtowns.h
A devtools/create_kyradat/resources/lok_fmtowns_english.h
A devtools/create_kyradat/resources/lok_fmtowns_japanese.h
A devtools/create_kyradat/resources/lok_pc98.h
A devtools/create_kyradat/resources/lok_pc98_japanese.h
A devtools/create_kyradat/resources/lol_dos.h
A devtools/create_kyradat/resources/lol_dos_cd.h
A devtools/create_kyradat/resources/lol_dos_cd_english.h
A devtools/create_kyradat/resources/lol_dos_cd_french.h
A devtools/create_kyradat/resources/lol_dos_cd_german.h
A devtools/create_kyradat/resources/lol_dos_cd_italian.h
A devtools/create_kyradat/resources/lol_dos_cd_russian.h
A devtools/create_kyradat/resources/lol_dos_demo.h
A devtools/create_kyradat/resources/lol_dos_demo_english.h
A devtools/create_kyradat/resources/lol_dos_english.h
A devtools/create_kyradat/resources/lol_dos_french.h
A devtools/create_kyradat/resources/lol_dos_german.h
A devtools/create_kyradat/resources/lol_dos_russian.h
A devtools/create_kyradat/resources/lol_fmtowns.h
A devtools/create_kyradat/resources/lol_fmtowns_japanese.h
A devtools/create_kyradat/resources/lol_pc98.h
A devtools/create_kyradat/resources/lol_pc98_japanese.h
A devtools/create_kyradat/resources/mr_dos_cd.h
A devtools/create_kyradat/types.cpp
A devtools/create_kyradat/types.h
R devtools/create_kyradat/extract.cpp
R devtools/create_kyradat/extract.h
R devtools/create_kyradat/tables.h
R devtools/create_kyradat/search.cpp
R devtools/create_kyradat/search.h
R devtools/create_kyradat/tables.cpp
devtools/create_kyradat/create_kyradat.cpp
devtools/create_kyradat/create_kyradat.h
devtools/create_kyradat/games.cpp
devtools/create_kyradat/module.mk
diff --git a/devtools/create_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index 6f67e0e..d42989b 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -30,21 +30,19 @@
#endif // main
#include "create_kyradat.h"
+#include "resources.h"
+#include "types.h"
-#include "search.h"
#include "pak.h"
-#include "tables.h"
-#include "extract.h"
-
#include "md5.h"
#include "common/language.h"
#include "common/platform.h"
+#include <vector>
#include <string>
-#include <map>
#include <algorithm>
-#include <map>
+
enum {
kKyraDatVersion = 84
@@ -55,647 +53,647 @@ const ExtractFilename extractFilenames[] = {
{ kIdMap, -1, true },
// INTRO / OUTRO sequences
- { k1ForestSeq, kTypeForestSeqData, false },
- { k1KallakWritingSeq, kTypeRawData, false },
- { k1KyrandiaLogoSeq, kTypeRawData, false },
- { k1KallakMalcolmSeq, kTypeRawData, false },
- { k1MalcolmTreeSeq, kTypeRawData, false },
- { k1WestwoodLogoSeq, kTypeRawData, false },
- { k1Demo1Seq, kTypeRawData, false },
- { k1Demo2Seq, kTypeRawData, false },
- { k1Demo3Seq, kTypeRawData, false },
- { k1Demo4Seq, kTypeRawData, false },
- { k1OutroReunionSeq, kTypeRawData, false },
+ { k1ForestSeq, kRawData, false },
+ { k1KallakWritingSeq, kRawData, false },
+ { k1KyrandiaLogoSeq, kRawData, false },
+ { k1KallakMalcolmSeq, kRawData, false },
+ { k1MalcolmTreeSeq, kRawData, false },
+ { k1WestwoodLogoSeq, kRawData, false },
+ { k1Demo1Seq, kRawData, false },
+ { k1Demo2Seq, kRawData, false },
+ { k1Demo3Seq, kRawData, false },
+ { k1Demo4Seq, kRawData, false },
+ { k1OutroReunionSeq, kRawData, false },
// INTRO / OUTRO strings
- { k1IntroCPSStrings, kTypeStringList, false },
- { k1IntroCOLStrings, kTypeStringList, false },
- { k1IntroWSAStrings, kTypeStringList, false },
- { k1IntroStrings, kTypeStringList, true },
- { k1OutroHomeString, kTypeStringList, true },
+ { k1IntroCPSStrings, kStringList, false },
+ { k1IntroCOLStrings, kStringList, false },
+ { k1IntroWSAStrings, kStringList, false },
+ { k1IntroStrings, kStringList, true },
+ { k1OutroHomeString, kStringList, true },
// INGAME strings
- { k1ItemNames, kTypeStringList, true },
- { k1TakenStrings, kTypeStringList, true },
- { k1PlacedStrings, kTypeStringList, true },
- { k1DroppedStrings, kTypeStringList, true },
- { k1NoDropStrings, kTypeStringList, true },
- { k1PutDownString, kTypeStringList, true },
- { k1WaitAmuletString, kTypeStringList, true },
- { k1BlackJewelString, kTypeStringList, true },
- { k1PoisonGoneString, kTypeStringList, true },
- { k1HealingTipString, kTypeStringList, true },
- { k1ThePoisonStrings, kTypeStringList, true },
- { k1FluteStrings, kTypeStringList, true },
- { k1WispJewelStrings, kTypeStringList, true },
- { k1MagicJewelStrings, kTypeStringList, true },
- { k1FlaskFullString, kTypeStringList, true },
- { k1FullFlaskString, kTypeStringList, true },
- { k1VeryCleverString, kTypeStringList, true },
- { k1NewGameString, kTypeStringList, true },
+ { k1ItemNames, kStringList, true },
+ { k1TakenStrings, kStringList, true },
+ { k1PlacedStrings, kStringList, true },
+ { k1DroppedStrings, kStringList, true },
+ { k1NoDropStrings, kStringList, true },
+ { k1PutDownString, kStringList, true },
+ { k1WaitAmuletString, kStringList, true },
+ { k1BlackJewelString, kStringList, true },
+ { k1PoisonGoneString, kStringList, true },
+ { k1HealingTipString, kStringList, true },
+ { k1ThePoisonStrings, kStringList, true },
+ { k1FluteStrings, kStringList, true },
+ { k1WispJewelStrings, kStringList, true },
+ { k1MagicJewelStrings, kStringList, true },
+ { k1FlaskFullString, kStringList, true },
+ { k1FullFlaskString, kStringList, true },
+ { k1VeryCleverString, kStringList, true },
+ { k1NewGameString, kStringList, true },
// GUI strings table
- { k1GUIStrings, kTypeStringList, true },
- { k1ConfigStrings, kTypeStringList, true },
+ { k1GUIStrings, kStringList, true },
+ { k1ConfigStrings, kStringList, true },
// ROOM table/filenames
- { k1RoomList, kTypeRoomList, false },
- { k1RoomFilenames, kTypeStringList, false },
+ { k1RoomList, kRoomList, false },
+ { k1RoomFilenames, kStringList, false },
// SHAPE tables
- { k1DefaultShapes, kTypeShapeList, false },
- { k1Healing1Shapes, kTypeShapeList, false },
- { k1Healing2Shapes, kTypeShapeList, false },
- { k1PoisonDeathShapes, kTypeShapeList, false },
- { k1FluteShapes, kTypeShapeList, false },
- { k1Winter1Shapes, kTypeShapeList, false },
- { k1Winter2Shapes, kTypeShapeList, false },
- { k1Winter3Shapes, kTypeShapeList, false },
- { k1DrinkShapes, kTypeShapeList, false },
- { k1WispShapes, kTypeShapeList, false },
- { k1MagicAnimShapes, kTypeShapeList, false },
- { k1BranStoneShapes, kTypeShapeList, false },
+ { k1DefaultShapes, kShapeList, false },
+ { k1Healing1Shapes, kShapeList, false },
+ { k1Healing2Shapes, kShapeList, false },
+ { k1PoisonDeathShapes, kShapeList, false },
+ { k1FluteShapes, kShapeList, false },
+ { k1Winter1Shapes, kShapeList, false },
+ { k1Winter2Shapes, kShapeList, false },
+ { k1Winter3Shapes, kShapeList, false },
+ { k1DrinkShapes, kShapeList, false },
+ { k1WispShapes, kShapeList, false },
+ { k1MagicAnimShapes, kShapeList, false },
+ { k1BranStoneShapes, kShapeList, false },
// IMAGE filename table
- { k1CharacterImageFilenames, kTypeStringList, false },
+ { k1CharacterImageFilenames, kStringList, false },
// AUDIO filename table
- { k1AudioTracks, kTypeStringList, false },
- { k1AudioTracks2, kTypeStringList, false },
- { k1AudioTracksIntro, kTypeStringList, false },
+ { k1AudioTracks, kStringList, false },
+ { k1AudioTracks2, kStringList, false },
+ { k1AudioTracksIntro, kStringList, false },
// AMULET anim
- { k1AmuleteAnimSeq, kTypeRawData, false },
+ { k1AmuleteAnimSeq, kRawData, false },
// PALETTE table
- { k1SpecialPalette1, kTypeRawData, false },
- { k1SpecialPalette2, kTypeRawData, false },
- { k1SpecialPalette3, kTypeRawData, false },
- { k1SpecialPalette4, kTypeRawData, false },
- { k1SpecialPalette5, kTypeRawData, false },
- { k1SpecialPalette6, kTypeRawData, false },
- { k1SpecialPalette7, kTypeRawData, false },
- { k1SpecialPalette8, kTypeRawData, false },
- { k1SpecialPalette9, kTypeRawData, false },
- { k1SpecialPalette10, kTypeRawData, false },
- { k1SpecialPalette11, kTypeRawData, false },
- { k1SpecialPalette12, kTypeRawData, false },
- { k1SpecialPalette13, kTypeRawData, false },
- { k1SpecialPalette14, kTypeRawData, false },
- { k1SpecialPalette15, kTypeRawData, false },
- { k1SpecialPalette16, kTypeRawData, false },
- { k1SpecialPalette17, kTypeRawData, false },
- { k1SpecialPalette18, kTypeRawData, false },
- { k1SpecialPalette19, kTypeRawData, false },
- { k1SpecialPalette20, kTypeRawData, false },
- { k1SpecialPalette21, kTypeRawData, false },
- { k1SpecialPalette22, kTypeRawData, false },
- { k1SpecialPalette23, kTypeRawData, false },
- { k1SpecialPalette24, kTypeRawData, false },
- { k1SpecialPalette25, kTypeRawData, false },
- { k1SpecialPalette26, kTypeRawData, false },
- { k1SpecialPalette27, kTypeRawData, false },
- { k1SpecialPalette28, kTypeRawData, false },
- { k1SpecialPalette29, kTypeRawData, false },
- { k1SpecialPalette30, kTypeRawData, false },
- { k1SpecialPalette31, kTypeRawData, false },
- { k1SpecialPalette32, kTypeRawData, false },
- { k1SpecialPalette33, kTypeRawData, false },
+ { k1SpecialPalette1, kRawData, false },
+ { k1SpecialPalette2, kRawData, false },
+ { k1SpecialPalette3, kRawData, false },
+ { k1SpecialPalette4, kRawData, false },
+ { k1SpecialPalette5, kRawData, false },
+ { k1SpecialPalette6, kRawData, false },
+ { k1SpecialPalette7, kRawData, false },
+ { k1SpecialPalette8, kRawData, false },
+ { k1SpecialPalette9, kRawData, false },
+ { k1SpecialPalette10, kRawData, false },
+ { k1SpecialPalette11, kRawData, false },
+ { k1SpecialPalette12, kRawData, false },
+ { k1SpecialPalette13, kRawData, false },
+ { k1SpecialPalette14, kRawData, false },
+ { k1SpecialPalette15, kRawData, false },
+ { k1SpecialPalette16, kRawData, false },
+ { k1SpecialPalette17, kRawData, false },
+ { k1SpecialPalette18, kRawData, false },
+ { k1SpecialPalette19, kRawData, false },
+ { k1SpecialPalette20, kRawData, false },
+ { k1SpecialPalette21, kRawData, false },
+ { k1SpecialPalette22, kRawData, false },
+ { k1SpecialPalette23, kRawData, false },
+ { k1SpecialPalette24, kRawData, false },
+ { k1SpecialPalette25, kRawData, false },
+ { k1SpecialPalette26, kRawData, false },
+ { k1SpecialPalette27, kRawData, false },
+ { k1SpecialPalette28, kRawData, false },
+ { k1SpecialPalette29, kRawData, false },
+ { k1SpecialPalette30, kRawData, false },
+ { k1SpecialPalette31, kRawData, false },
+ { k1SpecialPalette32, kRawData, false },
+ { k1SpecialPalette33, kRawData, false },
// CREDITS (used in FM-TOWNS and AMIGA)
- { k1CreditsStrings, kTypeRawData, true },
+ { k1CreditsStrings, kRawData, true },
// FM-TOWNS specific
- { k1TownsMusicFadeTable, k3TypeRaw16to8, false },
- { k1TownsSFXwdTable, kTypeTownsWDSfxTable, false },
- { k1TownsSFXbtTable, kTypeRawData, false },
- { k1TownsCDATable, kTypeRawData, false },
+ { k1TownsMusicFadeTable, kRawData, false },
+ { k1TownsSFXwdTable, kRawData, false },
+ { k1TownsSFXbtTable, kRawData, false },
+ { k1TownsCDATable, kRawData, false },
// PC98 specific
- { k1PC98StoryStrings, kTypeStringList, true },
- { k1PC98IntroSfx, kTypeRawData, false },
+ { k1PC98StoryStrings, kStringList, true },
+ { k1PC98IntroSfx, kRawData, false },
// AMIGA specific
- { k1AmigaIntroSFXTable, kTypeAmigaSfxTable, false },
- { k1AmigaGameSFXTable, kTypeAmigaSfxTable, false },
+ { k1AmigaIntroSFXTable, kAmigaSfxTable, false },
+ { k1AmigaGameSFXTable, kAmigaSfxTable, false },
// HAND OF FATE
// Sequence Player
- { k2SeqplayPakFiles, kTypeStringList, false },
- { k2SeqplayCredits, kTypeRawData, false },
- { k2SeqplayCreditsSpecial, kTypeStringList, false },
- { k2SeqplayStrings, kTypeStringList, true },
- { k2SeqplaySfxFiles, k2TypeSoundList, false },
- { k2SeqplayTlkFiles, k2TypeLangSoundList, true },
- { k2SeqplaySeqData, k2TypeSeqData, false },
- { k2SeqplayIntroTracks, kTypeStringList, false },
- { k2SeqplayFinaleTracks, kTypeStringList, false },
- { k2SeqplayIntroCDA, kTypeRawData, false },
- { k2SeqplayFinaleCDA, kTypeRawData, false },
- { k2SeqplayShapeAnimData, k2TypeShpDataV1, false },
+ { k2SeqplayPakFiles, kStringList, false },
+ { k2SeqplayCredits, kRawData, false },
+ { k2SeqplayCreditsSpecial, kStringList, false },
+ { k2SeqplayStrings, kStringList, true },
+ { k2SeqplaySfxFiles, kStringList, false },
+ { k2SeqplayTlkFiles, kStringList, true },
+ { k2SeqplaySeqData, k2SeqData, false },
+ { k2SeqplayIntroTracks, kStringList, false },
+ { k2SeqplayFinaleTracks, kStringList, false },
+ { k2SeqplayIntroCDA, kRawData, false },
+ { k2SeqplayFinaleCDA, kRawData, false },
+ { k2SeqplayShapeAnimData, k2SeqItemAnimData, false },
// Ingame
- { k2IngamePakFiles, kTypeStringList, false },
- { k2IngameSfxFiles, k2TypeSize10StringList, false },
- { k2IngameSfxIndex, kTypeRawData, false },
- { k2IngameTracks, kTypeStringList, false },
- { k2IngameCDA, kTypeRawData, false },
- { k2IngameTalkObjIndex, kTypeRawData, false },
- { k2IngameTimJpStrings, kTypeStringList, false },
- { k2IngameShapeAnimData, k2TypeShpDataV2, false },
- { k2IngameTlkDemoStrings, kTypeStringList, true },
+ { k2IngamePakFiles, kStringList, false },
+ { k2IngameSfxFiles, kStringList, false },
+ { k2IngameSfxIndex, kRawData, false },
+ { k2IngameTracks, kStringList, false },
+ { k2IngameCDA, kRawData, false },
+ { k2IngameTalkObjIndex, kRawData, false },
+ { k2IngameTimJpStrings, kStringList, false },
+ { k2IngameShapeAnimData, k2ItemAnimDefinition, false },
+ { k2IngameTlkDemoStrings, kStringList, true },
// MALCOLM'S REVENGE
- { k3MainMenuStrings, kTypeStringList, false },
- { k3MusicFiles, k2TypeSoundList, false },
- { k3ScoreTable, kTypeRawData, false },
- { k3SfxFiles, k2TypeSfxList, false },
- { k3SfxMap, k3TypeRaw16to8, false },
- { k3ItemAnimData, k3TypeShpData, false },
- { k3ItemMagicTable, k3TypeRaw16to8, false },
- { k3ItemStringMap, kTypeRawData, false },
+ { k3MainMenuStrings, kStringList, false },
+ { k3MusicFiles, kStringList, false },
+ { k3ScoreTable, kRawData, false },
+ { k3SfxFiles, kStringList, false },
+ { k3SfxMap, kRawData, false },
+ { k3ItemAnimData, k2ItemAnimDefinition, false },
+ { k3ItemMagicTable, kRawData, false },
+ { k3ItemStringMap, kRawData, false },
// EYE OF THE BEHOLDER COMMON
- { kEoBBaseChargenStrings1, kTypeStringList, true },
- { kEoBBaseChargenStrings2, kTypeStringList, true },
- { kEoBBaseChargenStartLevels, kTypeRawData, false },
- { kEoBBaseChargenStatStrings, kTypeStringList, true},
- { kEoBBaseChargenRaceSexStrings, kTypeStringList, true },
- { kEoBBaseChargenClassStrings, kTypeStringList, true },
- { kEoBBaseChargenAlignmentStrings, kTypeStringList, true },
- { kEoBBaseChargenEnterGameStrings, kTypeStringList, true },
- { kEoBBaseChargenClassMinStats, k3TypeRaw16to8, false },
- { kEoBBaseChargenRaceMinStats, k3TypeRaw16to8, false },
- { kEoBBaseChargenRaceMaxStats, kLoLTypeRaw16, false },
-
- { kEoBBaseSaveThrowTable1, kTypeRawData, false },
- { kEoBBaseSaveThrowTable2, kTypeRawData, false },
- { kEoBBaseSaveThrowTable3, kTypeRawData, false },
- { kEoBBaseSaveThrowTable4, kTypeRawData, false },
- { kEoBBaseSaveThrwLvlIndex, kTypeRawData, false },
- { kEoBBaseSaveThrwModDiv, kTypeRawData, false },
- { kEoBBaseSaveThrwModExt, kTypeRawData, false },
-
- { kEoBBasePryDoorStrings, kTypeStringList, true },
- { kEoBBaseWarningStrings, kTypeStringList, true },
-
- { kEoBBaseItemSuffixStringsRings, kTypeStringList, true },
- { kEoBBaseItemSuffixStringsPotions, kTypeStringList, true },
- { kEoBBaseItemSuffixStringsWands, kTypeStringList, true },
-
- { kEoBBaseRipItemStrings, kTypeStringList, true },
- { kEoBBaseCursedString, kTypeStringList, true },
- { kEoBBaseEnchantedString, kTypeStringList, false },
- { kEoBBaseMagicObjectStrings, kTypeStringList, true },
- { kEoBBaseMagicObject5String, kTypeStringList, true },
- { kEoBBasePatternSuffix, kTypeStringList, true },
- { kEoBBasePatternGrFix1, kTypeStringList, true },
- { kEoBBasePatternGrFix2, kTypeStringList, true },
- { kEoBBaseValidateArmorString, kTypeStringList, true },
- { kEoBBaseValidateCursedString, kTypeStringList, true },
- { kEoBBaseValidateNoDropString, kTypeStringList, true },
- { kEoBBasePotionStrings, kTypeStringList, true },
- { kEoBBaseWandString, kTypeStringList, true },
- { kEoBBaseItemMisuseStrings, kTypeStringList, true },
-
- { kEoBBaseTakenStrings, kTypeStringList, true },
- { kEoBBasePotionEffectStrings, kTypeStringList, true },
-
- { kEoBBaseYesNoStrings, kTypeStringList, true },
- { kRpgCommonMoreStrings, kTypeStringList, true },
- { kEoBBaseNpcMaxStrings, kTypeStringList, true },
- { kEoBBaseOkStrings, kTypeStringList, true },
- { kEoBBaseNpcJoinStrings, kTypeStringList, true },
- { kEoBBaseCancelStrings, kTypeStringList, true },
- { kEoBBaseAbortStrings, kTypeStringList, true },
-
- { kEoBBaseMenuStringsMain, kTypeStringList, true },
- { kEoBBaseMenuStringsSaveLoad, kTypeStringList, true },
- { kEoBBaseMenuStringsOnOff, kTypeStringList, true },
- { kEoBBaseMenuStringsSpells, kTypeStringList, true },
- { kEoBBaseMenuStringsRest, kTypeStringList, true },
- { kEoBBaseMenuStringsDrop, kTypeStringList, true },
- { kEoBBaseMenuStringsExit, kTypeStringList, true },
- { kEoBBaseMenuStringsStarve, kTypeStringList, true },
- { kEoBBaseMenuStringsScribe, kTypeStringList, true },
- { kEoBBaseMenuStringsDrop2, kTypeStringList, true },
- { kEoBBaseMenuStringsHead, kTypeStringList, true },
- { kEoBBaseMenuStringsPoison, kTypeStringList, true },
- { kEoBBaseMenuStringsMgc, kTypeStringList, true },
- { kEoBBaseMenuStringsPrefs, kTypeStringList, true },
- { kEoBBaseMenuStringsRest2, kTypeStringList, true },
- { kEoBBaseMenuStringsRest3, kTypeStringList, true },
- { kEoBBaseMenuStringsRest4, kTypeStringList, true },
- { kEoBBaseMenuStringsDefeat, kTypeStringList, true },
- { kEoBBaseMenuStringsTransfer, kTypeStringList, true },
- { kEoBBaseMenuStringsSpec, kTypeStringList, true },
- { kEoBBaseMenuStringsSpellNo, kTypeStringList, false },
- { kEoBBaseMenuYesNoStrings, kTypeStringList, true },
-
- { kEoBBaseSpellLevelsMage, kTypeRawData, false },
- { kEoBBaseSpellLevelsCleric, kTypeRawData, false },
- { kEoBBaseNumSpellsCleric, kTypeRawData, false },
- { kEoBBaseNumSpellsWisAdj, kTypeRawData, false },
- { kEoBBaseNumSpellsPal, kTypeRawData, false },
- { kEoBBaseNumSpellsMage, kTypeRawData, false },
-
- { kEoBBaseCharGuiStringsHp, kTypeStringList, true },
- { kEoBBaseCharGuiStringsWp1, kTypeStringList, true },
- { kEoBBaseCharGuiStringsWp2, kTypeStringList, true },
- { kEoBBaseCharGuiStringsWr, kTypeStringList, true },
- { kEoBBaseCharGuiStringsSt1, kTypeStringList, true },
- { kEoBBaseCharGuiStringsSt2, kTypeStringList, true },
- { kEoBBaseCharGuiStringsIn, kTypeStringList, true },
-
- { kEoBBaseCharStatusStrings7, kTypeStringList, true },
- { kEoBBaseCharStatusStrings81, kTypeStringList, true },
- { kEoBBaseCharStatusStrings82, kTypeStringList, true },
- { kEoBBaseCharStatusStrings9, kTypeStringList, true },
- { kEoBBaseCharStatusStrings12, kTypeStringList, true },
- { kEoBBaseCharStatusStrings131, kTypeStringList, true },
- { kEoBBaseCharStatusStrings132, kTypeStringList, true },
-
- { kEoBBaseLevelGainStrings, kTypeStringList, true },
- { kEoBBaseExperienceTable0, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable1, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable2, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable3, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable4, kLoLTypeRaw32, false },
-
- { kEoBBaseWllFlagPreset, kTypeRawData, false },
- { kEoBBaseDscShapeCoords, kLoLTypeRaw16, false },
- { kEoBBaseDscDoorScaleOffs, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult1, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult2, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult3, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult4, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult5, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult6, kTypeRawData, false },
- { kEoBBaseDscDoorType5Offs, kTypeRawData, false },
- { kEoBBaseDscDoorXE, kTypeRawData, false },
- { kEoBBaseDscDoorY1, kTypeRawData, false },
- { kEoBBaseDscDoorY3, kTypeRawData, false },
- { kEoBBaseDscDoorY4, kTypeRawData, false },
- { kEoBBaseDscDoorY5, kTypeRawData, false },
- { kEoBBaseDscDoorY6, kTypeRawData, false },
- { kEoBBaseDscDoorY7, kTypeRawData, false },
- { kEoBBaseDscDoorCoordsExt, kLoLTypeRaw16, false },
-
- { kEoBBaseDscItemPosIndex, kTypeRawData, false },
- { kEoBBaseDscItemShpX, kLoLTypeRaw16, false },
- { kEoBBaseDscItemPosUnk, kTypeRawData, false },
- { kEoBBaseDscItemTileIndex, kTypeRawData, false },
- { kEoBBaseDscItemShapeMap, kTypeRawData, false },
- { kEoBBaseDscTelptrShpCoords, kTypeRawData, false },
-
- { kEoBBasePortalSeqData, kTypeRawData, false },
- { kEoBBaseManDef, kTypeRawData, true },
- { kEoBBaseManWord, kTypeStringList, true },
- { kEoBBaseManPrompt, kTypeStringList, true },
-
- { kEoBBaseDscMonsterFrmOffsTbl1, kTypeRawData, false },
- { kEoBBaseDscMonsterFrmOffsTbl2, kTypeRawData, false },
-
- { kEoBBaseInvSlotX, kLoLTypeRaw16, false },
- { kEoBBaseInvSlotY, kTypeRawData, false },
- { kEoBBaseSlotValidationFlags, kLoLTypeRaw16, false },
-
- { kEoBBaseProjectileWeaponTypes, kTypeRawData, false },
- { kEoBBaseWandTypes, kTypeRawData, false },
-
- { kEoBBaseDrawObjPosIndex, kTypeRawData, false },
- { kEoBBaseFlightObjFlipIndex, kTypeRawData, false },
- { kEoBBaseFlightObjShpMap, kTypeRawData, false },
- { kEoBBaseFlightObjSclIndex, kTypeRawData, false },
-
- { kEoBBaseBookNumbers, kTypeStringList, true },
- { kEoBBaseMageSpellsList, kTypeStringList, true },
- { kEoBBaseClericSpellsList, kTypeStringList, true },
- { kEoBBaseSpellNames, kTypeStringList, true },
-
- { kEoBBaseMagicStrings1, kTypeStringList, true },
- { kEoBBaseMagicStrings2, kTypeStringList, true },
- { kEoBBaseMagicStrings3, kTypeStringList, true },
- { kEoBBaseMagicStrings4, kTypeStringList, true },
- { kEoBBaseMagicStrings6, kTypeStringList, true },
- { kEoBBaseMagicStrings7, kTypeStringList, true },
- { kEoBBaseMagicStrings8, kTypeStringList, true },
-
- { kEoBBaseExpObjectTlMode, kTypeRawData, false },
- { kEoBBaseExpObjectTblIndex, kTypeRawData, false },
- { kEoBBaseExpObjectShpStart, kTypeRawData, false },
- { kEoBBaseExpObjectTbl1, kTypeRawData, false },
- { kEoBBaseExpObjectTbl2, kTypeRawData, false },
- { kEoBBaseExpObjectTbl3, kTypeRawData, false },
- { kEoBBaseExpObjectY, k3TypeRaw16to8, false },
-
- { kEoBBaseSparkDefSteps, kTypeRawData, false },
- { kEoBBaseSparkDefSubSteps, kTypeRawData, false },
- { kEoBBaseSparkDefShift, kTypeRawData, false },
- { kEoBBaseSparkDefAdd, kTypeRawData, false },
- { kEoBBaseSparkDefX, k3TypeRaw16to8, false },
- { kEoBBaseSparkDefY, kTypeRawData, false },
- { kEoBBaseSparkOfFlags1, kLoLTypeRaw32, false },
- { kEoBBaseSparkOfFlags2, kLoLTypeRaw32, false },
- { kEoBBaseSparkOfShift, kTypeRawData, false },
- { kEoBBaseSparkOfX, kTypeRawData, false },
- { kEoBBaseSparkOfY, kTypeRawData, false },
- { kEoBBaseSpellProperties, kTypeRawData, false },
- { kEoBBaseMagicFlightProps, kTypeRawData, false },
- { kEoBBaseTurnUndeadEffect, kTypeRawData, false },
- { kEoBBaseBurningHandsDest, kTypeRawData, false },
- { kEoBBaseConeOfColdDest1, kTypeRawData, false },
- { kEoBBaseConeOfColdDest2, kTypeRawData, false },
- { kEoBBaseConeOfColdDest3, kTypeRawData, false },
- { kEoBBaseConeOfColdDest4, kTypeRawData, false },
- { kEoBBaseConeOfColdGfxTbl, k3TypeRaw16to8, false },
+ { kEoBBaseChargenStrings1, kStringList, true },
+ { kEoBBaseChargenStrings2, kStringList, true },
+ { kEoBBaseChargenStartLevels, kRawData, false },
+ { kEoBBaseChargenStatStrings, kStringList, true},
+ { kEoBBaseChargenRaceSexStrings, kStringList, true },
+ { kEoBBaseChargenClassStrings, kStringList, true },
+ { kEoBBaseChargenAlignmentStrings, kStringList, true },
+ { kEoBBaseChargenEnterGameStrings, kStringList, true },
+ { kEoBBaseChargenClassMinStats, kRawData, false },
+ { kEoBBaseChargenRaceMinStats, kRawData, false },
+ { kEoBBaseChargenRaceMaxStats, kRawDataBe16, false },
+
+ { kEoBBaseSaveThrowTable1, kRawData, false },
+ { kEoBBaseSaveThrowTable2, kRawData, false },
+ { kEoBBaseSaveThrowTable3, kRawData, false },
+ { kEoBBaseSaveThrowTable4, kRawData, false },
+ { kEoBBaseSaveThrwLvlIndex, kRawData, false },
+ { kEoBBaseSaveThrwModDiv, kRawData, false },
+ { kEoBBaseSaveThrwModExt, kRawData, false },
+
+ { kEoBBasePryDoorStrings, kStringList, true },
+ { kEoBBaseWarningStrings, kStringList, true },
+
+ { kEoBBaseItemSuffixStringsRings, kStringList, true },
+ { kEoBBaseItemSuffixStringsPotions, kStringList, true },
+ { kEoBBaseItemSuffixStringsWands, kStringList, true },
+
+ { kEoBBaseRipItemStrings, kStringList, true },
+ { kEoBBaseCursedString, kStringList, true },
+ { kEoBBaseEnchantedString, kStringList, false },
+ { kEoBBaseMagicObjectStrings, kStringList, true },
+ { kEoBBaseMagicObjectString5, kStringList, true },
+ { kEoBBasePatternSuffix, kStringList, true },
+ { kEoBBasePatternGrFix1, kStringList, true },
+ { kEoBBasePatternGrFix2, kStringList, true },
+ { kEoBBaseValidateArmorString, kStringList, true },
+ { kEoBBaseValidateCursedString, kStringList, true },
+ { kEoBBaseValidateNoDropString, kStringList, true },
+ { kEoBBasePotionStrings, kStringList, true },
+ { kEoBBaseWandStrings, kStringList, true },
+ { kEoBBaseItemMisuseStrings, kStringList, true },
+
+ { kEoBBaseTakenStrings, kStringList, true },
+ { kEoBBasePotionEffectStrings, kStringList, true },
+
+ { kEoBBaseYesNoStrings, kStringList, true },
+ { kRpgCommonMoreStrings, kStringList, true },
+ { kEoBBaseNpcMaxStrings, kStringList, true },
+ { kEoBBaseOkStrings, kStringList, true },
+ { kEoBBaseNpcJoinStrings, kStringList, true },
+ { kEoBBaseCancelStrings, kStringList, true },
+ { kEoBBaseAbortStrings, kStringList, true },
+
+ { kEoBBaseMenuStringsMain, kStringList, true },
+ { kEoBBaseMenuStringsSaveLoad, kStringList, true },
+ { kEoBBaseMenuStringsOnOff, kStringList, true },
+ { kEoBBaseMenuStringsSpells, kStringList, true },
+ { kEoBBaseMenuStringsRest, kStringList, true },
+ { kEoBBaseMenuStringsDrop, kStringList, true },
+ { kEoBBaseMenuStringsExit, kStringList, true },
+ { kEoBBaseMenuStringsStarve, kStringList, true },
+ { kEoBBaseMenuStringsScribe, kStringList, true },
+ { kEoBBaseMenuStringsDrop2, kStringList, true },
+ { kEoBBaseMenuStringsHead, kStringList, true },
+ { kEoBBaseMenuStringsPoison, kStringList, true },
+ { kEoBBaseMenuStringsMgc, kStringList, true },
+ { kEoBBaseMenuStringsPrefs, kStringList, true },
+ { kEoBBaseMenuStringsRest2, kStringList, true },
+ { kEoBBaseMenuStringsRest3, kStringList, true },
+ { kEoBBaseMenuStringsRest4, kStringList, true },
+ { kEoBBaseMenuStringsDefeat, kStringList, true },
+ { kEoBBaseMenuStringsTransfer, kStringList, true },
+ { kEoBBaseMenuStringsSpec, kStringList, true },
+ { kEoBBaseMenuStringsSpellNo, kStringList, false },
+ { kEoBBaseMenuYesNoStrings, kStringList, true },
+
+ { kEoBBaseSpellLevelsMage, kRawData, false },
+ { kEoBBaseSpellLevelsCleric, kRawData, false },
+ { kEoBBaseNumSpellsCleric, kRawData, false },
+ { kEoBBaseNumSpellsWisAdj, kRawData, false },
+ { kEoBBaseNumSpellsPal, kRawData, false },
+ { kEoBBaseNumSpellsMage, kRawData, false },
+
+ { kEoBBaseCharGuiStringsHp, kStringList, true },
+ { kEoBBaseCharGuiStringsWp1, kStringList, true },
+ { kEoBBaseCharGuiStringsWp2, kStringList, true },
+ { kEoBBaseCharGuiStringsWr, kStringList, true },
+ { kEoBBaseCharGuiStringsSt1, kStringList, true },
+ { kEoBBaseCharGuiStringsSt2, kStringList, true },
+ { kEoBBaseCharGuiStringsIn, kStringList, true },
+
+ { kEoBBaseCharStatusStrings7, kStringList, true },
+ { kEoBBaseCharStatusStrings81, kStringList, true },
+ { kEoBBaseCharStatusStrings82, kStringList, true },
+ { kEoBBaseCharStatusStrings9, kStringList, true },
+ { kEoBBaseCharStatusStrings12, kStringList, true },
+ { kEoBBaseCharStatusStrings131, kStringList, true },
+ { kEoBBaseCharStatusStrings132, kStringList, true },
+
+ { kEoBBaseLevelGainStrings, kStringList, true },
+ { kEoBBaseExperienceTable0, kRawDataBe32, false },
+ { kEoBBaseExperienceTable1, kRawDataBe32, false },
+ { kEoBBaseExperienceTable2, kRawDataBe32, false },
+ { kEoBBaseExperienceTable3, kRawDataBe32, false },
+ { kEoBBaseExperienceTable4, kRawDataBe32, false },
+
+ { kEoBBaseWllFlagPreset, kRawData, false },
+ { kEoBBaseDscShapeCoords, kRawDataBe16, false },
+ { kEoBBaseDscDoorScaleOffs, kRawData, false },
+ { kEoBBaseDscDoorScaleMult1, kRawData, false },
+ { kEoBBaseDscDoorScaleMult2, kRawData, false },
+ { kEoBBaseDscDoorScaleMult3, kRawData, false },
+ { kEoBBaseDscDoorScaleMult4, kRawData, false },
+ { kEoBBaseDscDoorScaleMult5, kRawData, false },
+ { kEoBBaseDscDoorScaleMult6, kRawData, false },
+ { kEoBBaseDscDoorType5Offs, kRawData, false },
+ { kEoBBaseDscDoorXE, kRawData, false },
+ { kEoBBaseDscDoorY1, kRawData, false },
+ { kEoBBaseDscDoorY3, kRawData, false },
+ { kEoBBaseDscDoorY4, kRawData, false },
+ { kEoBBaseDscDoorY5, kRawData, false },
+ { kEoBBaseDscDoorY6, kRawData, false },
+ { kEoBBaseDscDoorY7, kRawData, false },
+ { kEoBBaseDscDoorCoordsExt, kRawDataBe16, false },
+
+ { kEoBBaseDscItemPosIndex, kRawData, false },
+ { kEoBBaseDscItemShpX, kRawDataBe16, false },
+ { kEoBBaseDscItemScaleIndex, kRawData, false },
+ { kEoBBaseDscItemTileIndex, kRawData, false },
+ { kEoBBaseDscItemShapeMap, kRawData, false },
+ { kEoBBaseDscTelptrShpCoords, kRawData, false },
+
+ { kEoBBasePortalSeqData, kRawData, false },
+ { kEoBBaseManDef, kRawData, true },
+ { kEoBBaseManWord, kStringList, true },
+ { kEoBBaseManPrompt, kStringList, true },
+
+ { kEoBBaseDscMonsterFrmOffsTbl1, kRawData, false },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kRawData, false },
+
+ { kEoBBaseInvSlotX, kRawDataBe16, false },
+ { kEoBBaseInvSlotY, kRawData, false },
+ { kEoBBaseSlotValidationFlags, kRawDataBe16, false },
+
+ { kEoBBaseProjectileWeaponTypes, kRawData, false },
+ { kEoBBaseWandTypes, kRawData, false },
+
+ { kEoBBaseDrawObjPosIndex, kRawData, false },
+ { kEoBBaseFlightObjFlipIndex, kRawData, false },
+ { kEoBBaseFlightObjShpMap, kRawData, false },
+ { kEoBBaseFlightObjSclIndex, kRawData, false },
+
+ { kEoBBaseBookNumbers, kStringList, true },
+ { kEoBBaseMageSpellsList, kStringList, true },
+ { kEoBBaseClericSpellsList, kStringList, true },
+ { kEoBBaseSpellNames, kStringList, true },
+
+ { kEoBBaseMagicStrings1, kStringList, true },
+ { kEoBBaseMagicStrings2, kStringList, true },
+ { kEoBBaseMagicStrings3, kStringList, true },
+ { kEoBBaseMagicStrings4, kStringList, true },
+ { kEoBBaseMagicStrings6, kStringList, true },
+ { kEoBBaseMagicStrings7, kStringList, true },
+ { kEoBBaseMagicStrings8, kStringList, true },
+
+ { kEoBBaseExpObjectTlMode, kRawData, false },
+ { kEoBBaseExpObjectTblIndex, kRawData, false },
+ { kEoBBaseExpObjectShpStart, kRawData, false },
+ { kEoBBaseExpObjectTbl1, kRawData, false },
+ { kEoBBaseExpObjectTbl2, kRawData, false },
+ { kEoBBaseExpObjectTbl3, kRawData, false },
+ { kEoBBaseExpObjectY, kRawData, false },
+
+ { kEoBBaseSparkDefSteps, kRawData, false },
+ { kEoBBaseSparkDefSubSteps, kRawData, false },
+ { kEoBBaseSparkDefShift, kRawData, false },
+ { kEoBBaseSparkDefAdd, kRawData, false },
+ { kEoBBaseSparkDefX, kRawData, false },
+ { kEoBBaseSparkDefY, kRawData, false },
+ { kEoBBaseSparkOfFlags1, kRawDataBe32, false },
+ { kEoBBaseSparkOfFlags2, kRawDataBe32, false },
+ { kEoBBaseSparkOfShift, kRawData, false },
+ { kEoBBaseSparkOfX, kRawData, false },
+ { kEoBBaseSparkOfY, kRawData, false },
+ { kEoBBaseSpellProperties, kRawData, false },
+ { kEoBBaseMagicFlightProps, kRawData, false },
+ { kEoBBaseTurnUndeadEffect, kRawData, false },
+ { kEoBBaseBurningHandsDest, kRawData, false },
+ { kEoBBaseConeOfColdDest1, kRawData, false },
+ { kEoBBaseConeOfColdDest2, kRawData, false },
+ { kEoBBaseConeOfColdDest3, kRawData, false },
+ { kEoBBaseConeOfColdDest4, kRawData, false },
+ { kEoBBaseConeOfColdGfxTbl, kRawData, false },
// EYE OF THE BEHOLDER I
- { kEoB1MainMenuStrings, kTypeStringList, true },
- { kEoB1BonusStrings, kTypeStringList, true },
-
- { kEoB1IntroFilesOpening, kTypeStringList, false },
- { kEoB1IntroFilesTower, kTypeStringList, false },
- { kEoB1IntroFilesOrb, kTypeStringList, false },
- { kEoB1IntroFilesWdEntry, kTypeStringList, false },
- { kEoB1IntroFilesKing, kTypeStringList, false },
- { kEoB1IntroFilesHands, kTypeStringList, false },
- { kEoB1IntroFilesWdExit, kTypeStringList, false },
- { kEoB1IntroFilesTunnel, kTypeStringList, false },
- { kEoB1IntroOpeningFrmDelay, k3TypeRaw16to8, false },
- { kEoB1IntroWdEncodeX, kTypeRawData, false },
- { kEoB1IntroWdEncodeY, kTypeRawData, false },
- { kEoB1IntroWdEncodeWH, kTypeRawData, false },
- { kEoB1IntroWdDsX, kLoLTypeRaw16, false },
- { kEoB1IntroWdDsY, kTypeRawData, false },
- { kEoB1IntroTvlX1, kTypeRawData, false },
- { kEoB1IntroTvlY1, kTypeRawData, false },
- { kEoB1IntroTvlX2, kTypeRawData, false },
- { kEoB1IntroTvlY2, kTypeRawData, false },
- { kEoB1IntroTvlW, kTypeRawData, false },
- { kEoB1IntroTvlH, kTypeRawData, false },
-
- { kEoB1DoorShapeDefs, kTypeRawData, false },
- { kEoB1DoorSwitchShapeDefs, kTypeRawData, false },
- { kEoB1DoorSwitchCoords, kTypeRawData, false },
- { kEoB1MonsterProperties, kTypeRawData, false },
- { kEoB1EnemyMageSpellList, kTypeRawData, false },
- { kEoB1EnemyMageSfx, kTypeRawData, false },
- { kEoB1BeholderSpellList, kTypeRawData, false },
- { kEoB1BeholderSfx, kTypeRawData, false },
- { kEoB1TurnUndeadString, kTypeStringList, true },
-
- { kEoB1CgaMappingDefault, kTypeRawData, false },
- { kEoB1CgaMappingAlt, kTypeRawData, false },
- { kEoB1CgaMappingInv, kTypeRawData, false },
- { kEoB1CgaMappingItemsL, kTypeRawData, false },
- { kEoB1CgaMappingItemsS, kTypeRawData, false },
- { kEoB1CgaMappingThrown, kTypeRawData, false },
- { kEoB1CgaMappingIcons, kTypeRawData, false },
- { kEoB1CgaMappingDeco, kTypeRawData, false },
- { kEoB1CgaLevelMappingIndex, kTypeRawData, false },
- { kEoB1CgaMappingLevel0, kTypeRawData, false },
- { kEoB1CgaMappingLevel1, kTypeRawData, false },
- { kEoB1CgaMappingLevel2, kTypeRawData, false },
- { kEoB1CgaMappingLevel3, kTypeRawData, false },
- { kEoB1CgaMappingLevel4, kTypeRawData, false },
-
- { kEoB1NpcShpData, kTypeRawData, false },
- { kEoB1NpcSubShpIndex1, kTypeRawData, false },
- { kEoB1NpcSubShpIndex2, kTypeRawData, false },
- { kEoB1NpcSubShpY, kTypeRawData, false },
- { kEoB1Npc0Strings, kTypeStringList, true },
- { kEoB1Npc11Strings, kTypeStringList, true },
- { kEoB1Npc12Strings, kTypeStringList, true },
- { kEoB1Npc21Strings, kTypeStringList, true },
- { kEoB1Npc22Strings, kTypeStringList, true },
- { kEoB1Npc31Strings, kTypeStringList, true },
- { kEoB1Npc32Strings, kTypeStringList, true },
- { kEoB1Npc4Strings, kTypeStringList, true },
- { kEoB1Npc5Strings, kTypeStringList, true },
- { kEoB1Npc6Strings, kTypeStringList, true },
- { kEoB1Npc7Strings, kTypeStringList, true },
+ { kEoB1MainMenuStrings, kStringList, true },
+ { kEoB1BonusStrings, kStringList, true },
+
+ { kEoB1IntroFilesOpening, kStringList, false },
+ { kEoB1IntroFilesTower, kStringList, false },
+ { kEoB1IntroFilesOrb, kStringList, false },
+ { kEoB1IntroFilesWdEntry, kStringList, false },
+ { kEoB1IntroFilesKing, kStringList, false },
+ { kEoB1IntroFilesHands, kStringList, false },
+ { kEoB1IntroFilesWdExit, kStringList, false },
+ { kEoB1IntroFilesTunnel, kStringList, false },
+ { kEoB1IntroOpeningFrmDelay, kRawData, false },
+ { kEoB1IntroWdEncodeX, kRawData, false },
+ { kEoB1IntroWdEncodeY, kRawData, false },
+ { kEoB1IntroWdEncodeWH, kRawData, false },
+ { kEoB1IntroWdDsX, kRawDataBe16, false },
+ { kEoB1IntroWdDsY, kRawData, false },
+ { kEoB1IntroTvlX1, kRawData, false },
+ { kEoB1IntroTvlY1, kRawData, false },
+ { kEoB1IntroTvlX2, kRawData, false },
+ { kEoB1IntroTvlY2, kRawData, false },
+ { kEoB1IntroTvlW, kRawData, false },
+ { kEoB1IntroTvlH, kRawData, false },
+
+ { kEoB1DoorShapeDefs, kRawData, false },
+ { kEoB1DoorSwitchShapeDefs, kRawData, false },
+ { kEoB1DoorSwitchCoords, kRawData, false },
+ { kEoB1MonsterProperties, kRawData, false },
+ { kEoB1EnemyMageSpellList, kRawData, false },
+ { kEoB1EnemyMageSfx, kRawData, false },
+ { kEoB1BeholderSpellList, kRawData, false },
+ { kEoB1BeholderSfx, kRawData, false },
+ { kEoB1TurnUndeadString, kStringList, true },
+
+ { kEoB1CgaMappingDefault, kRawData, false },
+ { kEoB1CgaMappingAlt, kRawData, false },
+ { kEoB1CgaMappingInv, kRawData, false },
+ { kEoB1CgaMappingItemsL, kRawData, false },
+ { kEoB1CgaMappingItemsS, kRawData, false },
+ { kEoB1CgaMappingThrown, kRawData, false },
+ { kEoB1CgaMappingIcons, kRawData, false },
+ { kEoB1CgaMappingDeco, kRawData, false },
+ { kEoB1CgaLevelMappingIndex, kRawData, false },
+ { kEoB1CgaMappingLevel0, kRawData, false },
+ { kEoB1CgaMappingLevel1, kRawData, false },
+ { kEoB1CgaMappingLevel2, kRawData, false },
+ { kEoB1CgaMappingLevel3, kRawData, false },
+ { kEoB1CgaMappingLevel4, kRawData, false },
+
+ { kEoB1NpcShpData, kRawData, false },
+ { kEoB1NpcSubShpIndex1, kRawData, false },
+ { kEoB1NpcSubShpIndex2, kRawData, false },
+ { kEoB1NpcSubShpY, kRawData, false },
+ { kEoB1Npc0Strings, kStringList, true },
+ { kEoB1Npc11Strings, kStringList, true },
+ { kEoB1Npc12Strings, kStringList, true },
+ { kEoB1Npc21Strings, kStringList, true },
+ { kEoB1Npc22Strings, kStringList, true },
+ { kEoB1Npc31Strings, kStringList, true },
+ { kEoB1Npc32Strings, kStringList, true },
+ { kEoB1Npc4Strings, kStringList, true },
+ { kEoB1Npc5Strings, kStringList, true },
+ { kEoB1Npc6Strings, kStringList, true },
+ { kEoB1Npc7Strings, kStringList, true },
// EYE OF THE BEHOLDER II
- { kEoB2MainMenuStrings, kTypeStringList, true },
-
- { kEoB2TransferPortraitFrames, kLoLTypeRaw16, false },
- { kEoB2TransferConvertTable, kTypeRawData, false },
- { kEoB2TransferItemTable, kTypeRawData, false },
- { kEoB2TransferExpTable, kLoLTypeRaw32, false },
- { kEoB2TransferStrings1, kTypeStringList, true },
- { kEoB2TransferStrings2, kTypeStringList, true },
- { kEoB2TransferLabels, kTypeStringList, true },
-
- { kEoB2IntroStrings, k2TypeSfxList, true },
- { kEoB2IntroCPSFiles, kTypeStringList, true },
- { kEoB2IntroAnimData00, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData01, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData02, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData03, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData04, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData05, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData06, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData07, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData08, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData09, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData10, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData11, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData12, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData13, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData14, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData15, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData16, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData17, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData18, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData19, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData20, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData21, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData22, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData23, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData24, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData25, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData26, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData27, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData28, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData29, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData30, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData31, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData32, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData33, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData34, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData35, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData36, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData37, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData38, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData39, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData40, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData41, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData42, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData43, kEoB2TypeSeqData, false },
- { kEoB2IntroShapes00, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes01, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes04, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes07, kEoB2TypeShapeData, false },
-
- { kEoB2FinaleStrings, k2TypeSfxList, true },
- { kEoB2CreditsData, kTypeRawData, true },
- { kEoB2FinaleCPSFiles, kTypeStringList, true },
- { kEoB2FinaleAnimData00, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData01, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData02, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData03, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData04, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData05, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData06, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData07, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData08, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData09, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData10, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData11, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData12, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData13, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData14, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData15, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData16, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData17, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData18, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData19, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData20, kEoB2TypeSeqData, false },
- { kEoB2FinaleShapes00, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes03, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes07, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes09, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes10, kEoB2TypeShapeData, false },
- { kEoB2NpcShapeData, kTypeRawData, false },
- { kEoBBaseClassModifierFlags, kTypeRawData, false },
- { kEoBBaseMonsterStepTable01, kTypeRawData, false },
- { kEoBBaseMonsterStepTable02, kTypeRawData, false },
- { kEoBBaseMonsterStepTable1, kTypeRawData, false },
- { kEoBBaseMonsterStepTable2, k3TypeRaw16to8, false },
- { kEoBBaseMonsterStepTable3, k3TypeRaw16to8, false },
- { kEoBBaseMonsterCloseAttPosTable1, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttPosTable21, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttPosTable22, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttUnkTable, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttChkTable1, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttChkTable2, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttDstTable1, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttDstTable2, kTypeRawData, false },
- { kEoBBaseMonsterProximityTable, kTypeRawData, false },
- { kEoBBaseFindBlockMonstersTable, kTypeRawData, false },
- { kEoBBaseMonsterDirChangeTable, kTypeRawData, false },
- { kEoBBaseMonsterDistAttStrings, kTypeStringList, true },
- { kEoBBaseEncodeMonsterDefs, kLoLTypeRaw16, false },
- { kEoBBaseNpcPresets, kEoBTypeNpcData, false },
- { kEoB2Npc1Strings, kTypeStringList, true },
- { kEoB2Npc2Strings, kTypeStringList, true },
- { kEoB2MonsterDustStrings, kTypeStringList, true },
- { kEoB2DreamSteps, kTypeRawData, false },
- { kEoB2KheldranStrings, kTypeStringList, true },
- { kEoB2HornStrings, kTypeStringList, true },
- { kEoB2HornSounds, kTypeRawData, false },
- { kEoB2WallOfForceDsX, kLoLTypeRaw16, false },
- { kEoB2WallOfForceDsY, kTypeRawData, false },
- { kEoB2WallOfForceNumW, kTypeRawData, false },
- { kEoB2WallOfForceNumH, kTypeRawData, false },
- { kEoB2WallOfForceShpId, kTypeRawData, false },
+ { kEoB2MainMenuStrings, kStringList, true },
+
+ { kEoB2TransferPortraitFrames, kRawDataBe16, false },
+ { kEoB2TransferConvertTable, kRawData, false },
+ { kEoB2TransferItemTable, kRawData, false },
+ { kEoB2TransferExpTable, kRawDataBe32, false },
+ { kEoB2TransferStrings1, kStringList, true },
+ { kEoB2TransferStrings2, kStringList, true },
+ { kEoB2TransferLabels, kStringList, true },
+
+ { kEoB2IntroStrings, kStringList, true },
+ { kEoB2IntroCPSFiles, kStringList, true },
+ { kEoB2IntroAnimData00, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData01, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData02, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData03, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData04, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData05, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData06, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData07, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData08, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData09, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData10, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData11, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData12, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData13, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData14, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData15, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData16, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData17, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData18, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData19, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData20, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData21, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData22, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData23, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData24, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData25, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData26, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData27, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData28, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData29, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData30, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData31, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData32, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData33, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData34, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData35, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData36, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData37, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData38, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData39, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData40, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData41, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData42, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData43, kEoB2SequenceData, false },
+ { kEoB2IntroShapes00, kEoB2ShapeData, false },
+ { kEoB2IntroShapes01, kEoB2ShapeData, false },
+ { kEoB2IntroShapes04, kEoB2ShapeData, false },
+ { kEoB2IntroShapes07, kEoB2ShapeData, false },
+
+ { kEoB2FinaleStrings, kStringList, true },
+ { kEoB2CreditsData, kRawData, true },
+ { kEoB2FinaleCPSFiles, kStringList, true },
+ { kEoB2FinaleAnimData00, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData01, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData02, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData03, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData04, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData05, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData06, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData07, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData08, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData09, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData10, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData11, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData12, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData13, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData14, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData15, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData16, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData17, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData18, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData19, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData20, kEoB2SequenceData, false },
+ { kEoB2FinaleShapes00, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes03, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes07, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes09, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes10, kEoB2ShapeData, false },
+ { kEoB2NpcShapeData, kRawData, false },
+ { kEoBBaseClassModifierFlags, kRawData, false },
+ { kEoBBaseMonsterStepTable01, kRawData, false },
+ { kEoBBaseMonsterStepTable02, kRawData, false },
+ { kEoBBaseMonsterStepTable1, kRawData, false },
+ { kEoBBaseMonsterStepTable2, kRawData, false },
+ { kEoBBaseMonsterStepTable3, kRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable1, kRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable21, kRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable22, kRawData, false },
+ { kEoBBaseMonsterCloseAttUnkTable, kRawData, false },
+ { kEoBBaseMonsterCloseAttChkTable1, kRawData, false },
+ { kEoBBaseMonsterCloseAttChkTable2, kRawData, false },
+ { kEoBBaseMonsterCloseAttDstTable1, kRawData, false },
+ { kEoBBaseMonsterCloseAttDstTable2, kRawData, false },
+ { kEoBBaseMonsterProximityTable, kRawData, false },
+ { kEoBBaseFindBlockMonstersTable, kRawData, false },
+ { kEoBBaseMonsterDirChangeTable, kRawData, false },
+ { kEoBBaseMonsterDistAttStrings, kStringList, true },
+ { kEoBBaseEncodeMonsterDefs, kRawDataBe16, false },
+ { kEoBBaseNpcPresets, kEoBNpcData, false },
+ { kEoB2Npc1Strings, kStringList, true },
+ { kEoB2Npc2Strings, kStringList, true },
+ { kEoB2MonsterDustStrings, kStringList, true },
+ { kEoB2DreamSteps, kRawData, false },
+ { kEoB2KheldranStrings, kStringList, true },
+ { kEoB2HornStrings, kStringList, true },
+ { kEoB2HornSounds, kRawData, false },
+ { kEoB2WallOfForceDsX, kRawDataBe16, false },
+ { kEoB2WallOfForceDsY, kRawData, false },
+ { kEoB2WallOfForceNumW, kRawData, false },
+ { kEoB2WallOfForceNumH, kRawData, false },
+ { kEoB2WallOfForceShpId, kRawData, false },
// LANDS OF LORE
// Ingame
- { kLoLIngamePakFiles, k2TypeSfxList, false },
-
- { kLoLCharacterDefs, kLoLTypeCharData, true },
- { kLoLIngameSfxFiles, k2TypeSfxList, false },
- { kLoLIngameSfxIndex, kTypeRawData, false },
- { kLoLMusicTrackMap, kTypeRawData, false },
- { kLoLIngameGMSfxIndex, kTypeRawData, false },
- { kLoLIngameMT32SfxIndex, kTypeRawData, false },
- { kLoLIngamePcSpkSfxIndex, kTypeRawData, false },
- { kLoLSpellProperties, kLoLTypeSpellData, false },
- { kLoLGameShapeMap, kTypeRawData, false },
- { kLoLSceneItemOffs, kTypeRawData, false },
- { kLoLCharInvIndex, k3TypeRaw16to8, false },
- { kLoLCharInvDefs, kTypeRawData, false },
- { kLoLCharDefsMan, kLoLTypeRaw16, false },
- { kLoLCharDefsWoman, kLoLTypeRaw16, false },
- { kLoLCharDefsKieran, kLoLTypeRaw16, false },
- { kLoLCharDefsAkshel, kLoLTypeRaw16, false },
- { kLoLExpRequirements, kLoLTypeRaw32, false },
- { kLoLMonsterModifiers1, kLoLTypeRaw16, false },
- { kLoLMonsterModifiers2, kLoLTypeRaw16, false },
- { kLoLMonsterModifiers3, kLoLTypeRaw16, false },
- { kLoLMonsterModifiers4, kLoLTypeRaw16, false },
- { kLoLMonsterShiftOffsets, kTypeRawData, false },
- { kLoLMonsterDirFlags, kTypeRawData, false },
- { kLoLMonsterScaleY, kTypeRawData, false },
- { kLoLMonsterScaleX, kTypeRawData, false },
- { kLoLMonsterScaleWH, kLoLTypeRaw16, false },
- { kLoLFlyingObjectShp, kLoLTypeFlightShpData, false },
- { kLoLInventoryDesc, kLoLTypeRaw16, false },
- { kLoLLevelShpList, k2TypeSfxList, false },
- { kLoLLevelDatList, k2TypeSfxList, false },
- { kLoLCompassDefs, kLoLTypeCompassData, false },
- { kLoLItemPrices, kLoLTypeRaw16, false },
- { kLoLStashSetup, kTypeRawData, false },
-
- { kLoLDscWalls, kTypeRawData, false },
- { kRpgCommonDscShapeIndex, kTypeRawData, false },
- { kLoLDscOvlMap, kTypeRawData, false },
- { kLoLDscScaleWidthData, kLoLTypeRaw16, false },
- { kLoLDscScaleHeightData, kLoLTypeRaw16, false },
- { kRpgCommonDscX, kLoLTypeRaw16, false },
- { kLoLDscY, kTypeRawData, false },
- { kRpgCommonDscTileIndex, kTypeRawData, false },
- { kRpgCommonDscUnk2, kTypeRawData, false },
- { kRpgCommonDscDoorShapeIndex, kTypeRawData, false },
- { kRpgCommonDscDimData1, kTypeRawData, false },
- { kRpgCommonDscDimData2, kTypeRawData, false },
- { kRpgCommonDscBlockMap, kTypeRawData, false },
- { kRpgCommonDscDimMap, kTypeRawData, false },
- { kLoLDscDoorScale, kLoLTypeRaw16, false },
- { kLoLDscOvlIndex, k3TypeRaw16to8, false },
- { kRpgCommonDscBlockIndex, kTypeRawData, false },
- { kLoLDscDoor4, kLoLTypeRaw16, false },
- { kRpgCommonDscDoorY2, kTypeRawData, false },
- { kRpgCommonDscDoorFrameY1, kTypeRawData, false },
- { kRpgCommonDscDoorFrameY2, kTypeRawData, false },
- { kRpgCommonDscDoorFrameIndex1, kTypeRawData, false },
- { kRpgCommonDscDoorFrameIndex2, kTypeRawData, false },
- { kLoLDscDoorX, kLoLTypeRaw16, false },
- { kLoLDscDoorY, kLoLTypeRaw16, false },
-
- { kLoLScrollXTop, k3TypeRaw16to8, false },
- { kLoLScrollYTop, k3TypeRaw16to8, false },
- { kLoLScrollXBottom, k3TypeRaw16to8, false },
- { kLoLScrollYBottom, k3TypeRaw16to8, false },
-
- { kLoLButtonDefs, kLoLTypeButtonDef, false },
- { kLoLButtonList1, k3TypeRaw16to8, false },
- { kLoLButtonList2, k3TypeRaw16to8, false },
- { kLoLButtonList3, k3TypeRaw16to8, false },
- { kLoLButtonList4, k3TypeRaw16to8, false },
- { kLoLButtonList5, k3TypeRaw16to8, false },
- { kLoLButtonList6, k3TypeRaw16to8, false },
- { kLoLButtonList7, k3TypeRaw16to8, false },
- { kLoLButtonList8, k3TypeRaw16to8, false },
-
- { kLoLLegendData, kTypeRawData, false },
- { kLoLMapCursorOvl, kTypeRawData, false },
- { kLoLMapStringId, kLoLTypeRaw16, false },
-
- { kLoLSpellbookAnim, k3TypeRaw16to8, false },
- { kLoLSpellbookCoords, k3TypeRaw16to8, false },
- { kLoLHealShapeFrames, kTypeRawData, false },
- { kLoLLightningDefs, kTypeRawData, false },
- { kLoLFireballCoords, kLoLTypeRaw16, false },
-
- { kLoLCredits, kTypeRawData, false },
-
- { kLoLHistory, kTypeRawData, false },
+ { kLoLIngamePakFiles, kStringList, false },
+
+ { kLoLCharacterDefs, kLoLCharData, true },
+ { kLoLIngameSfxFiles, kStringList, false },
+ { kLoLIngameSfxIndex, kRawData, false },
+ { kLoLMusicTrackMap, kRawData, false },
+ { kLoLIngameGMSfxIndex, kRawData, false },
+ { kLoLIngameMT32SfxIndex, kRawData, false },
+ { kLoLIngamePcSpkSfxIndex, kRawData, false },
+ { kLoLSpellProperties, kLoLSpellData, false },
+ { kLoLGameShapeMap, kRawData, false },
+ { kLoLSceneItemOffs, kRawData, false },
+ { kLoLCharInvIndex, kRawData, false },
+ { kLoLCharInvDefs, kRawData, false },
+ { kLoLCharDefsMan, kRawDataBe16, false },
+ { kLoLCharDefsWoman, kRawDataBe16, false },
+ { kLoLCharDefsKieran, kRawDataBe16, false },
+ { kLoLCharDefsAkshel, kRawDataBe16, false },
+ { kLoLExpRequirements, kRawDataBe32, false },
+ { kLoLMonsterModifiers1, kRawDataBe16, false },
+ { kLoLMonsterModifiers2, kRawDataBe16, false },
+ { kLoLMonsterModifiers3, kRawDataBe16, false },
+ { kLoLMonsterModifiers4, kRawDataBe16, false },
+ { kLoLMonsterShiftOffsets, kRawData, false },
+ { kLoLMonsterDirFlags, kRawData, false },
+ { kLoLMonsterScaleY, kRawData, false },
+ { kLoLMonsterScaleX, kRawData, false },
+ { kLoLMonsterScaleWH, kRawDataBe16, false },
+ { kLoLFlyingObjectShp, kLoLFlightShpData, false },
+ { kLoLInventoryDesc, kRawDataBe16, false },
+ { kLoLLevelShpList, kStringList, false },
+ { kLoLLevelDatList, kStringList, false },
+ { kLoLCompassDefs, kLoLCompassData, false },
+ { kLoLItemPrices, kRawDataBe16, false },
+ { kLoLStashSetup, kRawData, false },
+
+ { kLoLDscWalls, kRawData, false },
+ { kRpgCommonDscShapeIndex, kRawData, false },
+ { kLoLDscOvlMap, kRawData, false },
+ { kLoLDscScaleWidthData, kRawDataBe16, false },
+ { kLoLDscScaleHeightData, kRawDataBe16, false },
+ { kRpgCommonDscX, kRawDataBe16, false },
+ { kLoLBaseDscY, kRawData, false },
+ { kRpgCommonDscTileIndex, kRawData, false },
+ { kRpgCommonDscUnk2, kRawData, false },
+ { kRpgCommonDscDoorShapeIndex, kRawData, false },
+ { kRpgCommonDscDimData1, kRawData, false },
+ { kRpgCommonDscDimData2, kRawData, false },
+ { kRpgCommonDscBlockMap, kRawData, false },
+ { kRpgCommonDscDimMap, kRawData, false },
+ { kLoLDscDoorScale, kRawDataBe16, false },
+ { kLoLDscOvlIndex, kRawData, false },
+ { kRpgCommonDscBlockIndex, kRawData, false },
+ { kLoLDscDoor4, kRawDataBe16, false },
+ { kRpgCommonDscDoorY2, kRawData, false },
+ { kRpgCommonDscDoorFrameY1, kRawData, false },
+ { kRpgCommonDscDoorFrameY2, kRawData, false },
+ { kRpgCommonDscDoorFrameIndex1, kRawData, false },
+ { kRpgCommonDscDoorFrameIndex2, kRawData, false },
+ { kLoLDscDoorX, kRawDataBe16, false },
+ { kLoLDscDoorY, kRawDataBe16, false },
+
+ { kLoLScrollXTop, kRawData, false },
+ { kLoLScrollYTop, kRawData, false },
+ { kLoLScrollXBottom, kRawData, false },
+ { kLoLScrollYBottom, kRawData, false },
+
+ { kLoLButtonDefs, kLoLButtonData, false },
+ { kLoLButtonList1, kRawData, false },
+ { kLoLButtonList2, kRawData, false },
+ { kLoLButtonList3, kRawData, false },
+ { kLoLButtonList4, kRawData, false },
+ { kLoLButtonList5, kRawData, false },
+ { kLoLButtonList6, kRawData, false },
+ { kLoLButtonList7, kRawData, false },
+ { kLoLButtonList8, kRawData, false },
+
+ { kLoLLegendData, kRawData, false },
+ { kLoLMapCursorOvl, kRawData, false },
+ { kLoLMapStringId, kRawDataBe16, false },
+
+ { kLoLSpellbookAnim, kRawData, false },
+ { kLoLSpellbookCoords, kRawData, false },
+ { kLoLHealShapeFrames, kRawData, false },
+ { kLoLLightningDefs, kRawData, false },
+ { kLoLFireballCoords, kRawDataBe16, false },
+
+ { kLoLCredits, kRawData, false },
+
+ { kLoLHistory, kRawData, false },
{ -1, 0, 0 }
};
@@ -775,256 +773,86 @@ byte getSpecialID(int special) {
// filename processing
-uint32 getFilename(const ExtractInformation *info, const int id) {
- const ExtractFilename *fDesc = getFilenameDesc(id);
-
- if (!fDesc)
- return 0;
-
+uint32 getFilename(int game, int plat, int spec, int lang, const ExtractFilename *fDesc) {
// GAME, PLATFORM, SPECIAL, ID, LANG
- return ((getGameID(info->game) & 0xF) << 24) |
- ((getPlatformID(info->platform) & 0xF) << 20) |
- ((getSpecialID(info->special) & 0xF) << 16) |
- ((id & 0xFFF) << 4) |
- ((getLanguageID(fDesc->langSpecific ? info->lang : UNK_LANG) & 0xF) << 0);
+ return ((getGameID(game) & 0xF) << 24) |
+ ((getPlatformID(plat) & 0xF) << 20) |
+ ((getSpecialID(spec) & 0xF) << 16) |
+ ((fDesc->id & 0xFFF) << 4) |
+ ((getLanguageID(fDesc->langSpecific ? lang : UNK_LANG) & 0xF) << 0);
}
-// TODO: Get rid of this
-bool getFilename(char *dstFilename, const ExtractInformation *info, const int id) {
- sprintf(dstFilename, "%08X", getFilename(info, id));
- return true;
-}
-
-// index generation
+uint32 getFilename(const Game *g, const int id) {
+ const ExtractFilename *fDesc = getFilenameDesc(id);
-typedef uint16 GameDef;
+ if (!fDesc)
+ return 0;
-GameDef createGameDef(const ExtractInformation *eI) {
- return ((getGameID(eI->game) & 0xF) << 12) |
- ((getPlatformID(eI->platform) & 0xF) << 8) |
- ((getSpecialID(eI->special) & 0xF) << 4) |
- ((getLanguageID(eI->lang) & 0xF) << 0);
+ return getFilename(g->game, g->platform, g->special, g->lang, fDesc);
}
-struct Index {
- Index() : version(0), includedGames(0), gameList() {}
-
- uint32 version;
- uint32 includedGames;
-
- typedef std::list<GameDef> GameList;
- GameList gameList;
-};
-
-Index parseIndex(const uint8 *data, uint32 size) {
- Index result;
-
- if (size < 8)
- return result;
-
- result.version = READ_BE_UINT32(data); data += 4;
- result.includedGames = READ_BE_UINT32(data); data += 4;
-
- if (result.includedGames * 2 + 8 != size) {
- result.version = result.includedGames = 0;
- return result;
- }
-
- for (uint32 i = 0; i < result.includedGames; ++i) {
- GameDef game = READ_BE_UINT16(data); data += 2;
- result.gameList.push_back(game);
- }
-
- return result;
+uint32 getFilename(const ResourceProvider *provider, const ExtractFilename *fDesc) {
+ return getFilename(provider->game, provider->platform, provider->special, provider->language, fDesc);
}
-bool updateIndex(PAKFile &out, const ExtractInformation *eI) {
- uint32 size = 0;
- const uint8 *data = out.getFileData("INDEX", &size);
-
- Index index;
- if (data)
- index = parseIndex(data, size);
-
- GameDef gameDef = createGameDef(eI);
- if (index.version == kKyraDatVersion) {
- if (std::find(index.gameList.begin(), index.gameList.end(), gameDef) == index.gameList.end()) {
- ++index.includedGames;
- index.gameList.push_back(gameDef);
- } else {
- // Already included in the game list, thus we do not need any further processing here.
- return true;
- }
- } else {
- index.version = kKyraDatVersion;
- index.includedGames = 1;
- index.gameList.push_back(gameDef);
- }
-
- const uint32 indexBufferSize = 8 + index.includedGames * 2;
- uint8 *indexBuffer = new uint8[indexBufferSize];
- assert(indexBuffer);
- uint8 *dst = indexBuffer;
- WRITE_BE_UINT32(dst, index.version); dst += 4;
- WRITE_BE_UINT32(dst, index.includedGames); dst += 4;
- for (Index::GameList::const_iterator i = index.gameList.begin(); i != index.gameList.end(); ++i) {
- WRITE_BE_UINT16(dst, *i); dst += 2;
- }
-
- out.removeFile("INDEX");
- if (!out.addFile("INDEX", indexBuffer, indexBufferSize)) {
- fprintf(stderr, "ERROR: couldn't update kyra.dat INDEX\n");
- delete[] indexBuffer;
- return false;
- }
-
+bool getFilename(char *dstFilename, const Game *g, const int id) {
+ sprintf(dstFilename, "%08X", getFilename(g, id));
return true;
}
-bool checkIndex(PAKFile &file) {
- uint32 size = 0;
- const uint8 *data = file.getFileData("INDEX", &size);
- if (!data)
- return false;
-
- Index index = parseIndex(data, size);
+// index generation
- if (index.version != kKyraDatVersion)
- return false;
- if (index.includedGames * 2 + 8 != size)
- return false;
+typedef uint16 GameDef;
- return true;
+GameDef createGameDef(const Game *g) {
+ return ((getGameID(g->game) & 0xF) << 12) |
+ ((getPlatformID(g->platform) & 0xF) << 8) |
+ ((getSpecialID(g->special) & 0xF) << 4) |
+ ((getLanguageID(g->lang) & 0xF) << 0);
+ return 0;
}
// main processing
void printHelp(const char *f) {
printf("Usage:\n");
- printf("%s output inputfiles ...\n", f);
+ printf("%s output\n", f);
}
-bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size);
-const Game *findGame(const byte *buffer, const uint32 size);
-
-typedef std::map<std::string, std::string> MD5Map;
-MD5Map createMD5Sums(int files, const char * const *filenames);
-
-struct File {
- File() : data(0), size(0) {}
- File(uint8 *d, uint32 s) : data(d), size(s) {}
-
- uint8 *data;
- uint32 size;
-};
-typedef std::map<const Game *, File> GameMap;
-GameMap createGameMap(const MD5Map &map);
+void outputAllResources(PAKFile &out);
+void outputAllGames(PAKFile &out, std::vector<GameDef> &games);
int main(int argc, char *argv[]) {
- if (argc < 3) {
+ if (argc != 2) {
printHelp(argv[0]);
return -1;
}
- // Special case for developer mode of this tool:
- // With "--create filename offset size" the tool will output
- // a search entry for the specifed data in the specified file.
- if (!strcmp(argv[1], "--create")) {
- if (argc < 5) {
- printf("Developer usage: %s --create input_file hex_offset hex_size\n", argv[0]);
- return -1;
- }
-
- uint32 offset, size;
- sscanf(argv[3], "%x", &offset);
- sscanf(argv[4], "%x", &size);
-
- FILE *input = fopen(argv[2], "rb");
- if (!input)
- error("Couldn't open file '%s'", argv[2]);
-
- byte *buffer = new byte[size];
- fseek(input, offset, SEEK_SET);
- if (fread(buffer, 1, size, input) != size) {
- delete[] buffer;
- error("Couldn't read from file '%s'", argv[2]);
- }
-
- fclose(input);
-
- SearchData d = SearchCreator::create(buffer, size);
- delete[] buffer;
-
- printf("{ 0x%.08X, 0x%.08X, { {", d.size, d.byteSum);
- for (int j = 0; j < 16; ++j) {
- printf(" 0x%.2X", d.hash.digest[j]);
- if (j != 15)
- printf(",");
- else
- printf(" } } }\n");
- }
-
- return 0;
- }
-
PAKFile out;
- out.loadFile(argv[1], false);
- // When the output file is no valid kyra.dat file, we will delete
- // all the output.
- if (!checkIndex(out))
- out.clearFile();
+ // First step: Write out all resources.
+ outputAllResources(out);
- MD5Map inputFiles = createMD5Sums(argc - 2, &argv[2]);
+ // Second step: Write all game version information
+ std::vector<GameDef> games;
+ outputAllGames(out, games);
- GameMap games = createGameMap(inputFiles);
-
- // Check for unused input files
- MD5Map unusedFiles = inputFiles;
- for (GameMap::const_iterator i = games.begin(); i != games.end(); ++i) {
- unusedFiles.erase(i->first->md5[0]);
- if (i->first->md5[1])
- unusedFiles.erase(i->first->md5[1]);
+ // Third step: Write index file
+ byte *const indexBuffer = new byte[8 + 2 * games.size()];
+ byte *dst = indexBuffer;
+ WRITE_BE_UINT32(dst, kKyraDatVersion); dst += 4;
+ WRITE_BE_UINT32(dst, games.size()); dst += 4;
+ for (std::vector<GameDef>::const_iterator i = games.begin(), end = games.end(); i != end; ++i) {
+ WRITE_BE_UINT16(dst, *i); dst += 2;
}
-
- for (MD5Map::const_iterator i = unusedFiles.begin(); i != unusedFiles.end(); ++i)
- printf("Input file '%s' with md5 sum '%s' is not known.\n", i->second.c_str(), i->first.c_str());
-
- unusedFiles.clear();
-
- // Short circuit, in case no games are found.
- if (games.empty()) {
- printf("No games found. Exiting prematurely\n");
- return -1;
+ if (!out.addFile("INDEX", indexBuffer, 8 + 2 * games.size())) {
+ error("couldn't write INDEX file");
}
- // Process all games found
- for (GameMap::const_iterator i = games.begin(); i != games.end(); ++i) {
- MD5Map::const_iterator f1 = inputFiles.find(i->first->md5[0]);
- MD5Map::const_iterator f2 = inputFiles.end();
- if (i->first->md5[1])
- f2 = inputFiles.find(i->first->md5[1]);
-
- if (f2 != inputFiles.end())
- printf("Processing files '%s' and '%s'...\n", f1->second.c_str(), f2->second.c_str());
- else
- printf("Processing file '%s'...\n", f1->second.c_str());
-
- if (!process(out, i->first, i->second.data, i->second.size))
- printf("FAILED\n");
- else
- printf("OK\n");
+ if (!out.saveFile(argv[1])) {
+ error("couldn't save changes to '%s'", argv[1]);
}
- // Free up memory
- for (GameMap::iterator i = games.begin(); i != games.end(); ++i)
- delete[] i->second.data;
- games.clear();
- inputFiles.clear();
-
- if (!out.saveFile(argv[1]))
- error("couldn't save changes to '%s'", argv[1]);
-
uint8 digest[16];
if (!md5_file(argv[1], digest, 0))
error("couldn't calc. md5 for file '%s'", argv[1]);
@@ -1038,1309 +866,46 @@ int main(int argc, char *argv[]) {
return 0;
}
-MD5Map createMD5Sums(int files, const char * const *filenames) {
- MD5Map result;
-
- while (files--) {
- const char *inputFile = *filenames++;
- FILE *input = fopen(inputFile, "rb");
-
- uint32 size = fileSize(input);
- fseek(input, 0, SEEK_SET);
-
- byte *buffer = new uint8[size];
- assert(buffer);
-
- if (fread(buffer, 1, size, input) != size) {
- warning("couldn't read from file '%s', skipping it", inputFile);
- delete[] buffer;
- fclose(input);
- continue;
- }
- fclose(input);
-
- md5_context ctx;
- uint8 digest[16];
- char md5Str[33];
-
- md5_starts(&ctx);
- md5_update(&ctx, buffer, size);
- md5_finish(&ctx, digest);
-
- for (int j = 0; j < 16; ++j)
- sprintf(md5Str + j*2, "%02x", (int)digest[j]);
+void outputAllResources(PAKFile &out) {
+ char filename[128];
+ for (const ResourceProvider *resource = obtainResourceProviders();
+ resource->id != kMaxResIDs; ++resource) {
+ const ExtractFilename *desc = getFilenameDesc(resource->id);
- delete[] buffer;
+ snprintf(filename, sizeof(filename), "%08X", getFilename(resource, desc));
- result[md5Str] = inputFile;
+ writeResource(out, filename, (ResTypes)desc->type, resource->provider);
}
-
- return result;
}
-GameMap createGameMap(const MD5Map &map) {
- GameMap result;
+bool createIDMap(PAKFile &out, const Game *g, const int *needList);
- for (const Game * const *g = gameDescs; *g != 0; ++g) {
- for (const Game *sub = *g; sub->game != -1; ++sub) {
- MD5Map::const_iterator file1 = map.find(sub->md5[0]);
- if (file1 == map.end())
- continue;
-
- MD5Map::const_iterator file2 = map.end();
- if (sub->md5[1] != 0) {
- file2 = map.find(sub->md5[1]);
- if (file2 == map.end())
- continue;
+void outputAllGames(PAKFile &out, std::vector<GameDef> &games) {
+ for (const Game *const *descs = gameDescs;
+ *descs; ++descs) {
+ for (const Game *game = *descs;
+ game->game != -1; ++game) {
+ const GameDef gameDef = createGameDef(game);
+ if (!createIDMap(out, game, getNeedList(game))) {
+ error("Could not create ID map for game %04X", gameDef);
}
-
- FILE *f1 = fopen(file1->second.c_str(), "rb");
- FILE *f2 = 0;
-
- if (file2 != map.end())
- f2 = fopen(file2->second.c_str(), "rb");
-
- uint32 file1Size = fileSize(f1);
- uint32 file2Size = 0;
- if (f2)
- file2Size = fileSize(f2);
-
- uint8 *buffer = new uint8[file1Size + file2Size];
- assert(buffer);
-
- fread(buffer, 1, file1Size, f1);
- if (f2)
- fread(buffer + file1Size, 1, file2Size, f2);
-
- fclose(f1);
- if (f2)
- fclose(f2);
-
- result[sub] = File(buffer, file1Size + file2Size);
+ games.push_back(gameDef);
}
}
-
- return result;
-}
-
-const char *getIdString(const int id) {
- switch (id) {
- case k1ForestSeq:
- return "k1ForestSeq";
- case k1KallakWritingSeq:
- return "k1KallakWritingSeq";
- case k1KyrandiaLogoSeq:
- return "k1KyrandiaLogoSeq";
- case k1KallakMalcolmSeq:
- return "k1KallakMalcolmSeq";
- case k1MalcolmTreeSeq:
- return "k1MalcolmTreeSeq";
- case k1WestwoodLogoSeq:
- return "k1WestwoodLogoSeq";
- case k1Demo1Seq:
- return "k1Demo1Seq";
- case k1Demo2Seq:
- return "k1Demo2Seq";
- case k1Demo3Seq:
- return "k1Demo3Seq";
- case k1Demo4Seq:
- return "k1Demo4Seq";
- case k1AmuleteAnimSeq:
- return "k1AmuleteAnimSeq";
- case k1OutroReunionSeq:
- return "k1OutroReunionSeq";
- case k1IntroCPSStrings:
- return "k1IntroCPSStrings";
- case k1IntroCOLStrings:
- return "k1IntroCOLStrings";
- case k1IntroWSAStrings:
- return "k1IntroWSAStrings";
- case k1IntroStrings:
- return "k1IntroStrings";
- case k1OutroHomeString:
- return "k1OutroHomeString";
- case k1RoomFilenames:
- return "k1RoomFilenames";
- case k1RoomList:
- return "k1RoomList";
- case k1CharacterImageFilenames:
- return "k1CharacterImageFilenames";
- case k1AudioTracks:
- return "k1AudioTracks";
- case k1AudioTracks2:
- return "k1AudioTracks2";
- case k1AudioTracksIntro:
- return "k1AudioTracksIntro";
- case k1ItemNames:
- return "k1ItemNames";
- case k1TakenStrings:
- return "k1TakenStrings";
- case k1PlacedStrings:
- return "k1PlacedStrings";
- case k1DroppedStrings:
- return "k1DroppedStrings";
- case k1NoDropStrings:
- return "k1NoDropStrings";
- case k1PutDownString:
- return "k1PutDownString";
- case k1WaitAmuletString:
- return "k1WaitAmuletString";
- case k1BlackJewelString:
- return "k1BlackJewelString";
- case k1PoisonGoneString:
- return "k1PoisonGoneString";
- case k1HealingTipString:
- return "k1HealingTipString";
- case k1WispJewelStrings:
- return "k1WispJewelStrings";
- case k1MagicJewelStrings:
- return "k1MagicJewelStrings";
- case k1ThePoisonStrings:
- return "k1ThePoisonStrings";
- case k1FluteStrings:
- return "k1FluteStrings";
- case k1FlaskFullString:
- return "k1FlaskFullString";
- case k1FullFlaskString:
- return "k1FullFlaskString";
- case k1VeryCleverString:
- return "k1VeryCleverString";
- case k1NewGameString:
- return "k1NewGameString";
- case k1DefaultShapes:
- return "k1DefaultShapes";
- case k1Healing1Shapes:
- return "k1Healing1Shapes";
- case k1Healing2Shapes:
- return "k1Healing2Shapes";
- case k1PoisonDeathShapes:
- return "k1PoisonDeathShapes";
- case k1FluteShapes:
- return "k1FluteShapes";
- case k1Winter1Shapes:
- return "k1Winter1Shapes";
- case k1Winter2Shapes:
- return "k1Winter2Shapes";
- case k1Winter3Shapes:
- return "k1Winter3Shapes";
- case k1DrinkShapes:
- return "k1DrinkShapes";
- case k1WispShapes:
- return "k1WispShapes";
- case k1MagicAnimShapes:
- return "k1MagicAnimShapes";
- case k1BranStoneShapes:
- return "k1BranStoneShapes";
- case k1SpecialPalette1:
- return "k1SpecialPalette1";
- case k1SpecialPalette2:
- return "k1SpecialPalette2";
- case k1SpecialPalette3:
- return "k1SpecialPalette3";
- case k1SpecialPalette4:
- return "k1SpecialPalette4";
- case k1SpecialPalette5:
- return "k1SpecialPalette5";
- case k1SpecialPalette6:
- return "k1SpecialPalette6";
- case k1SpecialPalette7:
- return "k1SpecialPalette7";
- case k1SpecialPalette8:
- return "k1SpecialPalette8";
- case k1SpecialPalette9:
- return "k1SpecialPalette9";
- case k1SpecialPalette10:
- return "k1SpecialPalette10";
- case k1SpecialPalette11:
- return "k1SpecialPalette11";
- case k1SpecialPalette12:
- return "k1SpecialPalette12";
- case k1SpecialPalette13:
- return "k1SpecialPalette13";
- case k1SpecialPalette14:
- return "k1SpecialPalette14";
- case k1SpecialPalette15:
- return "k1SpecialPalette15";
- case k1SpecialPalette16:
- return "k1SpecialPalette16";
- case k1SpecialPalette17:
- return "k1SpecialPalette17";
- case k1SpecialPalette18:
- return "k1SpecialPalette18";
- case k1SpecialPalette19:
- return "k1SpecialPalette19";
- case k1SpecialPalette20:
- return "k1SpecialPalette20";
- case k1SpecialPalette21:
- return "k1SpecialPalette21";
- case k1SpecialPalette22:
- return "k1SpecialPalette22";
- case k1SpecialPalette23:
- return "k1SpecialPalette23";
- case k1SpecialPalette24:
- return "k1SpecialPalette24";
- case k1SpecialPalette25:
- return "k1SpecialPalette25";
- case k1SpecialPalette26:
- return "k1SpecialPalette26";
- case k1SpecialPalette27:
- return "k1SpecialPalette27";
- case k1SpecialPalette28:
- return "k1SpecialPalette28";
- case k1SpecialPalette29:
- return "k1SpecialPalette29";
- case k1SpecialPalette30:
- return "k1SpecialPalette30";
- case k1SpecialPalette31:
- return "k1SpecialPalette31";
- case k1SpecialPalette32:
- return "k1SpecialPalette32";
- case k1SpecialPalette33:
- return "k1SpecialPalette33";
- case k1GUIStrings:
- return "k1GUIStrings";
- case k1ConfigStrings:
- return "k1ConfigStrings";
- case k1TownsMusicFadeTable:
- return "k1TownsMusicFadeTable";
- case k1TownsSFXwdTable:
- return "k1TownsSFXwdTable";
- case k1TownsSFXbtTable:
- return "k1TownsSFXbtTable";
- case k1TownsCDATable:
- return "k1TownsCDATable";
- case k1PC98StoryStrings:
- return "k1PC98StoryStrings";
- case k1PC98IntroSfx:
- return "k1PC98IntroSfx";
- case k1CreditsStrings:
- return "k1CreditsStrings";
- case k1AmigaIntroSFXTable:
- return "k1AmigaIntroSFXTable";
- case k1AmigaGameSFXTable:
- return "k1AmigaGameSFXTable";
- 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 k2IngameSfxIndex:
- return "k2IngameSfxIndex";
- case k2IngameTracks:
- return "k2IngameTracks";
- case k2IngameCDA:
- return "k2IngameCDA";
- case k2IngameTalkObjIndex:
- return "k2IngameTalkObjIndex";
- case k2IngameTimJpStrings:
- return "k2IngameTimJpStrings";
- case k2IngameShapeAnimData:
- return "k2IngameShapeAnimData";
- 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 kEoBBaseChargenStrings1:
- return "kEoBBaseChargenStrings1";
- case kEoBBaseChargenStrings2:
- return "kEoBBaseChargenStrings2";
- case kEoBBaseChargenStartLevels:
- return "kEoBBaseChargenStartLevels";
- case kEoBBaseChargenStatStrings:
- return "kEoBBaseChargenStatStrings";
- case kEoBBaseChargenRaceSexStrings:
- return "kEoBBaseChargenRaceSexStrings";
- case kEoBBaseChargenClassStrings:
- return "kEoBBaseChargenClassStrings";
- case kEoBBaseChargenAlignmentStrings:
- return "kEoBBaseChargenAlignmentStrings";
- case kEoBBaseChargenEnterGameStrings:
- return "kEoBBaseChargenEnterGameStrings";
- case kEoBBaseChargenClassMinStats:
- return "kEoBBaseChargenClassMinStats";
- case kEoBBaseChargenRaceMinStats:
- return "kEoBBaseChargenRaceMinStats";
- case kEoBBaseChargenRaceMaxStats:
- return "kEoBBaseChargenRaceMaxStats";
- case kEoBBaseSaveThrowTable1:
- return "kEoBBaseSaveThrowTable1";
- case kEoBBaseSaveThrowTable2:
- return "kEoBBaseSaveThrowTable2";
- case kEoBBaseSaveThrowTable3:
- return "kEoBBaseSaveThrowTable3";
- case kEoBBaseSaveThrowTable4:
- return "kEoBBaseSaveThrowTable4";
- case kEoBBaseSaveThrwLvlIndex:
- return "kEoBBaseSaveThrwLvlIndex";
- case kEoBBaseSaveThrwModDiv:
- return "kEoBBaseSaveThrwModDiv";
- case kEoBBaseSaveThrwModExt:
- return "kEoBBaseSaveThrwModExt";
- case kEoBBasePryDoorStrings:
- return "kEoBBasePryDoorStrings";
- case kEoBBaseWarningStrings:
- return "kEoBBaseWarningStrings";
- case kEoBBaseItemSuffixStringsRings:
- return "kEoBBaseItemSuffixStringsRings";
- case kEoBBaseItemSuffixStringsPotions:
- return "kEoBBaseItemSuffixStringsPotions";
- case kEoBBaseItemSuffixStringsWands:
- return "kEoBBaseItemSuffixStringsWands";
- case kEoBBaseRipItemStrings:
- return "kEoBBaseRipItemStrings";
- case kEoBBaseCursedString:
- return "kEoBBaseCursedString";
- case kEoBBaseEnchantedString:
- return "kEoBBaseEnchantedString";
- case kEoBBaseMagicObjectStrings:
- return "kEoBBaseMagicObjectStrings";
- case kEoBBaseMagicObject5String:
- return "kEoBBaseMagicObject5String";
- case kEoBBasePatternSuffix:
- return "kEoBBasePatternSuffix";
- case kEoBBasePatternGrFix1:
- return "kEoBBasePatternGrFix1";
- case kEoBBasePatternGrFix2:
- return "kEoBBasePatternGrFix2";
- case kEoBBaseValidateArmorString:
- return "kEoBBaseValidateArmorString";
- case kEoBBaseValidateCursedString:
- return "kEoBBaseValidateCursedString";
- case kEoBBaseValidateNoDropString:
- return "kEoBBaseValidateNoDropString";
- case kEoBBasePotionStrings:
- return "kEoBBasePotionStrings";
- case kEoBBaseWandString:
- return "kEoBBaseWandString";
- case kEoBBaseItemMisuseStrings:
- return "kEoBBaseItemMisuseStrings";
- case kEoBBaseTakenStrings:
- return "kEoBBaseTakenStrings";
- case kEoBBasePotionEffectStrings:
- return "kEoBBasePotionEffectStrings";
- case kEoBBaseYesNoStrings:
- return "kEoBBaseYesNoStrings";
- case kRpgCommonMoreStrings:
- return "kRpgCommonMoreStrings";
- case kEoBBaseNpcMaxStrings:
- return "kEoBBaseNpcMaxStrings";
- case kEoBBaseOkStrings:
- return "kEoBBaseOkStrings";
- case kEoBBaseNpcJoinStrings:
- return "kEoBBaseNpcJoinStrings";
- case kEoBBaseCancelStrings:
- return "kEoBBaseCancelStrings";
- case kEoBBaseAbortStrings:
- return "kEoBBaseAbortStrings";
- case kEoBBaseMenuStringsMain:
- return "kEoBBaseMenuStringsMain";
- case kEoBBaseMenuStringsSaveLoad:
- return "kEoBBaseMenuStringsSaveLoad";
- case kEoBBaseMenuStringsOnOff:
- return "kEoBBaseMenuStringsOnOff";
- case kEoBBaseMenuStringsSpells:
- return "kEoBBaseMenuStringsSpells";
- case kEoBBaseMenuStringsRest:
- return "kEoBBaseMenuStringsRest";
- case kEoBBaseMenuStringsDrop:
- return "kEoBBaseMenuStringsDrop";
- case kEoBBaseMenuStringsExit:
- return "kEoBBaseMenuStringsExit";
- case kEoBBaseMenuStringsStarve:
- return "kEoBBaseMenuStringsStarve";
- case kEoBBaseMenuStringsScribe:
- return "kEoBBaseMenuStringsScribe";
- case kEoBBaseMenuStringsDrop2:
- return "kEoBBaseMenuStringsDrop2";
- case kEoBBaseMenuStringsHead:
- return "kEoBBaseMenuStringsHead";
- case kEoBBaseMenuStringsPoison:
- return "kEoBBaseMenuStringsPoison";
- case kEoBBaseMenuStringsMgc:
- return "kEoBBaseMenuStringsMgc";
- case kEoBBaseMenuStringsPrefs:
- return "kEoBBaseMenuStringsPrefs";
- case kEoBBaseMenuStringsRest2:
- return "kEoBBaseMenuStringsRest2";
- case kEoBBaseMenuStringsRest3:
- return "kEoBBaseMenuStringsRest3";
- case kEoBBaseMenuStringsRest4:
- return "kEoBBaseMenuStringsRest4";
- case kEoBBaseMenuStringsDefeat:
- return "kEoBBaseMenuStringsDefeat";
- case kEoBBaseMenuStringsTransfer:
- return "kEoBBaseMenuStringsTransfer";
- case kEoBBaseMenuStringsSpec:
- return "kEoBBaseMenuStringsSpec";
- case kEoBBaseMenuStringsSpellNo:
- return "kEoBBaseMenuStringsSpellNo";
- case kEoBBaseMenuYesNoStrings:
- return "kEoBBaseMenuYesNoStrings";
- case kEoBBaseSpellLevelsMage:
- return "kEoBBaseSpellLevelsMage";
- case kEoBBaseSpellLevelsCleric:
- return "kEoBBaseSpellLevelsCleric";
- case kEoBBaseNumSpellsCleric:
- return "kEoBBaseNumSpellsCleric";
- case kEoBBaseNumSpellsWisAdj:
- return "kEoBBaseNumSpellsWisAdj";
- case kEoBBaseNumSpellsPal:
- return "kEoBBaseNumSpellsPal";
- case kEoBBaseNumSpellsMage:
- return "kEoBBaseNumSpellsMage";
- case kEoBBaseCharGuiStringsHp:
- return "kEoBBaseCharGuiStringsHp";
- case kEoBBaseCharGuiStringsWp1:
- return "kEoBBaseCharGuiStringsWp1";
- case kEoBBaseCharGuiStringsWp2:
- return "kEoBBaseCharGuiStringsWp2";
- case kEoBBaseCharGuiStringsWr:
- return "kEoBBaseCharGuiStringsWr";
- case kEoBBaseCharGuiStringsSt1:
- return "kEoBBaseCharGuiStringsSt1";
- case kEoBBaseCharGuiStringsSt2:
- return "kEoBBaseCharGuiStringsSt2";
- case kEoBBaseCharGuiStringsIn:
- return "kEoBBaseCharGuiStringsIn";
- case kEoBBaseCharStatusStrings7:
- return "kEoBBaseCharStatusStrings7";
- case kEoBBaseCharStatusStrings81:
- return "kEoBBaseCharStatusStrings81";
- case kEoBBaseCharStatusStrings82:
- return "kEoBBaseCharStatusStrings82";
- case kEoBBaseCharStatusStrings9:
- return "kEoBBaseCharStatusStrings9";
- case kEoBBaseCharStatusStrings12:
- return "kEoBBaseCharStatusStrings12";
- case kEoBBaseCharStatusStrings131:
- return "kEoBBaseCharStatusStrings131";
- case kEoBBaseCharStatusStrings132:
- return "kEoBBaseCharStatusStrings132";
- case kEoBBaseLevelGainStrings:
- return "kEoBBaseLevelGainStrings";
- case kEoBBaseExperienceTable0:
- return "kEoBBaseExperienceTable0";
- case kEoBBaseExperienceTable1:
- return "kEoBBaseExperienceTable1";
- case kEoBBaseExperienceTable2:
- return "kEoBBaseExperienceTable2";
- case kEoBBaseExperienceTable3:
- return "kEoBBaseExperienceTable3";
- case kEoBBaseExperienceTable4:
- return "kEoBBaseExperienceTable4";
- case kEoBBaseWllFlagPreset:
- return "kEoBBaseWllFlagPreset";
- case kEoBBaseDscShapeCoords:
- return "kEoBBaseDscShapeCoords";
- case kEoBBaseDscDoorScaleOffs:
- return "kEoBBaseDscDoorScaleOffs";
- case kEoBBaseDscDoorScaleMult1:
- return "kEoBBaseDscDoorScaleMult1";
- case kEoBBaseDscDoorScaleMult2:
- return "kEoBBaseDscDoorScaleMult2";
- case kEoBBaseDscDoorScaleMult3:
- return "kEoBBaseDscDoorScaleMult3";
- case kEoBBaseDscDoorScaleMult4:
- return "kEoBBaseDscDoorScaleMult4";
- case kEoBBaseDscDoorScaleMult5:
- return "kEoBBaseDscDoorScaleMult5";
- case kEoBBaseDscDoorScaleMult6:
- return "kEoBBaseDscDoorScaleMult6";
- case kEoBBaseDscDoorType5Offs:
- return "kEoBBaseDscDoorType5Offs";
- case kEoBBaseDscDoorXE:
- return "kEoBBaseDscDoorXE";
- case kEoBBaseDscDoorY1:
- return "kEoBBaseDscDoorY1";
- case kEoBBaseDscDoorY3:
- return "kEoBBaseDscDoorY3";
- case kEoBBaseDscDoorY4:
- return "kEoBBaseDscDoorY4";
- case kEoBBaseDscDoorY5:
- return "kEoBBaseDscDoorY5";
- case kEoBBaseDscDoorY6:
- return "kEoBBaseDscDoorY6";
- case kEoBBaseDscDoorY7:
- return "kEoBBaseDscDoorY7";
- case kEoBBaseDscDoorCoordsExt:
- return "kEoBBaseDscDoorCoordsExt";
- case kEoBBaseDscItemPosIndex:
- return "kEoBBaseDscItemPosIndex";
- case kEoBBaseDscItemShpX:
- return "kEoBBaseDscItemShpX";
- case kEoBBaseDscItemPosUnk:
- return "kEoBBaseDscItemPosUnk";
- case kEoBBaseDscItemTileIndex:
- return "kEoBBaseDscItemTileIndex";
- case kEoBBaseDscItemShapeMap:
- return "kEoBBaseDscItemShapeMap";
- case kEoBBaseDscMonsterFrmOffsTbl1:
- return "kEoBBaseDscMonsterFrmOffsTbl1";
- case kEoBBaseDscMonsterFrmOffsTbl2:
- return "kEoBBaseDscMonsterFrmOffsTbl2";
- case kEoBBaseInvSlotX:
- return "kEoBBaseInvSlotX";
- case kEoBBaseInvSlotY:
- return "kEoBBaseInvSlotY";
- case kEoBBaseSlotValidationFlags:
- return "kEoBBaseSlotValidationFlags";
- case kEoBBaseProjectileWeaponTypes:
- return "kEoBBaseProjectileWeaponTypes";
- case kEoBBaseWandTypes:
- return "kEoBBaseWandTypes";
- case kEoBBaseDrawObjPosIndex:
- return "kEoBBaseDrawObjPosIndex";
- case kEoBBaseFlightObjFlipIndex:
- return "kEoBBaseFlightObjFlipIndex";
- case kEoBBaseFlightObjShpMap:
- return "kEoBBaseFlightObjShpMap";
- case kEoBBaseFlightObjSclIndex:
- return "kEoBBaseFlightObjSclIndex";
- case kEoBBaseDscTelptrShpCoords:
- return "kEoBBaseDscTelptrShpCoords";
- case kEoBBasePortalSeqData:
- return "kEoBBasePortalSeqData";
- case kEoBBaseManDef:
- return "kEoBBaseManDef";
- case kEoBBaseManWord:
- return "kEoBBaseManWord";
- case kEoBBaseManPrompt:
- return "kEoBBaseManPrompt";
- case kEoBBaseBookNumbers:
- return "kEoBBaseBookNumbers";
- case kEoBBaseMageSpellsList:
- return "kEoBBaseMageSpellsList";
- case kEoBBaseClericSpellsList:
- return "kEoBBaseClericSpellsList";
- case kEoBBaseSpellNames:
- return "kEoBBaseSpellNames";
-
- case kEoBBaseMagicStrings1:
- return "kEoBBaseMagicStrings1";
- case kEoBBaseMagicStrings2:
- return "kEoBBaseMagicStrings2";
- case kEoBBaseMagicStrings3:
- return "kEoBBaseMagicStrings3";
- case kEoBBaseMagicStrings4:
- return "kEoBBaseMagicStrings4";
- case kEoBBaseMagicStrings6:
- return "kEoBBaseMagicStrings6";
- case kEoBBaseMagicStrings7:
- return "kEoBBaseMagicStrings7";
- case kEoBBaseMagicStrings8:
- return "kEoBBaseMagicStrings8";
- case kEoBBaseExpObjectTlMode:
- return "kEoBBaseExpObjectTlMode";
- case kEoBBaseExpObjectTblIndex:
- return "kEoBBaseExpObjectTblIndex";
- case kEoBBaseExpObjectShpStart:
- return "kEoBBaseExpObjectShpStart";
- case kEoBBaseExpObjectTbl1:
- return "kEoBBaseExpObjectTbl1";
- case kEoBBaseExpObjectTbl2:
- return "kEoBBaseExpObjectTbl2";
- case kEoBBaseExpObjectTbl3:
- return "kEoBBaseExpObjectTbl3";
- case kEoBBaseExpObjectY:
- return "kEoBBaseExpObjectY";
- case kEoBBaseSparkDefSteps:
- return "kEoBBaseSparkDefSteps";
- case kEoBBaseSparkDefSubSteps:
- return "kEoBBaseSparkDefSubSteps";
- case kEoBBaseSparkDefShift:
- return "kEoBBaseSparkDefShift";
- case kEoBBaseSparkDefAdd:
- return "kEoBBaseSparkDefAdd";
- case kEoBBaseSparkDefX:
- return "kEoBBaseSparkDefX";
- case kEoBBaseSparkDefY:
- return "kEoBBaseSparkDefY";
- case kEoBBaseSparkOfFlags1:
- return "kEoBBaseSparkOfFlags1";
- case kEoBBaseSparkOfFlags2:
- return "kEoBBaseSparkOfFlags2";
- case kEoBBaseSparkOfShift:
- return "kEoBBaseSparkOfShift";
- case kEoBBaseSparkOfX:
- return "kEoBBaseSparkOfX";
- case kEoBBaseSparkOfY:
- return "kEoBBaseSparkOfY";
- case kEoBBaseSpellProperties:
- return "kEoBBaseSpellProperties";
- case kEoBBaseMagicFlightProps:
- return "kEoBBaseMagicFlightProps";
- case kEoBBaseTurnUndeadEffect:
- return "kEoBBaseTurnUndeadEffect";
- case kEoBBaseBurningHandsDest:
- return "kEoBBaseBurningHandsDest";
- case kEoBBaseConeOfColdDest1:
- return "kEoBBaseConeOfColdDest1";
- case kEoBBaseConeOfColdDest2:
- return "kEoBBaseConeOfColdDest2";
- case kEoBBaseConeOfColdDest3:
- return "kEoBBaseConeOfColdDest3";
- case kEoBBaseConeOfColdDest4:
- return "kEoBBaseConeOfColdDest4";
- case kEoBBaseConeOfColdGfxTbl:
- return "kEoBBaseConeOfColdGfxTbl";
- case kEoB1MainMenuStrings:
- return "kEoB1MainMenuStrings";
- case kEoB1BonusStrings:
- return "kEoB1BonusStrings";
- case kEoB1IntroFilesOpening:
- return "kEoB1IntroFilesOpening";
- case kEoB1IntroFilesTower:
- return "kEoB1IntroFilesTower";
- case kEoB1IntroFilesOrb:
- return "kEoB1IntroFilesOrb";
- case kEoB1IntroFilesWdEntry:
- return "kEoB1IntroFilesWdEntry";
- case kEoB1IntroFilesKing:
- return "kEoB1IntroFilesKing";
- case kEoB1IntroFilesHands:
- return "kEoB1IntroFilesHands";
- case kEoB1IntroFilesWdExit:
- return "kEoB1IntroFilesWdExit";
- case kEoB1IntroFilesTunnel:
- return "kEoB1IntroFilesTunnel";
- case kEoB1IntroOpeningFrmDelay:
- return "kEoB1IntroOpeningFrmDelay";
- case kEoB1IntroWdEncodeX:
- return "kEoB1IntroWdEncodeX";
- case kEoB1IntroWdEncodeY:
- return "kEoB1IntroWdEncodeY";
- case kEoB1IntroWdEncodeWH:
- return "kEoB1IntroWdEncodeWH";
- case kEoB1IntroWdDsX:
- return "kEoB1IntroWdDsX";
- case kEoB1IntroWdDsY:
- return "kEoB1IntroWdDsY";
- case kEoB1IntroTvlX1:
- return "kEoB1IntroTvlX1";
- case kEoB1IntroTvlY1:
- return "kEoB1IntroTvlY1";
- case kEoB1IntroTvlX2:
- return "kEoB1IntroTvlX2";
- case kEoB1IntroTvlY2:
- return "kEoB1IntroTvlY2";
- case kEoB1IntroTvlW:
- return "kEoB1IntroTvlW";
- case kEoB1IntroTvlH:
- return "kEoB1IntroTvlH";
- case kEoB1DoorShapeDefs:
- return "kEoB1DoorShapeDefs";
- case kEoB1DoorSwitchCoords:
- return "kEoB1DoorSwitchCoords";
- case kEoB1MonsterProperties:
- return "kEoB1MonsterProperties";
- case kEoB1EnemyMageSpellList:
- return "kEoB1EnemyMageSpellList";
- case kEoB1EnemyMageSfx:
- return "kEoB1EnemyMageSfx";
- case kEoB1BeholderSpellList:
- return "kEoB1BeholderSpellList";
- case kEoB1BeholderSfx:
- return "kEoB1BeholderSfx";
- case kEoB1TurnUndeadString:
- return "kEoB1TurnUndeadString";
- case kEoB1CgaMappingDefault:
- return "kEoB1CgaMappingDefault";
- case kEoB1CgaMappingAlt:
- return "kEoB1CgaMappingAlt";
- case kEoB1CgaMappingInv:
- return "kEoB1CgaMappingInv";
- case kEoB1CgaMappingItemsL:
- return "kEoB1CgaMappingItemsL";
- case kEoB1CgaMappingItemsS:
- return "kEoB1CgaMappingItemsS";
- case kEoB1CgaMappingThrown:
- return "kEoB1CgaMappingThrown";
- case kEoB1CgaMappingIcons:
- return "kEoB1CgaMappingIcons";
- case kEoB1CgaMappingDeco:
- return "kEoB1CgaMappingDeco";
- case kEoB1CgaLevelMappingIndex:
- return "kEoB1CgaLevelMappingIndex";
- case kEoB1CgaMappingLevel0:
- return "kEoB1CgaMappingLevel0";
- case kEoB1CgaMappingLevel1:
- return "kEoB1CgaMappingLevel1";
- case kEoB1CgaMappingLevel2:
- return "kEoB1CgaMappingLevel2";
- case kEoB1CgaMappingLevel3:
- return "kEoB1CgaMappingLevel3";
- case kEoB1CgaMappingLevel4:
- return "kEoB1CgaMappingLevel4";
- case kEoB1NpcShpData:
- return "kEoB1NpcShpData";
- case kEoB1NpcSubShpIndex1:
- return "kEoB1NpcSubShpIndex1";
- case kEoB1NpcSubShpIndex2:
- return "kEoB1NpcSubShpIndex2";
- case kEoB1NpcSubShpY:
- return "kEoB1NpcSubShpY";
- case kEoB1Npc0Strings:
- return "kEoB1Npc0Strings";
- case kEoB1Npc11Strings:
- return "kEoB1Npc11Strings";
- case kEoB1Npc12Strings:
- return "kEoB1Npc12Strings";
- case kEoB1Npc21Strings:
- return "kEoB1Npc21Strings";
- case kEoB1Npc22Strings:
- return "kEoB1Npc22Strings";
- case kEoB1Npc31Strings:
- return "kEoB1Npc31Strings";
- case kEoB1Npc32Strings:
- return "kEoB1Npc32Strings";
- case kEoB1Npc4Strings:
- return "kEoB1Npc4Strings";
- case kEoB1Npc5Strings:
- return "kEoB1Npc5Strings";
- case kEoB1Npc6Strings:
- return "kEoB1Npc6Strings";
- case kEoB1Npc7Strings:
- return "kEoB1Npc7Strings";
- case kEoB2MainMenuStrings:
- return "kEoB2MainMenuStrings";
- case kEoB2TransferPortraitFrames:
- return "kEoB2TransferPortraitFrames";
- case kEoB2TransferConvertTable:
- return "kEoB2TransferConvertTable";
- case kEoB2TransferItemTable:
- return "kEoB2TransferItemTable";
- case kEoB2TransferExpTable:
- return "kEoB2TransferExpTable";
- case kEoB2TransferStrings1:
- return "kEoB2TransferStrings1";
- case kEoB2TransferStrings2:
- return "kEoB2TransferStrings2";
- case kEoB2TransferLabels:
- return "kEoB2TransferLabels";
- case kEoB2IntroStrings:
- return "kEoB2IntroStrings";
- case kEoB2IntroCPSFiles:
- return "kEoB2IntroCPSFiles";
- case kEoB2IntroAnimData00:
- return "kEoB2IntroAnimData00";
- case kEoB2IntroAnimData01:
- return "kEoB2IntroAnimData01";
- case kEoB2IntroAnimData02:
- return "kEoB2IntroAnimData02";
- case kEoB2IntroAnimData03:
- return "kEoB2IntroAnimData03";
- case kEoB2IntroAnimData04:
- return "kEoB2IntroAnimData04";
- case kEoB2IntroAnimData05:
- return "kEoB2IntroAnimData05";
- case kEoB2IntroAnimData06:
- return "kEoB2IntroAnimData06";
- case kEoB2IntroAnimData07:
- return "kEoB2IntroAnimData07";
- case kEoB2IntroAnimData08:
- return "kEoB2IntroAnimData08";
- case kEoB2IntroAnimData09:
- return "kEoB2IntroAnimData09";
- case kEoB2IntroAnimData10:
- return "kEoB2IntroAnimData10";
- case kEoB2IntroAnimData11:
- return "kEoB2IntroAnimData11";
- case kEoB2IntroAnimData12:
- return "kEoB2IntroAnimData12";
- case kEoB2IntroAnimData13:
- return "kEoB2IntroAnimData13";
- case kEoB2IntroAnimData14:
- return "kEoB2IntroAnimData14";
- case kEoB2IntroAnimData15:
- return "kEoB2IntroAnimData15";
- case kEoB2IntroAnimData16:
- return "kEoB2IntroAnimData16";
- case kEoB2IntroAnimData17:
- return "kEoB2IntroAnimData17";
- case kEoB2IntroAnimData18:
- return "kEoB2IntroAnimData18";
- case kEoB2IntroAnimData19:
- return "kEoB2IntroAnimData19";
- case kEoB2IntroAnimData20:
- return "kEoB2IntroAnimData20";
- case kEoB2IntroAnimData21:
- return "kEoB2IntroAnimData21";
- case kEoB2IntroAnimData22:
- return "kEoB2IntroAnimData22";
- case kEoB2IntroAnimData23:
- return "kEoB2IntroAnimData23";
- case kEoB2IntroAnimData24:
- return "kEoB2IntroAnimData24";
- case kEoB2IntroAnimData25:
- return "kEoB2IntroAnimData25";
- case kEoB2IntroAnimData26:
- return "kEoB2IntroAnimData26";
- case kEoB2IntroAnimData27:
- return "kEoB2IntroAnimData27";
- case kEoB2IntroAnimData28:
- return "kEoB2IntroAnimData28";
- case kEoB2IntroAnimData29:
- return "kEoB2IntroAnimData29";
- case kEoB2IntroAnimData30:
- return "kEoB2IntroAnimData30";
- case kEoB2IntroAnimData31:
- return "kEoB2IntroAnimData31";
- case kEoB2IntroAnimData32:
- return "kEoB2IntroAnimData32";
- case kEoB2IntroAnimData33:
- return "kEoB2IntroAnimData33";
- case kEoB2IntroAnimData34:
- return "kEoB2IntroAnimData34";
- case kEoB2IntroAnimData35:
- return "kEoB2IntroAnimData35";
- case kEoB2IntroAnimData36:
- return "kEoB2IntroAnimData36";
- case kEoB2IntroAnimData37:
- return "kEoB2IntroAnimData37";
- case kEoB2IntroAnimData38:
- return "kEoB2IntroAnimData38";
- case kEoB2IntroAnimData39:
- return "kEoB2IntroAnimData39";
- case kEoB2IntroAnimData40:
- return "kEoB2IntroAnimData40";
- case kEoB2IntroAnimData41:
- return "kEoB2IntroAnimData41";
- case kEoB2IntroAnimData42:
- return "kEoB2IntroAnimData42";
- case kEoB2IntroAnimData43:
- return "kEoB2IntroAnimData43";
- case kEoB2IntroShapes00:
- return "kEoB2IntroShapes00";
- case kEoB2IntroShapes01:
- return "kEoB2IntroShapes01";
- case kEoB2IntroShapes04:
- return "kEoB2IntroShapes04";
- case kEoB2IntroShapes07:
- return "kEoB2IntroShapes07";
- case kEoB2FinaleStrings:
- return "kEoB2FinaleStrings";
- case kEoB2CreditsData:
- return "kEoB2CreditsData";
- case kEoB2FinaleCPSFiles:
- return "kEoB2FinaleCPSFiles";
- case kEoB2FinaleAnimData00:
- return "kEoB2FinaleAnimData00";
- case kEoB2FinaleAnimData01:
- return "kEoB2FinaleAnimData01";
- case kEoB2FinaleAnimData02:
- return "kEoB2FinaleAnimData02";
- case kEoB2FinaleAnimData03:
- return "kEoB2FinaleAnimData03";
- case kEoB2FinaleAnimData04:
- return "kEoB2FinaleAnimData04";
- case kEoB2FinaleAnimData05:
- return "kEoB2FinaleAnimData05";
- case kEoB2FinaleAnimData06:
- return "kEoB2FinaleAnimData06";
- case kEoB2FinaleAnimData07:
- return "kEoB2FinaleAnimData07";
- case kEoB2FinaleAnimData08:
- return "kEoB2FinaleAnimData08";
- case kEoB2FinaleAnimData09:
- return "kEoB2FinaleAnimData09";
- case kEoB2FinaleAnimData10:
- return "kEoB2FinaleAnimData10";
- case kEoB2FinaleAnimData11:
- return "kEoB2FinaleAnimData11";
- case kEoB2FinaleAnimData12:
- return "kEoB2FinaleAnimData12";
- case kEoB2FinaleAnimData13:
- return "kEoB2FinaleAnimData13";
- case kEoB2FinaleAnimData14:
- return "kEoB2FinaleAnimData14";
- case kEoB2FinaleAnimData15:
- return "kEoB2FinaleAnimData15";
- case kEoB2FinaleAnimData16:
- return "kEoB2FinaleAnimData16";
- case kEoB2FinaleAnimData17:
- return "kEoB2FinaleAnimData17";
- case kEoB2FinaleAnimData18:
- return "kEoB2FinaleAnimData18";
- case kEoB2FinaleAnimData19:
- return "kEoB2FinaleAnimData19";
- case kEoB2FinaleAnimData20:
- return "kEoB2FinaleAnimData20";
- case kEoB2FinaleShapes00:
- return "kEoB2FinaleShapes00";
- case kEoB2FinaleShapes03:
- return "kEoB2FinaleShapes03";
- case kEoB2FinaleShapes07:
- return "kEoB2FinaleShapes07";
- case kEoB2FinaleShapes09:
- return "kEoB2FinaleShapes09";
- case kEoB2FinaleShapes10:
- return "kEoB2FinaleShapes10";
- case kEoB2NpcShapeData:
- return "kEoB2NpcShapeData";
- case kEoBBaseClassModifierFlags:
- return "kEoBBaseClassModifierFlags";
- case kEoBBaseMonsterStepTable01:
- return "kEoBBaseMonsterStepTable01";
- case kEoBBaseMonsterStepTable02:
- return "kEoBBaseMonsterStepTable02";
- case kEoBBaseMonsterStepTable1:
- return "kEoBBaseMonsterStepTable1";
- case kEoBBaseMonsterStepTable2:
- return "kEoBBaseMonsterStepTable2";
- case kEoBBaseMonsterStepTable3:
- return "kEoBBaseMonsterStepTable3";
- case kEoBBaseMonsterCloseAttPosTable1:
- return "kEoBBaseMonsterCloseAttPosTable1";
- case kEoBBaseMonsterCloseAttPosTable21:
- return "kEoBBaseMonsterCloseAttPosTable21";
- case kEoBBaseMonsterCloseAttPosTable22:
- return "kEoBBaseMonsterCloseAttPosTable22";
- case kEoBBaseMonsterCloseAttUnkTable:
- return "kEoBBaseMonsterCloseAttUnkTable";
- case kEoBBaseMonsterCloseAttChkTable1:
- return "kEoBBaseMonsterCloseAttChkTable1";
- case kEoBBaseMonsterCloseAttChkTable2:
- return "kEoBBaseMonsterCloseAttChkTable2";
- case kEoBBaseMonsterCloseAttDstTable1:
- return "kEoBBaseMonsterCloseAttDstTable1";
- case kEoBBaseMonsterCloseAttDstTable2:
- return "kEoBBaseMonsterCloseAttDstTable2";
- case kEoBBaseMonsterProximityTable:
- return "kEoBBaseMonsterProximityTable";
- case kEoBBaseFindBlockMonstersTable:
- return "kEoBBaseFindBlockMonstersTable";
- case kEoBBaseMonsterDirChangeTable:
- return "kEoBBaseMonsterDirChangeTable";
- case kEoBBaseMonsterDistAttStrings:
- return "kEoBBaseMonsterDistAttStrings";
- case kEoBBaseEncodeMonsterDefs:
- return "kEoBBaseEncodeMonsterDefs";
- case kEoBBaseNpcPresets:
- return "kEoBBaseNpcPresets";
- case kEoB2Npc1Strings:
- return "kEoB2Npc1Strings";
- case kEoB2Npc2Strings:
- return "kEoB2Npc2Strings";
- case kEoB2MonsterDustStrings:
- return "kEoB2MonsterDustStrings";
- case kEoB2DreamSteps:
- return "kEoB2DreamSteps";
- case kEoB2KheldranStrings:
- return "kEoB2KheldranStrings";
- case kEoB2HornStrings:
- return "kEoB2HornStrings";
- case kEoB2HornSounds:
- return "kEoB2HornSounds";
- case kEoB2WallOfForceDsX:
- return "kEoB2WallOfForceDsX";
- case kEoB2WallOfForceDsY:
- return "kEoB2WallOfForceDsY";
- case kEoB2WallOfForceNumW:
- return "kEoB2WallOfForceNumW";
- case kEoB2WallOfForceNumH:
- return "kEoB2WallOfForceNumH";
- case kEoB2WallOfForceShpId:
- return "kEoB2WallOfForceShpId";
- case kLoLIngamePakFiles:
- return "kLoLIngamePakFiles";
- case kLoLCharacterDefs:
- return "kLoLCharacterDefs";
- case kLoLIngameSfxFiles:
- return "kLoLIngameSfxFiles";
- case kLoLIngameSfxIndex:
- return "kLoLIngameSfxIndex";
- case kLoLMusicTrackMap:
- return "kLoLMusicTrackMap";
- case kLoLIngameGMSfxIndex:
- return "kLoLIngameGMSfxIndex";
- case kLoLIngameMT32SfxIndex:
- return "kLoLIngameMT32SfxIndex";
- case kLoLIngamePcSpkSfxIndex:
- return "kLoLIngamePcSpkSfxIndex";
- 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 kLoLMonsterModifiers1:
- return "kLoLMonsterModifiers1";
- case kLoLMonsterModifiers2:
- return "kLoLMonsterModifiers2";
- case kLoLMonsterModifiers3:
- return "kLoLMonsterModifiers3";
- case kLoLMonsterModifiers4:
- return "kLoLMonsterModifiers4";
- case kLoLMonsterShiftOffsets:
- return "kLoLMonsterShiftOffsets";
- case kLoLMonsterDirFlags:
- return "kLoLMonsterDirFlags";
- case kLoLMonsterScaleY:
- return "kLoLMonsterScaleY";
- case kLoLMonsterScaleX:
- return "kLoLMonsterScaleX";
- case kLoLMonsterScaleWH:
- return "kLoLMonsterScaleWH";
- case kLoLFlyingObjectShp:
- return "kLoLFlyingObjectShp";
- 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 kLoLDscWalls:
- return "kLoLDscWalls";
- case kRpgCommonDscShapeIndex:
- return "kRpgCommonDscShapeIndex";
- case kLoLDscOvlMap:
- return "kLoLDscOvlMap";
- case kLoLDscScaleWidthData:
- return "kLoLDscScaleWidthData";
- case kLoLDscScaleHeightData:
- return "kLoLDscScaleHeightData";
- case kRpgCommonDscX:
- return "kRpgCommonDscX";
- case kLoLDscY:
- return "kLoLDscY";
- case kRpgCommonDscTileIndex:
- return "kRpgCommonDscTileIndex";
- case kRpgCommonDscUnk2:
- return "kRpgCommonDscUnk2";
- case kRpgCommonDscDoorShapeIndex:
- return "kRpgCommonDscDoorShapeIndex";
- case kRpgCommonDscDimData1:
- return "kRpgCommonDscDimData1";
- case kRpgCommonDscDimData2:
- return "kRpgCommonDscDimData2";
- case kRpgCommonDscBlockMap:
- return "kRpgCommonDscBlockMap";
- case kRpgCommonDscDimMap:
- return "kRpgCommonDscDimMap";
- case kLoLDscOvlIndex:
- return "kLoLDscOvlIndex";
- case kRpgCommonDscBlockIndex:
- return "kRpgCommonDscBlockIndex";
- case kRpgCommonDscDoorY2:
- return "kRpgCommonDscDoorY2";
- case kRpgCommonDscDoorFrameY1:
- return "kRpgCommonDscDoorFrameY1";
- case kRpgCommonDscDoorFrameY2:
- return "kRpgCommonDscDoorFrameY2";
- case kRpgCommonDscDoorFrameIndex1:
- return "kRpgCommonDscDoorFrameIndex1";
- case kRpgCommonDscDoorFrameIndex2:
- return "kRpgCommonDscDoorFrameIndex2";
- 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 kLoLCredits:
- return "kLoLCredits";
- case kLoLHistory:
- return "kLoLHistory";
- default:
- return "Unknown";
- }
}
-struct ExtractData {
- ExtractData() : desc(), offset() {}
- ExtractData(ExtractEntrySearchData d, uint32 o) : desc(d), offset(o) {}
-
- ExtractEntrySearchData desc;
- uint32 offset;
-};
-
-typedef std::pair<int, ExtractEntrySearchData> SearchMapEntry;
-typedef std::multimap<int, ExtractEntrySearchData> SearchMap;
-
-typedef std::pair<int, ExtractData> ExtractMapEntry;
-typedef std::multimap<int, ExtractData> ExtractMap;
-
-bool getExtractionData(const Game *g, Search &search, ExtractMap &map);
-
-bool createIDMap(PAKFile &out, const ExtractInformation *eI, const int *needList);
-
-bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
- char filename[128];
-
- Search search(data, size);
- ExtractMap ids;
-
- if (!getExtractionData(g, search, ids))
- return false;
-
- const int *needList = getNeedList(g);
- if (!needList) {
- fprintf(stderr, "ERROR: No entry need list available\n");
- return false;
- }
-
- ExtractInformation extractInfo;
- extractInfo.game = g->game;
- extractInfo.platform = g->platform;
- extractInfo.special = g->special;
-
- for (ExtractMap::const_iterator i = ids.begin(); i != ids.end(); ++i) {
- const int id = i->first;
- extractInfo.lang = i->second.desc.lang;
-
- const ExtractFilename *fDesc = getFilenameDesc(id);
-
- if (!fDesc) {
- fprintf(stderr, "ERROR: couldn't find file description for id %d/%s\n", id, getIdString(id));
- return false;
- }
-
- filename[0] = 0;
- if (!getFilename(filename, &extractInfo, id)) {
- fprintf(stderr, "ERROR: couldn't get filename for id %d/%s\n", id, getIdString(id));
- return false;
- }
-
- const ExtractType *tDesc = findExtractType(fDesc->type);
-
- if (!tDesc) {
- fprintf(stderr, "ERROR: couldn't find type description for id %d/%s (%d)\n", id, getIdString(id), fDesc->type);
- return false;
- }
-
- PAKFile::cFileList *list = out.getFileList();
- if (list && list->findEntry(filename) != 0)
- continue;
-
- if (!tDesc->extract(out, &extractInfo, data + i->second.offset, i->second.desc.hint.size, filename, id)) {
- fprintf(stderr, "ERROR: couldn't extract id %d/%s\n", id, getIdString(id));
- return false;
- }
- }
-
- for (int i = 0; i < 3; ++i) {
- if (g->lang[i] == -1)
- continue;
-
- extractInfo.lang = g->lang[i];
- if (!createIDMap(out, &extractInfo, needList))
- return false;
-
- if (!updateIndex(out, &extractInfo)) {
- error("couldn't update INDEX file, stop processing of all files");
+bool createIDMap(PAKFile &out, const Game *g, const int *needList) {
+ int dataEntries = 0;
+ // Count entries in the need list and check whether the resources are
+ // present
+ for (const int *n = needList; *n != -1; ++n) {
+ char filename[12];
+ if (!getFilename(filename, g, *n) || !out.getFileList()->findEntry(filename)) {
+ fprintf(stderr, "ERROR: Could not find need %d for game %04X", *n, createGameDef(g));
return false;
}
- }
-
- return true;
-}
-
-bool createIDMap(PAKFile &out, const ExtractInformation *eI, const int *needList) {
- int dataEntries = 0;
- // Count entries in the need list
- for (const int *n = needList; *n != -1; ++n)
++dataEntries;
+ }
const int mapSize = 2 + dataEntries * (2 + 1 + 4);
uint8 *map = new uint8[mapSize];
@@ -2354,206 +919,22 @@ bool createIDMap(PAKFile &out, const ExtractInformation *eI, const int *needList
delete[] map;
return false;
}
- *dst++ = getTypeID(fDesc->type);
- WRITE_BE_UINT32(dst, getFilename(eI, *id)); dst += 4;
+ *dst++ = fDesc->type;
+ WRITE_BE_UINT32(dst, getFilename(g, *id)); dst += 4;
}
char filename[12];
- if (!getFilename(filename, eI, 0)) {
+ if (!getFilename(filename, g, 0)) {
fprintf(stderr, "ERROR: Could not create ID map for game\n");
delete[] map;
return false;
}
- out.removeFile(filename);
if (!out.addFile(filename, map, mapSize)) {
fprintf(stderr, "ERROR: Could not add ID map \"%s\" to kyra.dat\n", filename);
delete[] map;
return false;
}
- delete[] map;
- return true;
-}
-
-// Uncomment this to get various debug information about the detection table entries.
-//#define DEBUG_EXTRACTION_TABLES
-
-bool setupSearch(const Game *g, const int *needList, Search &search, SearchMap &searchData) {
- for (const int *entry = needList; *entry != -1; ++entry) {
- ExtractEntryList providers = getProvidersForId(*entry);
-
- if (providers.empty()) {
- fprintf(stderr, "ERROR: No provider for id %d/%s\n", *entry, getIdString(*entry));
- return false;
- } else {
- for (ExtractEntryList::const_iterator i = providers.begin(); i != providers.end(); ++i) {
- // Only add generic or partly matching providers here.
-#ifndef DEBUG_EXTRACTION_TABLES
- if ((i->lang == UNK_LANG || i->lang == g->lang[0] || i->lang == g->lang[1] || i->lang == g->lang[2]) &&
- (i->platform == kPlatformUnknown || (i->platform == g->platform))) {
-#endif
- search.addData(i->hint);
- searchData.insert(SearchMapEntry(*entry, *i));
-#ifndef DEBUG_EXTRACTION_TABLES
- }
-#endif
- }
- }
- }
-
return true;
}
-
-typedef std::list<ExtractMap::const_iterator> MatchList;
-MatchList filterPlatformMatches(const Game *g, std::pair<ExtractMap::const_iterator, ExtractMap::const_iterator> range) {
- bool hasPlatformMatch = false;
- for (ExtractMap::const_iterator i = range.first; i != range.second; ++i) {
- if (i->second.desc.platform == g->platform) {
- hasPlatformMatch = true;
- break;
- }
- }
-
- MatchList result;
- if (hasPlatformMatch) {
- for (ExtractMap::const_iterator i = range.first; i != range.second; ++i) {
- if (i->second.desc.platform == g->platform)
- result.push_back(i);
- }
- } else {
- for (ExtractMap::const_iterator i = range.first; i != range.second; ++i)
- result.push_back(i);
- }
-
- return result;
-}
-
-MatchList filterLanguageMatches(const int lang, const MatchList &input) {
- std::list<ExtractMap::const_iterator> result;
-
- for (MatchList::const_iterator i = input.begin(); i != input.end(); ++i) {
- if ((*i)->second.desc.lang == lang)
- result.push_back(*i);
- }
-
- return result;
-}
-
-MatchList::const_iterator filterOutBestMatch(const MatchList &input) {
- MatchList::const_iterator result = input.begin();
-
- if (input.size() > 1)
- warning("Multiple entries found for id %d/%s", (*result)->first, getIdString((*result)->first));
-
- for (MatchList::const_iterator i = input.begin(); i != input.end(); ++i) {
- // 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.
- if ((*result)->second.desc.hint.size <= (*i)->second.desc.hint.size) {
- if ((*result)->second.offset >= (*i)->second.offset)
- result = i;
- }
- }
-
- return result;
-}
-
-bool getExtractionData(const Game *g, Search &search, ExtractMap &map) {
- SearchMap searchMap;
-
- const int *needList = getNeedList(g);
- if (!needList) {
- fprintf(stderr, "ERROR: No entry need list available\n");
- return false;
- }
-
- if (!setupSearch(g, needList, search, searchMap))
- return false;
-
- // 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;
- }
-
- ExtractMap temporaryExtractMap;
- for (const int *entry = needList; *entry != -1; ++entry) {
- typedef std::pair<SearchMap::const_iterator, SearchMap::const_iterator> KeyRange;
- KeyRange idRange = searchMap.equal_range(*entry);
-
- for (Search::ResultList::const_iterator i = results.begin(); i != results.end(); ++i) {
- for (SearchMap::const_iterator j = idRange.first; j != idRange.second; ++j) {
- if (j->second.hint == i->data)
- temporaryExtractMap.insert(ExtractMapEntry(*entry, ExtractData(j->second, i->offset)));
- }
- }
- }
-
- // Free up some memory
- results.clear();
- searchMap.clear();
-
- bool result = true;
-
- for (const int *entry = needList; *entry != -1; ++entry) {
- MatchList possibleMatches = filterPlatformMatches(g, temporaryExtractMap.equal_range(*entry));
-
- if (possibleMatches.empty()) {
- fprintf(stderr, "ERROR: No entry found for id %d/%s\n", *entry, getIdString(*entry));
- result = false;
- continue;
- }
-
- if (isLangSpecific(*entry)) {
- for (int i = 0; i < 3; ++i) {
- if (g->lang[i] == -1)
- continue;
-
- MatchList langMatches = filterLanguageMatches(g->lang[i], possibleMatches);
- MatchList::const_iterator bestMatch = filterOutBestMatch(langMatches);
-
- if (bestMatch == langMatches.end()) {
- // TODO: Add nice language name to output message.
- fprintf(stderr, "ERROR: No entry found for id %d/%s for language %d\n", *entry, getIdString(*entry), g->lang[i]);
- result = false;
- continue;
- }
-
-#ifdef DEBUG_EXTRACTION_TABLES
- if (((*bestMatch)->second.desc.platform != kPlatformUnknown && (*bestMatch)->second.desc.platform != g->platform))
- printf("%s: %.8X %.8X %d %d\n", getIdString(*entry), (*bestMatch)->second.desc.hint.size, (*bestMatch)->second.desc.hint.byteSum, (*bestMatch)->second.desc.lang, (*bestMatch)->second.desc.platform);
-#endif
-
- map.insert(**bestMatch);
- }
- } else {
- MatchList::const_iterator bestMatch = filterOutBestMatch(possibleMatches);
-
- if (bestMatch == possibleMatches.end()) {
- fprintf(stderr, "ERROR: No entry found for id %d/%s\n", *entry, getIdString(*entry));
- result = false;
- continue;
- }
-
-#ifdef DEBUG_EXTRACTION_TABLES
- if (((*bestMatch)->second.desc.platform != kPlatformUnknown && (*bestMatch)->second.desc.platform != g->platform))
- printf("%s: %.8X %.8X %d %d\n", getIdString(*entry), (*bestMatch)->second.desc.hint.size, (*bestMatch)->second.desc.hint.byteSum, (*bestMatch)->second.desc.lang, (*bestMatch)->second.desc.platform);
-#endif
-
- map.insert(**bestMatch);
- }
- }
-
- return result;
-}
diff --git a/devtools/create_kyradat/create_kyradat.h b/devtools/create_kyradat/create_kyradat.h
index 4141adf..a6bee6f 100644
--- a/devtools/create_kyradat/create_kyradat.h
+++ b/devtools/create_kyradat/create_kyradat.h
@@ -23,7 +23,7 @@
#ifndef CREATE_KYRADAT_CREATE_KYRADAT_H
#define CREATE_KYRADAT_CREATE_KYRADAT_H
-#include "util.h"
+#include "common/scummsys.h"
// This list has to match orderwise (and thus value wise) the static data list of "engines/kyra/resource.h"!
enum kExtractID {
@@ -227,7 +227,7 @@ enum kExtractID {
kEoBBaseCursedString,
kEoBBaseEnchantedString,
kEoBBaseMagicObjectStrings,
- kEoBBaseMagicObject5String,
+ kEoBBaseMagicObjectString5,
kEoBBasePatternSuffix,
kEoBBasePatternGrFix1,
kEoBBasePatternGrFix2,
@@ -235,7 +235,7 @@ enum kExtractID {
kEoBBaseValidateCursedString,
kEoBBaseValidateNoDropString,
kEoBBasePotionStrings,
- kEoBBaseWandString,
+ kEoBBaseWandStrings,
kEoBBaseItemMisuseStrings,
kEoBBaseTakenStrings,
@@ -347,7 +347,7 @@ enum kExtractID {
kEoBBaseDscItemPosIndex,
kEoBBaseDscItemShpX,
- kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemScaleIndex,
kEoBBaseDscItemTileIndex,
kEoBBaseDscItemShapeMap,
@@ -628,7 +628,7 @@ enum kExtractID {
kLoLDscOvlMap,
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
- kLoLDscY,
+ kLoLBaseDscY,
kLoLDscDoorScale,
kLoLDscDoor4,
@@ -668,6 +668,30 @@ enum kExtractID {
kMaxResIDs
};
+enum ResTypes {
+ kStringList = 0,
+ kRawData = 1,
+ kRoomList = 2,
+ kShapeList = 3,
+ kAmigaSfxTable = 4,
+
+ k2SeqData = 5,
+ k2SeqItemAnimData = 6,
+ k2ItemAnimDefinition = 7,
+
+ kLoLCharData = 8,
+ kLoLSpellData = 9,
+ kLoLCompassData = 10,
+ kLoLFlightShpData = 11,
+ kLoLButtonData = 12,
+ kRawDataBe16 = 13,
+ kRawDataBe32 = 14,
+
+ kEoB2SequenceData = 15,
+ kEoB2ShapeData = 16,
+ kEoBNpcData = 17
+};
+
struct ExtractFilename {
int id;
int type;
@@ -686,21 +710,19 @@ enum kGame {
kKyra1 = 0,
kKyra2,
kKyra3,
- kLoL,
kEoB1,
- kEoB2
+ kEoB2,
+ kLoL
};
struct Game {
int game;
- int lang[3];
int platform;
int special;
-
- const char *md5[2];
+ int lang;
};
-#define GAME_DUMMY_ENTRY { -1, { -1, -1, -1 }, -1, -1, { 0, 0 } }
+#define GAME_DUMMY_ENTRY { -1, -1, -1, -1 }
extern const Game * const gameDescs[];
diff --git a/devtools/create_kyradat/extract.cpp b/devtools/create_kyradat/extract.cpp
deleted file mode 100644
index 570c30c..0000000
--- a/devtools/create_kyradat/extract.cpp
+++ /dev/null
@@ -1,1237 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
-
-#include "extract.h"
-#include "common/language.h"
-#include "common/platform.h"
-
-#include <algorithm>
-
-namespace {
-
-// Extraction function prototypes
-
-bool extractRaw(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractStrings10(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRooms(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractShapes(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractKyraForestSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractAmigaSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractWdSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-
-bool extractHofSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractHofShapeAnimDataV1(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractHofShapeAnimDataV2(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-
-bool extractStringsWoSuffix(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractPaddedStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRaw16to8(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractMrShapeAnimData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRaw16(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRaw32(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractLoLButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractLoLFlyingShpDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-
-bool extractEoB2SeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractEoB2ShapeData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-// Extraction type table
-
-const ExtractType extractTypeTable[] = {
- { kTypeStringList, extractStrings },
- { kTypeRoomList, extractRooms },
- { kTypeShapeList, extractShapes },
- { kTypeRawData, extractRaw },
- { kTypeForestSeqData, extractKyraForestSeqData },
- { kTypeAmigaSfxTable, extractAmigaSfx },
- { kTypeTownsWDSfxTable, extractWdSfx },
-
- { k2TypeSeqData, extractHofSeqData },
- { k2TypeShpDataV1, extractHofShapeAnimDataV1 },
- { k2TypeShpDataV2, extractHofShapeAnimDataV2 },
- { k2TypeSoundList, extractStringsWoSuffix },
- { k2TypeLangSoundList, extractStringsWoSuffix },
- { k2TypeSize10StringList, extractStrings10 },
- { k2TypeSfxList, extractPaddedStrings },
- { k3TypeRaw16to8, extractRaw16to8 },
- { k3TypeShpData, extractMrShapeAnimData },
-
- { kLoLTypeCharData, extractRaw },
- { kLoLTypeSpellData, extractRaw },
- { kLoLTypeCompassData, extractRaw16to8 },
- { kLoLTypeFlightShpData, extractLoLFlyingShpDefs },
- { kLoLTypeRaw16, extractRaw16 },
- { kLoLTypeRaw32, extractRaw32 },
- { kLoLTypeButtonDef, extractLoLButtonDefs },
-
- { kEoB2TypeSeqData, extractEoB2SeqData },
- { kEoB2TypeShapeData, extractEoB2ShapeData },
- { kEoBTypeNpcData, extractEoBNpcData },
-
- { -1, 0 }
-};
-
-// TODO: Clean up the mess of data types we have... it seems some special types
-// we have (even in the main KYRA code, is just raw data access, but used specially
-// to have a nice wrapper from inside StaticResource...).
-const TypeTable typeTable[] = {
- { kTypeStringList, 0 },
- { kTypeRawData, 1 },
- { kTypeRoomList, 2 },
- { kTypeShapeList, 3 },
- { kTypeForestSeqData, 1 },
- { kTypeAmigaSfxTable, 4 },
- { kTypeTownsWDSfxTable, 1 },
- { k2TypeSeqData, 5 },
- { k2TypeShpDataV1, 6 },
- { k2TypeShpDataV2, 7 },
- { k2TypeSoundList, 0 },
- { k2TypeLangSoundList, 0 },
- { k2TypeSize10StringList, 0 },
- { k2TypeSfxList, 0 },
- { k3TypeRaw16to8, 1 },
- { k3TypeShpData, 7 },
- { kLoLTypeRaw16, 13 },
- { kLoLTypeRaw32, 14 },
- { kLoLTypeButtonDef, 12 },
- { kLoLTypeCharData, 8 },
- { kLoLTypeSpellData, 9 },
- { kLoLTypeCompassData, 10 },
- { kLoLTypeFlightShpData, 11 },
- { kEoB2TypeSeqData, 15 },
- { kEoB2TypeShapeData, 16 },
- { kEoBTypeNpcData, 17},
- { -1, 1 }
-};
-
-} // end of anonymous namespace
-
-// misc
-
-const ExtractType *findExtractType(const int type) {
- for (const ExtractType *i = extractTypeTable; i->type != -1; ++i) {
- if (i->type == type)
- return i;
- }
- return 0;
-}
-
-byte getTypeID(int type) {
- return std::find(typeTable, ARRAYEND(typeTable) - 1, type)->value;
-}
-// Extractor implementation
-
-namespace {
-
-bool extractRaw(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- uint8 *buffer = new uint8[size];
- assert(buffer);
- memcpy(buffer, data, size);
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // Skip tables for skipping English string left-overs in the hacky Russian fan translations
- static const uint8 rusFanSkip_k2SeqplayStrings[] = { 1, 3, 5, 8, 10, 11, 13, 15, 17, 20, 22, 25, 26, 30, 33, 38, 40, 41, 44, 49, 51, 55, 104, 119, 121, 123 };
- static const uint8 rusFanSkip_k1IntroStrings[] = { 3, 5, 9, 11, 13, 16, 18, 21, 24, 32, 34, 36, 38, 41, 44, 49, 52, 55, 57, 59, 61, 64, 66, 69, 72, 75 };
- static const uint8 rusFanSkip_k1ThePoisonStrings[] = { 1, 4 };
- static const uint8 rusFanSkip_k1FullFlaskStrings[] = { 1, 2, 4, 5, 7 };
- static const uint8 rusFanSkip_k1WispJewelStrings[] = { 2 };
- static const uint8 rusFanSkip_k1GUIStrings[] = { 1, 3, 6, 8, 11, 13, 18 };
- uint32 rusFanSkipIdLen = 0;
- const uint8 *rusFanSkipId = 0;
- uint rusFanEmptyId = 10000;
- uint32 skipCount = 0;
-
- int patch = 0;
- // FM Towns files that need addional patches
- if (info->platform == kPlatformFMTowns) {
- if (id == k1TakenStrings || id == k1NoDropStrings || id == k1PoisonGoneString ||
- id == k1ThePoisonStrings || id == k1FluteStrings || id == k1WispJewelStrings)
- patch = 1;
- else if (id == k1IntroStrings)
- patch = 2;
- else if (id == k2SeqplayStrings)
- patch = 3;
- } else if (info->platform == kPlatformDOS) {
- if (id == k2IngamePakFiles)
- patch = 4;
-
- if (info->lang == Common::RU_RUS && info->special == kNoSpecial) {
- patch = 5;
- if (id == k2SeqplayStrings) {
- rusFanSkipId = rusFanSkip_k2SeqplayStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k2SeqplayStrings);
- rusFanEmptyId = 81;
- } else if (id == k1IntroStrings) {
- rusFanSkipId = rusFanSkip_k1IntroStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1IntroStrings);
- rusFanEmptyId = 30;
- } else if (id == k1ThePoisonStrings) {
- rusFanSkipId = rusFanSkip_k1ThePoisonStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1ThePoisonStrings);
- } else if (id == k1FullFlaskString) {
- rusFanSkipId = rusFanSkip_k1FullFlaskStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1FullFlaskStrings);
- } else if (id == k1GUIStrings) {
- rusFanSkipId = rusFanSkip_k1GUIStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1GUIStrings);
- } else if (id == k1WispJewelStrings) {
- rusFanSkipId = rusFanSkip_k1WispJewelStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1WispJewelStrings);
- }
- }
-
- // HACK
- if (id == k2SeqplayIntroTracks && info->game == kLoL)
- return extractStringsWoSuffix(out, info, data, size, filename, id);
- }
-
- uint32 entries = 0;
- uint32 targetsize = size + 4;
- for (uint32 i = 0; i < size; ++i) {
- if (!data[i]) {
- if (info->platform == kPlatformAmiga) {
- if (i + 1 >= size)
- ++entries;
- else if (!data[i+1] && !(i & 1))
- continue;
- else
- ++entries;
- } else {
- ++entries;
- }
-
- if (info->platform == kPlatformFMTowns) {
- // prevents creation of empty entries (which we have mostly between all strings in the FM-TOWNS version)
- while (!data[++i]) {
- if (i == size)
- break;
- targetsize--;
- }
- if (patch == 1) {
- // Here is the first step of the extra treatment for all FM-TOWNS string arrays that
- // contain more than one string and which the original code
- // addresses via stringname[boolJapanese].
- // We simply skip every other string
- if (i == size)
- continue;
- uint32 len = strlen((const char*) data + i);
- i += len;
-
- targetsize = targetsize - 1 - len;
-
- while (!data[++i]) {
- if (i == len)
- break;
- targetsize--;
- }
- }
- } else if (patch == 5) {
- ++skipCount;
- while (!data[i + 1]) {
- if (skipCount == rusFanEmptyId) {
- ++skipCount;
- ++entries;
- break;
- }
- if (++i == size)
- break;
- targetsize--;
- }
-
- // Skip English string left-overs in the hacky Russian fan translation
- for (uint32 ii = 0; ii < rusFanSkipIdLen; ++ii) {
- if (skipCount == rusFanSkipId[ii]) {
- ++skipCount;
- uint32 len = strlen((const char*) data + i);
- i += len;
- targetsize = targetsize - 1 - len;
- while (!data[i + 1]) {
- if (++i == len)
- break;
- targetsize--;
- }
- }
- }
- }
- }
- }
-
- if (patch == 2) {
- if (info->lang == EN_ANY) {
- targetsize--;
- entries += 1;
- } else if (info->lang == JA_JPN) {
- targetsize += 2;
- entries += 2;
- }
- }
-
- if (patch == 3) {
- entries++;
- targetsize++;
- }
-
- if (patch == 4) {
- targetsize -= 9;
- }
-
- uint8 *buffer = new uint8[targetsize];
- assert(buffer);
- memset(buffer, 0, targetsize);
- uint8 *output = buffer;
- const uint8 *input = (const uint8*) data;
- skipCount = 0;
-
- WRITE_BE_UINT32(output, entries); output += 4;
- if (info->platform == kPlatformFMTowns) {
- const byte *c = data + size;
- do {
- if (patch == 2 && input - data == 0x3C0 && input[0x10] == 0x32) {
- memcpy(output, input, 0x0F);
- input += 0x11; output += 0x0F;
- }
-
- strcpy((char *) output, (const char*) input);
- uint32 stringsize = strlen((const char*)output) + 1;
- input += stringsize; output += stringsize;
- // skip empty entries
- while (!*input) {
- // Write one empty string into intro strings file
- if (patch == 2) {
- if ((info->lang == EN_ANY && input - data == 0x260) ||
- (info->lang == JA_JPN && (input - data == 0x2BD || input - data == 0x2BE)))
- *output++ = *input;
- }
-
- // insert one dummy string at hof sequence strings position 59
- if (patch == 3) {
- if ((info->lang == EN_ANY && input - data == 0x695) ||
- (info->lang == JA_JPN && input - data == 0x598))
- *output++ = *input;
- }
-
- if (++input == c)
- break;
- }
-
- if (patch == 1) {
- // Here is the extra treatment for all FM-TOWNS string arrays that
- // contain more than one string and which the original code
- // addresses via stringname[boolJapanese].
- // We simply skip every other string
- if (input == c)
- continue;
- input += strlen((const char*)input);
- while (!*input) {
- if (++input == c)
- break;
- }
- }
-
- } while (input < c);
- } else if (info->platform == kPlatformAmiga) {
- // we need to strip some aligment zeros out here
- int dstPos = 0;
- for (uint32 i = 0; i < size; ++i) {
- if (!data[i] && !(i & 1)) {
- if (i + 1 > size)
- continue;
- else if (i + 1 < size && !data[i+1])
- continue;
- }
-
- *output++ = data[i];
- ++dstPos;
- }
- targetsize = dstPos + 4;
- } else if (patch == 5) {
- const byte *c = data + size;
- do {
- strcpy((char *) output, (const char*) input);
- uint32 stringsize = strlen((const char*)output) + 1;
- input += stringsize; output += stringsize;
-
- ++skipCount;
- while (!*input) {
- if (skipCount == rusFanEmptyId) {
- *output++ = *input;
- ++skipCount;
- }
- if (++input == c)
- break;
- }
- // Skip English string left-overs in the hacky Russian fan translation
- for (uint32 ii = 0; ii < rusFanSkipIdLen; ++ii) {
- if (skipCount == rusFanSkipId[ii]) {
- ++skipCount;
- input += strlen((const char*)input);
- while (!*input) {
- if (++input == c)
- break;
- }
- }
- }
-
- } while (input < c);
- } else {
- uint32 copySize = size;
- if (patch == 4) {
- memcpy(output, data, 44);
- output += 44;
- data += 44;
- for (int t = 1; t != 10; t++) {
- sprintf((char *) output, "COST%d_SH.PAK", t);
- output += 13;
- }
- data += 126;
- copySize -= 170;
- }
- memcpy(output, data, copySize);
- }
-
- return out.addFile(filename, buffer, targetsize);
-}
-
-bool extractStrings10(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // HACK...
- if (info->platform == kPlatformFMTowns && id == k2IngameSfxFiles)
- return extractStringsWoSuffix(out, info, data, size, filename, id);
-
- const int strSize = 10;
- uint32 entries = (size + (strSize - 1)) / strSize;
-
- uint8 *buffer = new uint8[size + 4];
- assert(buffer);
- uint8 *output = buffer;
- WRITE_BE_UINT32(output, entries); output += 4;
-
- for (uint32 i = 0; i < entries; ++i) {
- const byte *src = data + i * strSize;
-
- while (*src)
- *output++ = *src++;
- *output++ = '\0';
- }
-
- return out.addFile(filename, buffer, output - buffer);
-}
-
-bool extractRooms(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // different entry size for the FM-TOWNS version
- const int roomEntrySize = (info->platform == kPlatformFMTowns) ? (0x69) : ((info->platform == kPlatformAmiga) ? 0x52 : 0x51);
- const int countRooms = size / roomEntrySize;
-
- uint8 *buffer = new uint8[countRooms * 9 + 4];
- assert(buffer);
- uint8 *output = buffer;
-
- WRITE_BE_UINT32(output, countRooms); output += 4;
-
- const byte *src = data;
- if (info->platform == kPlatformAmiga) {
- for (int i = 0; i < countRooms; ++i) {
- *output++ = *src++; assert(*src == 0); ++src;
- memcpy(output, src, 8); output += 0x8;
- src += roomEntrySize - 0x2;
- }
- } else {
- for (int i = 0; i < countRooms; ++i) {
- *output++ = *src++;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- src += roomEntrySize - 0x9;
- }
- }
-
- return out.addFile(filename, buffer, countRooms * 9 + 4);
-}
-
-bool extractShapes(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- byte *buffer = new byte[size + 1 * 4];
- assert(buffer);
- byte *output = buffer;
-
- const int count = size / 0x07;
- WRITE_BE_UINT32(output, count); output += 4;
- memcpy(output, data, size);
-
- return out.addFile(filename, buffer, size + 1 * 4);
-}
-
-bool extractKyraForestSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- if (info->platform != kPlatformPC98)
- return extractRaw(out, info, data, size, filename, id);
-
- struct PatchEntry {
- uint16 pos;
- uint8 val;
- };
-
- // This data has been taken from the FM-Towns version
- static const PatchEntry patchData[] = {
- { 0x0019, 0x06 }, { 0x001A, 0x09 }, { 0x001B, 0x00 }, { 0x002E, 0x06 }, { 0x002F, 0x09 }, { 0x0030, 0x00 },
- { 0x003D, 0x06 }, { 0x003E, 0x09 }, { 0x003F, 0x00 }, { 0x004C, 0x06 }, { 0x004D, 0x09 }, { 0x004E, 0x00 },
- { 0x005B, 0x06 }, { 0x005C, 0x09 }, { 0x005D, 0x00 }, { 0x0064, 0x06 }, { 0x0065, 0x09 }, { 0x0066, 0x00 },
- { 0x0079, 0x06 }, { 0x007A, 0x09 }, { 0x007B, 0x00 }, { 0x0088, 0x06 }, { 0x0089, 0x09 }, { 0x008A, 0x00 },
- { 0x0097, 0x06 }, { 0x0098, 0x09 }, { 0x0099, 0x00 }, { 0x00A6, 0x06 }, { 0x00A7, 0x09 }, { 0x00A8, 0x00 },
- { 0x00AD, 0x06 }, { 0x00AE, 0x09 }, { 0x00AF, 0x00 }, { 0x00B4, 0x06 }, { 0x00B5, 0x09 }, { 0x00B6, 0x00 },
- { 0x00C3, 0x06 }, { 0x00C4, 0x09 }, { 0x00C5, 0x00 }, { 0x00CA, 0x06 }, { 0x00CB, 0x09 }, { 0x00CC, 0x00 },
- { 0x00D1, 0x06 }, { 0x00D2, 0x09 }, { 0x00D3, 0x00 }, { 0x00E0, 0x06 }, { 0x00E1, 0x09 }, { 0x00E2, 0x00 },
- { 0x00E7, 0x06 }, { 0x00E8, 0x09 }, { 0x00E9, 0x00 }, { 0x00EE, 0x06 }, { 0x00EF, 0x09 }, { 0x00F0, 0x00 },
- { 0x00FD, 0x06 }, { 0x00FE, 0x09 }, { 0x00FF, 0x00 }, { 0x010A, 0x06 }, { 0x010B, 0x09 }, { 0x010C, 0x00 },
- { 0x011D, 0x06 }, { 0x011E, 0x09 }, { 0x011F, 0x00 }, { 0x012C, 0x06 }, { 0x012D, 0x09 }, { 0x012E, 0x00 },
- { 0x013D, 0x06 }, { 0x013E, 0x09 }, { 0x013F, 0x00 }, { 0x0148, 0x06 }, { 0x0149, 0x09 }, { 0x014A, 0x00 },
- { 0x0153, 0x06 }, { 0x0154, 0x09 }, { 0x0155, 0x00 }, { 0x015E, 0x06 }, { 0x015F, 0x09 }, { 0x0160, 0x00 },
- { 0x0169, 0x06 }, { 0x016A, 0x09 }, { 0x016B, 0x00 }, { 0x016C, 0x06 }, { 0x016D, 0x12 }, { 0x016E, 0x00 },
- { 0x017B, 0x06 }, { 0x017C, 0x09 }, { 0x017D, 0x00 }, { 0x0188, 0x06 }, { 0x0189, 0x09 }, { 0x018A, 0x00 },
- { 0x0190, 0x13 }, { 0x0000, 0x00 }
- };
-
- uint32 outsize = size + (ARRAYSIZE(patchData) - 1);
- uint8 *buffer = new uint8[outsize];
- assert(buffer);
-
- const uint8 *src = data;
- uint8 *dst = buffer;
- const PatchEntry *patchPos = patchData;
-
- while (dst < (buffer + outsize)) {
- if ((dst - buffer) == patchPos->pos) {
- *dst++ = patchPos->val;
- patchPos++;
- } else {
- *dst++ = *src++;
- }
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractAmigaSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- const uint32 entries = size / 8;
- byte *buffer = new byte[entries * 6 + 1 * 4];
-
- byte *output = buffer;
- WRITE_BE_UINT32(output, entries); output += 4;
-
- for (uint32 i = 0; i < entries; ++i) {
- *output++ = *data++; // Note
- *output++ = *data++; // Patch
- data += 2; // Unused
- WRITE_BE_UINT16(output, READ_BE_UINT16(data)); output += 2; data += 2; // Duration
- *output++ = *data++; // Volume
- *output++ = *data++; // Pan
- }
-
- return out.addFile(filename, buffer, entries * 6 + 1 * 4);
-}
-
-bool extractWdSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- const int bufferSize = 0x12602;
-
- uint8 *buffer = new uint8[0x12602];
- assert(buffer);
- memcpy(buffer, data, 0x7EE5);
- memcpy(buffer + 0x7EE5, data + 0x7EE7, 0x7FFF);
- memcpy(buffer + 0xFEE4, data + 0xFEE8, 0x271E);
-
- return out.addFile(filename, buffer, bufferSize);
-}
-
-int extractHofSeqData_checkString(const void *ptr, uint8 checkSize);
-int extractHofSeqData_isSequence(const void *ptr, const ExtractInformation *info, uint32 maxCheckSize);
-int extractHofSeqData_isControl(const void *ptr, uint32 size);
-
-bool extractHofSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int numSequences = 0;
- int numNestedSequences = 0;
-
- uint16 headerSize = 50 * sizeof(uint16);
- uint16 bufferSize = size + headerSize;
- byte *buffer = new byte[bufferSize];
- assert(buffer);
- memset(buffer, 0, bufferSize );
- uint16 *header = (uint16 *) buffer;
- byte *output = buffer + headerSize;
- uint16 *hdout = header;
-
- //debug(1, "\nProcessing Hand of Fate sequence data:\n--------------------------------------\n");
- for (int cycle = 0; cycle < 2; cycle++) {
- const byte *ptr = data;
- hdout++;
-
- const byte *endOffs = (const byte *)(data + size);
-
- // detect sequence structs
- while (ptr < endOffs) {
- if (ptr[1]) {
- error("invalid sequence data encountered");
- delete[] buffer;
- return false;
- }
-
- int v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
-
- if (cycle == 0 && v == 1) {
- if ((info->platform == kPlatformDOS && info->special == kNoSpecial && *ptr == 5) || (info->special == kDemoVersion && (ptr - data == 312))) {
- // patch for floppy version: skips invalid ferb sequence
- // patch for demo: skips invalid title sequence
- ptr += 54;
- continue;
- }
-
- numSequences++;
- uint16 relOffs = (uint16) (output - buffer);
- WRITE_BE_UINT16(hdout, relOffs);
- hdout++;
-
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr)); // flags
- ptr += 2;
- output += 2;
-
- memcpy(output, ptr, 28); // wsa and cps file names
- ptr += 28;
- output += 28;
-
- if (info->platform == kPlatformFMTowns) { // startupCommand + finalCommand
- memcpy(output, ptr, 2);
- ptr += 2;
- output += 2;
- } else {
- *output++ = READ_LE_UINT16(ptr) & 0xff;
- ptr += 2;
- *output++ = READ_LE_UINT16(ptr) & 0xff;
- ptr += 2;
- }
-
- for (int w = 0; w < 7; w++) { //stringIndex1 to yPos
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
- }
-
- ptr += 4;
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr)); // duration
- ptr += 2;
- output+= 2;
-
- } else if (cycle == 1 && v != 1 && v != -2) {
- uint16 controlOffs = 0;
- uint16 ctrSize = 0;
- if (v) {
- const byte *ctrStart = ptr;
- while (v && v != -2) {
- ptr++;
- v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
- }
-
- if (v == -2)
- break;
-
- ctrSize = (uint16)(ptr - ctrStart);
-
- if (info->special != kDemoVersion &&
- extractHofSeqData_isControl(ctrStart, ctrSize)) {
- controlOffs = (uint16) (output - buffer);
- *output++ = ctrSize >> 2;
-
- for (int cc = 0; cc < ctrSize; cc += 2)
- WRITE_BE_UINT16(output + cc, READ_LE_UINT16(ctrStart + cc)); // frame control
- output += ctrSize;
- }
- }
-
- numNestedSequences++;
- uint16 relOffs = (uint16) (output - buffer);
- WRITE_BE_UINT16(hdout, relOffs);
- hdout++;
-
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr)); // flags
- ptr += 2;
- output += 2;
-
- memcpy(output, ptr, 14); // wsa file name
- ptr += 14;
- output += 14;
-
- // startframe
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
-
- // endFrame
- WRITE_BE_UINT16(output, (ctrSize && ((ctrSize >> 2) < READ_LE_UINT16(ptr))) ? (ctrSize >> 2) : READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
-
- // frameDelay
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
-
- ptr += 4;
-
- for (int w = 0; w < 2; w++) { //x, y
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
- }
-
- if (!READ_LE_UINT32(ptr))
- controlOffs = 0;
-
- WRITE_BE_UINT16(output, controlOffs);
- if (info->special != kDemoVersion)
- ptr += 4;
- output += 2;
-
- if (info->special != kDemoVersion) {
- for (int w = 0; w < 2; w++) { //startupCommand, finalCommand
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
- }
- } else {
- memset(output, 0, 4);
- output += 4;
- }
-
- if (info->platform == kPlatformFMTowns)
- ptr += 2;
-
- } else if (cycle == 0) {
- while (v != 1 && v != -2) {
- ptr++;
- v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
- }
-
- if (v == -2)
- break;
-
-
- } else if (cycle == 1) {
- while (v == 1 && v != -2) {
- ptr++;
- v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
- }
-
- if (v == -2)
- break;
- }
- }
- }
-
- uint16 finHeaderSize = (2 + numSequences + numNestedSequences) * sizeof(uint16);
- uint16 finBufferSize = ((output - buffer) - headerSize) + finHeaderSize;
- byte *finBuffer = new byte[finBufferSize];
- assert(finBuffer);
- uint16 diff = headerSize - finHeaderSize;
- uint16 *finHeader = (uint16 *) finBuffer;
-
- for (int i = 1; i < finHeaderSize; i++)
- WRITE_BE_UINT16(&finHeader[i], (READ_BE_UINT16(&header[i]) - diff));
- WRITE_BE_UINT16(finHeader, numSequences);
- WRITE_BE_UINT16(&finHeader[numSequences + 1], numNestedSequences);
- memcpy (finBuffer + finHeaderSize, buffer + headerSize, finBufferSize - finHeaderSize);
- delete[] buffer;
-
- finHeader = (uint16 *) (finBuffer + ((numSequences + 2) * sizeof(uint16)));
- for (int i = 0; i < numNestedSequences; i++) {
- uint8 * offs = finBuffer + READ_BE_UINT16(finHeader++) + 26;
- uint16 ctrl = READ_BE_UINT16(offs);
- if (ctrl)
- ctrl -= diff;
- WRITE_BE_UINT16(offs, ctrl);
- }
-
- return out.addFile(filename, finBuffer, finBufferSize);
-}
-
-int extractHofSeqData_checkString(const void *ptr, uint8 checkSize) {
- // return values: 1 = text; 0 = zero string; -1 = other
-
- int t = 0;
- int c = checkSize;
- const uint8 *s = (const uint8*)ptr;
-
- // check for character string
- while (c--) {
- if (*s > 31 && *s < 123)
- t++;
- s++;
- }
-
- if (t == checkSize)
- return 1;
-
- // check for zero string
- c = checkSize;
- uint32 sum = 0;
- s = (const uint8*)ptr;
- while (c--)
- sum += *s++;
-
- return (sum) ? -1 : 0;
-}
-
-int extractHofSeqData_isSequence(const void *ptr, const ExtractInformation *info, uint32 maxCheckSize) {
- // return values: 1 = Sequence; 0 = Nested Sequence; -1 = other; -2 = overflow
-
- if (maxCheckSize < 30)
- return -2;
-
- const uint8 * s = (const uint8*)ptr;
- int c1 = extractHofSeqData_checkString(s + 2, 6);
- int c2 = extractHofSeqData_checkString(s + 16, 6);
- int c3 = extractHofSeqData_checkString(s + 2, 14);
- int c4 = extractHofSeqData_checkString(s + 16, 14);
- int c0 = s[1];
- int c5 = s[0];
-
- if (c0 == 0 && c5 && ((c1 + c2) >= 1) && (!(c3 == 0 && c2 != 1)) && (!(c4 == 0 && c1 != 1))) {
- if (maxCheckSize < 41)
- return -2;
-
- if (info->platform == kPlatformFMTowns) {
- if (!(s[37] | s[39]) && s[38] > s[36])
- return 1;
- } else {
- if (!(s[39] | s[41]) && s[40] > s[38])
- return 1;
- }
- }
-
- if (c0 == 0 && c5 == 4 && c3 == 0 && c4 == 0) {
- if (maxCheckSize >= 41 && READ_LE_UINT32(s + 34) && !(s[39] | s[41]) && s[40] > s[38])
- return 1;
- }
-
- if (c0 == 0 && c5 && c1 == 1 && c4 == -1 && s[20])
- return 0;
-
- return -1;
-}
-
-int extractHofSeqData_isControl(const void *ptr, uint32 size) {
- // return values: 1 = possible frame control data; 0 = definitely not frame control data
-
- const uint8 *s = (const uint8*)ptr;
- for (uint32 i = 2; i < size; i += 4) {
- if (!s[i])
- return 0;
- }
-
- for (uint32 i = 1; i < size; i += 2) {
- if (s[i])
- return 0;
- }
- return 1;
-}
-
-bool extractHofShapeAnimDataV1(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = 1;
- uint8 *buffer = new uint8[size + 1];
- const uint8 *src = data;
- uint8 *dst = buffer + 1;
-
- for (int i = 0; i < 4; i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 4;
- dst += 2;
- outsize += 4;
-
- for (int j = 0; j < 20; j++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- outsize += 2;
- }
-
- };
-
- *buffer = 4; // number of items
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractHofShapeAnimDataV2(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = 1;
- uint8 *buffer = new uint8[size + 1];
- const uint8 *src = data;
- uint8 *dst = buffer + 1;
- const uint8 *fin = data + size;
- int count = 0;
-
- do {
- if (READ_LE_UINT16(src) == 0xffff)
- break;
-
- count++;
-
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
-
- uint8 numFrames = *src;
- *dst++ = numFrames;
- src += 6;
- outsize += 3;
-
- for (int i = 0; i < (numFrames << 1); i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- outsize += 2;
- }
-
- src += (48 - (numFrames << 2));
-
- } while (src < fin);
-
- *buffer = count; // number of items
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractStringsWoSuffix(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = size + 4;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer + 4;
- const uint8 *fin = src + size;
- int entries = 0;
-
- while (src < fin) {
- while (!*src && src < fin)
- src++;
- while (*src && *src != '.' && src < fin)
- *dst++ = *src++;
-
- *dst++ = '\0';
- entries++;
-
- if (*src == '.') {
- while (*src && src < fin)
- src++;
- }
- }
-
- WRITE_BE_UINT32(buffer, entries);
- outsize = dst - buffer;
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractPaddedStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = size + 4;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer + 4;
- const uint8 *fin = src + size;
- int entries = 0;
-
- while (src < fin) {
- while (!*src && src < fin)
- src++;
- while (*src && src < fin)
- *dst++ = *src++;
- if (src < fin)
- *dst++ = *src++;
- entries++;
- }
-
- WRITE_BE_UINT32(buffer, entries);
-
- outsize = dst - buffer;
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractRaw16to8(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // Hack for some LOL FM-Towns entries
- if (info->platform == Common::kPlatformFMTowns && ((id >= kLoLButtonList1 && id <= kLoLButtonList8) || id == kLoLCharInvIndex))
- return extractRaw(out, info, data, size, filename, id);
-
- int outsize = size >> 1;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < outsize; i++) {
- *dst++ = *src++;
- src++;
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractRaw16(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (uint32 i = 0; i < (size >> 1); i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractRaw32(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (uint32 i = 0; i < (size >> 2); i++) {
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4;
- dst += 4;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractLoLButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int num = size / 22;
- uint8 *buffer = new uint8[size];
- uint32 outsize = num * 18;
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < num; i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 6; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractLoLFlyingShpDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- if (info->platform != Common::kPlatformFMTowns)
- return extractRaw16to8(out, info, data, size, filename, id);
-
- int outsize = size / 9 * 5;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = outsize / 5; i; --i) {
- *dst++ = *src++;
- src++;
- *dst++ = *src++;
- src++;
- *dst++ = *src++;
- src++;
- *dst++ = *src++;
- *dst++ = *src++;
- src++;
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractEoB2SeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int num = size / 11;
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < num; i++) {
- memcpy(dst, src, 2);
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- memcpy(dst, src, 7);
- src += 7; dst += 7;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractEoB2ShapeData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int num = size / 6;
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < num; i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- memcpy(dst, src, 4);
- src += 4; dst += 4;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // We use one extraction routine for both EOB 1 and EOB 2 (in spite of the data format differences)
- // since it is easy enough to generate a common output usable by both engines
-
- uint8 *buffer = 0;
- uint32 outsize = 0;
-
- if (info->game == kEoB1) {
- uint16 num = size / 243;
- outsize = num * 111 + 2;
- buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- WRITE_BE_UINT16(dst, num);
- dst += 2;
-
- for (int i = 0; i < num; i++) {
- memcpy(dst, src, 27);
- src += 27; dst += 27;
- WRITE_BE_UINT16(dst, *src++);
- dst += 2;
- WRITE_BE_UINT16(dst, *src++);
- dst += 2;
- memcpy(dst, src, 10);
- src += 10; dst += 10;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- // skipping lots of zero space
- src += 64;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- for (int ii = 0; ii < 27; ii++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- }
- // skipping more zero space
- src += 70;
- }
- } else {
- uint16 num = size / 345;
- outsize = num * 111 + 2;
- buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- WRITE_BE_UINT16(dst, num);
- dst += 2;
-
- for (int i = 0; i < num; i++) {
- memcpy(dst, src, 27);
- src += 27; dst += 27;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- memcpy(dst, src, 10);
- src += 10; dst += 10;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- // skipping lots of zero space
- src += 164;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- for (int ii = 0; ii < 27; ii++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- }
- // skipping more zero space
- src += 70;
- }
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractMrShapeAnimData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = 1;
- uint8 *buffer = new uint8[size + 1];
- const uint8 *src2 = data;
- const uint8 *src1 = data + 324;
- uint8 *dst = buffer + 1;
- const uint8 *fin = data + size;
- int count = 0;
-
- do {
- if (READ_LE_UINT16(src1) == 0xffff)
- break;
-
- count++;
-
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src1));
- src1 += 2;
- dst += 2;
-
- uint8 numFrames = *src1;
- *dst++ = numFrames;
- src1 += 10;
- outsize += 3;
-
- for (int i = 0; i < (numFrames << 1); i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src2));
- src2 += 2;
- dst += 2;
- outsize += 2;
- }
- } while (src1 < fin);
-
- *buffer = count; // number of items
-
- return out.addFile(filename, buffer, outsize);
-}
-
-} // end of anonymous namespace
diff --git a/devtools/create_kyradat/extract.h b/devtools/create_kyradat/extract.h
deleted file mode 100644
index 4445e59..0000000
--- a/devtools/create_kyradat/extract.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef CREATE_KYRADAT_EXTRACT_H
-#define CREATE_KYRADAT_EXTRACT_H
-
-#include "create_kyradat.h"
-#include "pak.h"
-#include "util.h"
-
-enum kExtractType {
- kTypeStringList = 0,
- kTypeRoomList,
- kTypeShapeList,
- kTypeRawData,
- kTypeForestSeqData,
- kTypeAmigaSfxTable,
- kTypeTownsWDSfxTable,
-
- k2TypeSeqData,
- k2TypeShpDataV1,
- k2TypeShpDataV2,
- k2TypeSoundList,
- k2TypeLangSoundList,
- k2TypeSize10StringList,
- k2TypeSfxList,
-
- k3TypeRaw16to8,
- k3TypeShpData,
-
- kLoLTypeRaw16,
- kLoLTypeRaw32,
- kLoLTypeButtonDef,
- kLoLTypeCharData,
- kLoLTypeSpellData,
- kLoLTypeCompassData,
- kLoLTypeFlightShpData,
-
- kEoB2TypeSeqData,
- kEoB2TypeShapeData,
- kEoBTypeNpcData
-};
-
-struct ExtractInformation {
- int game;
- int platform;
- int lang;
- int special;
-};
-
-struct ExtractType {
- int type;
- bool (*extract)(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-};
-
-const ExtractType *findExtractType(const int type);
-byte getTypeID(int type);
-
-#endif
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index b9e7e3f..0162bda 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -24,113 +24,110 @@
#define FORBIDDEN_SYMBOL_ALLOW_ALL
#include "create_kyradat.h"
-#include "common/language.h"
-#include "common/platform.h"
+#include "resources.h"
// Game tables
namespace {
const Game kyra1Games[] = {
- // Demos
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kDemoVersion, { "7b7504c8560ffc914d34c44c71b3094c", 0 } },
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kTalkieDemoVersion, { "226fdba99cb11ef1047131d9a50e6292", 0 } },
-
- // Amiga
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformAmiga, kNoSpecial, { "b620564b6b7e0787b053ca9e35bd9f52", 0 } },
- { kKyra1, { DE_DEU, -1, -1 }, kPlatformAmiga, kNoSpecial, { "ceddb4bd4df51698e3851e75106d117a", 0 } },
-
- // Floppy
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "76a4fc84e173cadb6369785787e1546e", 0 } },
- { kKyra1, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "9442d6f7db6a41f3dd4aa4de5d36e107", 0 } },
- { kKyra1, { FR_FRA, -1, -1 }, kPlatformDOS, kNoSpecial, { "aa9d6d78d8b199deaf48efeca6d19af2", 0 } },
- { kKyra1, { IT_ITA, -1, -1 }, kPlatformDOS, kNoSpecial, { "5d7550306b369a3492f9f3402702477c", 0 } },
- { kKyra1, { ES_ESP, -1, -1 }, kPlatformDOS, kNoSpecial, { "9ff130d2558bcd674d4074849d93c362", 0 } },
- { kKyra1, { RU_RUS, -1, -1 }, kPlatformDOS, kOldFloppy, { "3b4719e1f8a4d67813b7ada29774aead", 0 } },
-
- // Talkie
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kTalkieVersion, { "1ebc18f3e7fbb72474a55cb0fa089ed4", 0 } },
- { kKyra1, { DE_DEU, -1, -1 }, kPlatformDOS, kTalkieVersion, { "c65d381184f98ac26d9efd2d45baef51", 0 } },
- { kKyra1, { FR_FRA, -1, -1 }, kPlatformDOS, kTalkieVersion, { "307c5d4a554d9068ac3d326e350ae4a6", 0 } },
- { kKyra1, { IT_ITA, -1, -1 }, kPlatformDOS, kTalkieVersion, { "d0f1752098236083d81b9497bd2b6989", 0 } }, // Italian fan translation
-
- // FM-TOWNS
- { kKyra1, { EN_ANY, JA_JPN, -1 }, kPlatformFMTowns, kNoSpecial, { "5a3ad60ccd0f2e29463e0368cd14a60d", 0 } },
-
- // PC-98
- { kKyra1, { JA_JPN, -1, -1 }, kPlatformPC98, kNoSpecial, { "b9c06ac5177f5bf1f1acc0eea3937f6d", 0 } },
+ { kKyra1, kPlatformDOS, kDemoVersion, EN_ANY },
+
+ { kKyra1, kPlatformDOS, kTalkieDemoVersion, EN_ANY },
+
+ { kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY },
+ { kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU },
+
+ { kKyra1, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kKyra1, kPlatformDOS, kNoSpecial, DE_DEU },
+ { kKyra1, kPlatformDOS, kNoSpecial, FR_FRA },
+ { kKyra1, kPlatformDOS, kNoSpecial, IT_ITA },
+ { kKyra1, kPlatformDOS, kNoSpecial, ES_ESP },
+ { kKyra1, kPlatformDOS, kOldFloppy, RU_RUS },
+
+ { kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA },
+
+ { kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY },
+ { kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN },
+
+ { kKyra1, kPlatformPC98, kNoSpecial, JA_JPN },
GAME_DUMMY_ENTRY
};
const Game kyra2Games[] = {
- // demos
- { kKyra2, { EN_ANY, -1, -1 }, kPlatformDOS, kDemoVersion, { "a620a37579dd44ab0403482285e3897f", 0 } },
+ { kKyra2, kPlatformDOS, kDemoVersion, EN_ANY },
- { kKyra2, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieDemoVersion, { "85bbc1cc6c4cef6ad31fc6ee79518efb", "fa54d8abfe05f9186c05f7de7eaf1480" } },
+ { kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY },
+ { kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA },
+ { kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU },
- // floppy games
- { kKyra2, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "9b0f5e57b5a2ed88b5b989cbb402b6c7", "7c3eadbe5122722cf2e5e1611e19dfb9" } },
- { kKyra2, { FR_FRA, -1, -1 }, kPlatformDOS, kNoSpecial, { "df31cc9e37e1cf68df2fdc75ddf2d87b", "fc2c6782778e6c6d5a553d1cb73c98ad" } },
- { kKyra2, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "0ca4f9a1438264a4c63c3218e064ed3b", "0d9b0eb7b0ad889ec942d74d80dde1bf" } },
- { kKyra2, { IT_ITA, -1, -1 }, kPlatformDOS, kNoSpecial, { "178d3ab913f61bfba21d2fb196405e8c", "3a61ed6b7c00ddae383a0361799e2ba6" } },
- { kKyra2, { RU_RUS, -1, -1 }, kPlatformDOS, kNoSpecial, { "fd6a388c01de9a578e24e3bbeacd8012", "3a61ed6b7c00ddae383a0361799e2ba6" } },
+ { kKyra2, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kKyra2, kPlatformDOS, kNoSpecial, FR_FRA },
+ { kKyra2, kPlatformDOS, kNoSpecial, DE_DEU },
+ { kKyra2, kPlatformDOS, kNoSpecial, IT_ITA },
+ { kKyra2, kPlatformDOS, kNoSpecial, RU_RUS },
- // talkie games
- { kKyra2, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "85bbc1cc6c4cef6ad31fc6ee79518efb", "e20d0d2e500f01e399ec588247a7e213" } },
- { kKyra2, { IT_ITA, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "130795aa8f2333250c895dae9028b9bb", "e20d0d2e500f01e399ec588247a7e213" } }, // Italian Fan Translation
- { kKyra2, { RU_RUS, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "c3afd22959f515355b2a33cde950f418", "e20d0d2e500f01e399ec588247a7e213" } }, // Russian Fan Translation
+ { kKyra2, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kKyra2, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kKyra2, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kKyra2, kPlatformDOS, kTalkieVersion, IT_ITA },
+ { kKyra2, kPlatformDOS, kTalkieVersion, RU_RUS },
- // FM-TOWNS games
- { kKyra2, { EN_ANY, JA_JPN, -1 }, kPlatformFMTowns, kNoSpecial, { "74f50d79c919cc8e7196c24942ce43d7", "a9a7fd4f05d00090e9e8bda073e6d431" } },
+ { kKyra2, kPlatformFMTowns, kNoSpecial, EN_ANY },
+ { kKyra2, kPlatformFMTowns, kNoSpecial, JA_JPN },
- // PC-98
- { kKyra2, { EN_ANY, JA_JPN, -1 }, kPlatformPC98, kNoSpecial, { "9bbf9a69be956db072b485929b416082", "f55fda3e60c4956ce6e72b24d2ae1a07" } },
+ { kKyra2, kPlatformPC98, kNoSpecial, EN_ANY },
+ { kKyra2, kPlatformPC98, kNoSpecial, JA_JPN },
GAME_DUMMY_ENTRY
};
const Game kyra3Games[] = {
- // DOS CD (multi language version, with no language specific strings)
- { kKyra3, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "bf68701eb591d0b72219f314c0d32688", 0 } },
- { kKyra3, { EN_ANY, IT_ITA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "bf68701eb591d0b72219f314c0d32688", 0 } }, // Fan translation // TODO: Verify md5sum
- { kKyra3, { ES_ESP, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "bf68701eb591d0b72219f314c0d32688", 0 } }, // Fan translation // TODO: Verify md5sum
+ { kKyra3, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kKyra3, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kKyra3, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kKyra3, kPlatformDOS, kTalkieVersion, IT_ITA },
+ { kKyra3, kPlatformDOS, kTalkieVersion, ES_ESP },
GAME_DUMMY_ENTRY
};
const Game eob1Games[] = {
- { kEoB1, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "1bde1dd37b40ab6de8ad11be33a44c5a", "d760a605d1a1302d06975a1f209fdd72" } },
- { kEoB1, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "0fa3c6e00a81171b9f2adb3fdeb8eea3", "756f300c62aabf1dbd3c26b3b04f8c00" } },
+ { kEoB1, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kEoB1, kPlatformDOS, kNoSpecial, DE_DEU },
+
GAME_DUMMY_ENTRY
};
const Game eob2Games[] = {
- { kEoB2, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "e006d031c2d854f748947f777e0c59b0", 0 } },
- { kEoB2, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "6c6c4168deb2a4cb3dee3f1be2d39746", 0 } },
+ { kEoB2, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kEoB2, kPlatformDOS, kNoSpecial, DE_DEU },
+
GAME_DUMMY_ENTRY
};
const Game lolGames[] = {
- // DOS demo
- { kLoL, { EN_ANY, -1, -1 }, kPlatformDOS, kDemoVersion, { "30bb5af87d38adb47d3e6ce06b1cb042", 0 } },
+ { kLoL, kPlatformDOS, kDemoVersion, EN_ANY },
+
+ { kLoL, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kLoL, kPlatformDOS, kNoSpecial, RU_RUS },
+ { kLoL, kPlatformDOS, kNoSpecial, DE_DEU },
+ { kLoL, kPlatformDOS, kNoSpecial, FR_FRA },
- // DOS floppy (no language specifc strings except character presets)
- { kLoL, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "0cc764a204f7ba8cefe1a5f14c479619", 0 } },
- { kLoL, { RU_RUS, -1, -1 }, kPlatformDOS, kNoSpecial, { "80a9f9bf243bc6ed36d98584fc6988c4", 0 } },
- { kLoL, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "6b843869772c1b779e1386be868c15dd", 0 } },
- { kLoL, { FR_FRA, -1, -1 }, kPlatformDOS, kNoSpecial, { "6b843869772c1b779e1386be868c15dd", 0 } },
+ { kLoL, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kLoL, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kLoL, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kLoL, kPlatformDOS, kTalkieVersion, IT_ITA },
+ { kLoL, kPlatformDOS, kTalkieVersion, RU_RUS },
- // PC98 (no language specifc strings)
- { kLoL, { JA_JPN, -1, -1 }, kPlatformPC98, kNoSpecial, { "6d5bd4a2f5ce433365734ca6b7a8d984", "1b0a457c48ae6908da301b656fe0aab4" } },
+ { kLoL, kPlatformPC98, kNoSpecial, JA_JPN },
- // FM-Towns (no language specifc strings)
- { kLoL, { JA_JPN, -1, -1 }, kPlatformFMTowns, kNoSpecial, { "a281c7143bf2b6c5d4daa107a4b0427e", "34b4cecce179990e3bcaaa2d31484a90"} },
+ { kLoL, kPlatformFMTowns, kNoSpecial, JA_JPN },
- // DOS CD (multi language version, with no language specific strings)
- { kLoL, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "263998ec600afca1cc7b935c473df670" } },
- { kLoL, { IT_ITA, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "f2af366e00f79dbf832fa19701d71ed9" } }, // Italian fan translation
- { kLoL, { EN_ANY, FR_FRA, RU_RUS }, kPlatformDOS, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "5b33478718968676343803911dd5e3e4" } }, // Russian fan translation
GAME_DUMMY_ENTRY
};
@@ -824,7 +821,7 @@ const int lolFloppyNeed[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -907,7 +904,7 @@ const int lolPC98Need[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -991,7 +988,7 @@ const int lolFMTownsNeed[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -1080,7 +1077,7 @@ const int lolCDNeed[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -1231,14 +1228,14 @@ const int eob1FloppyNeed[] = {
kEoBBaseCursedString,
kEoBBaseEnchantedString,
kEoBBaseMagicObjectStrings,
- kEoBBaseMagicObject5String,
+ kEoBBaseMagicObjectString5,
kEoBBasePatternSuffix,
kEoBBasePatternGrFix1,
kEoBBasePatternGrFix2,
kEoBBaseValidateArmorString,
kEoBBaseValidateNoDropString,
kEoBBasePotionStrings,
- kEoBBaseWandString,
+ kEoBBaseWandStrings,
kEoBBaseItemMisuseStrings,
kEoBBaseTakenStrings,
@@ -1360,7 +1357,7 @@ const int eob1FloppyNeed[] = {
kEoBBaseDscItemPosIndex,
kEoBBaseDscItemShpX,
- kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemScaleIndex,
kEoBBaseDscItemTileIndex,
kEoBBaseDscItemShapeMap,
kEoBBaseDscTelptrShpCoords,
@@ -1452,7 +1449,7 @@ const int eob2FloppyNeed[] = {
kEoBBaseCursedString,
kEoBBaseEnchantedString,
kEoBBaseMagicObjectStrings,
- kEoBBaseMagicObject5String,
+ kEoBBaseMagicObjectString5,
kEoBBasePatternSuffix,
kEoBBasePatternGrFix1,
kEoBBasePatternGrFix2,
@@ -1460,7 +1457,7 @@ const int eob2FloppyNeed[] = {
kEoBBaseValidateCursedString,
kEoBBaseValidateNoDropString,
kEoBBasePotionStrings,
- kEoBBaseWandString,
+ kEoBBaseWandStrings,
kEoBBaseItemMisuseStrings,
kEoBBaseTakenStrings,
@@ -1581,7 +1578,7 @@ const int eob2FloppyNeed[] = {
kEoBBaseDscItemPosIndex,
kEoBBaseDscItemShpX,
- kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemScaleIndex,
kEoBBaseDscItemTileIndex,
kEoBBaseDscItemShapeMap,
kEoBBaseDscTelptrShpCoords,
diff --git a/devtools/create_kyradat/module.mk b/devtools/create_kyradat/module.mk
index fb458b4..af80f5d 100644
--- a/devtools/create_kyradat/module.mk
+++ b/devtools/create_kyradat/module.mk
@@ -3,12 +3,11 @@ MODULE := devtools/create_kyradat
MODULE_OBJS := \
create_kyradat.o \
- extract.o \
games.o \
md5.o \
pak.o \
- search.o \
- tables.o \
+ resources.o \
+ types.o \
util.o
# Set the name of the executable
diff --git a/devtools/create_kyradat/resources.cpp b/devtools/create_kyradat/resources.cpp
new file mode 100644
index 0000000..66db495
--- /dev/null
+++ b/devtools/create_kyradat/resources.cpp
@@ -0,0 +1,1950 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "resources.h"
+#include "types.h"
+
+// The Legend of Kyrandia
+#include "resources/lok_amiga.h"
+#include "resources/lok_amiga_english.h"
+#include "resources/lok_amiga_german.h"
+
+#include "resources/lok_dos_demo.h"
+#include "resources/lok_dos_demo_english.h"
+
+#include "resources/lok_dos.h"
+#include "resources/lok_dos_english.h"
+#include "resources/lok_dos_french.h"
+#include "resources/lok_dos_german.h"
+#include "resources/lok_dos_italian.h"
+#include "resources/lok_dos_oldfloppy.h"
+#include "resources/lok_dos_oldfloppy_russian.h"
+#include "resources/lok_dos_spanish.h"
+
+#include "resources/lok_dos_cd.h"
+#include "resources/lok_dos_cd_english.h"
+#include "resources/lok_dos_cd_french.h"
+#include "resources/lok_dos_cd_german.h"
+#include "resources/lok_dos_cd_italian.h"
+
+#include "resources/lok_dos_cddemo.h"
+#include "resources/lok_dos_cddemo_english.h"
+
+#include "resources/lok_fmtowns.h"
+#include "resources/lok_fmtowns_english.h"
+#include "resources/lok_fmtowns_japanese.h"
+
+#include "resources/lok_pc98.h"
+#include "resources/lok_pc98_japanese.h"
+
+// The Hand of Fate
+#include "resources/hof_dos_demo.h"
+
+#include "resources/hof_dos.h"
+#include "resources/hof_dos_english.h"
+#include "resources/hof_dos_french.h"
+#include "resources/hof_dos_german.h"
+#include "resources/hof_dos_italian.h"
+#include "resources/hof_dos_russian.h"
+
+#include "resources/hof_dos_cddemo.h"
+#include "resources/hof_dos_cddemo_english.h"
+#include "resources/hof_dos_cddemo_french.h"
+#include "resources/hof_dos_cddemo_german.h"
+
+#include "resources/hof_dos_cd.h"
+#include "resources/hof_dos_cd_english.h"
+#include "resources/hof_dos_cd_french.h"
+#include "resources/hof_dos_cd_german.h"
+#include "resources/hof_dos_cd_italian.h"
+#include "resources/hof_dos_cd_russian.h"
+
+#include "resources/hof_fmtowns.h"
+#include "resources/hof_fmtowns_english.h"
+#include "resources/hof_fmtowns_japanese.h"
+
+#include "resources/hof_pc98.h"
+#include "resources/hof_pc98_english.h"
+#include "resources/hof_pc98_japanese.h"
+
+// Malcolm's Revenge
+#include "resources/mr_dos_cd.h"
+
+// Eye of the Beholder
+#include "resources/eob1_dos.h"
+#include "resources/eob1_dos_english.h"
+#include "resources/eob1_dos_german.h"
+
+// Eye of the Beholder: The Legend of Darkmoon
+#include "resources/eob2_dos.h"
+#include "resources/eob2_dos_english.h"
+#include "resources/eob2_dos_german.h"
+
+// Lands of Lore
+#include "resources/lol_dos_demo.h"
+#include "resources/lol_dos_demo_english.h"
+
+#include "resources/lol_dos.h"
+#include "resources/lol_dos_english.h"
+#include "resources/lol_dos_french.h"
+#include "resources/lol_dos_german.h"
+#include "resources/lol_dos_russian.h"
+
+#include "resources/lol_dos_cd.h"
+#include "resources/lol_dos_cd_english.h"
+#include "resources/lol_dos_cd_french.h"
+#include "resources/lol_dos_cd_german.h"
+#include "resources/lol_dos_cd_italian.h"
+#include "resources/lol_dos_cd_russian.h"
+
+#include "resources/lol_pc98.h"
+#include "resources/lol_pc98_japanese.h"
+
+#include "resources/lol_fmtowns.h"
+#include "resources/lol_fmtowns_japanese.h"
+
+static const ResourceProvider resourceProviders[] = {
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1WestwoodLogoSeqDOSDemoProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1KyrandiaLogoSeqDOSDemoProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1IntroCPSStringsDOSDemoProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1IntroCOLStringsDOSDemoProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1IntroWSAStringsDOSDemoProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kDemoVersion, EN_ANY, &k1IntroStringsDOSDemoEnglishProvider },
+ { k1Demo1Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo1SeqDOSDemoProvider },
+ { k1Demo2Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo2SeqDOSDemoProvider },
+ { k1Demo3Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo3SeqDOSDemoProvider },
+ { k1Demo4Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo4SeqDOSDemoProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1AudioTracksIntroDOSDemoProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1KallakWritingSeqDOSCDDemoProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1MalcolmTreeSeqDOSCDDemoProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1WestwoodLogoSeqDOSCDDemoProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1KyrandiaLogoSeqDOSCDDemoProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1KallakMalcolmSeqDOSCDDemoProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1ForestSeqDOSCDDemoProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1IntroCPSStringsDOSCDDemoProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1IntroCOLStringsDOSCDDemoProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1IntroWSAStringsDOSCDDemoProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k1IntroStringsDOSCDDemoEnglishProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1AudioTracksIntroDOSCDDemoProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1KallakWritingSeqAmigaProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqAmigaProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqAmigaProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqAmigaProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqAmigaProvider },
+ { k1ForestSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1ForestSeqAmigaProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1IntroCPSStringsAmigaProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1IntroWSAStringsAmigaProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1IntroCOLStringsAmigaProvider },
+ { k1IntroStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1IntroStringsAmigaEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1RoomListAmigaProvider },
+ { k1RoomFilenames, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1RoomFilenamesAmigaProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesAmigaProvider },
+ { k1DefaultShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1DefaultShapesAmigaProvider },
+ { k1ItemNames, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1ItemNamesAmigaEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1TakenStringsAmigaEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1PlacedStringsAmigaEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1DroppedStringsAmigaEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1NoDropStringsAmigaEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqAmigaProvider },
+ { k1PutDownString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1PutDownStringAmigaEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1WaitAmuletStringAmigaEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1BlackJewelStringAmigaEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1HealingTipStringAmigaEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1PoisonGoneStringAmigaEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Healing1ShapesAmigaProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Healing2ShapesAmigaProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1ThePoisonStringsAmigaEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1FluteStringsAmigaEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesAmigaProvider },
+ { k1FluteShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1FluteShapesAmigaProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Winter1ShapesAmigaProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Winter2ShapesAmigaProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Winter3ShapesAmigaProvider },
+ { k1DrinkShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1DrinkShapesAmigaProvider },
+ { k1WispShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1WispShapesAmigaProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1MagicAnimShapesAmigaProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1BranStoneShapesAmigaProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1WispJewelStringsAmigaEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1MagicJewelStringsAmigaEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1FlaskFullStringAmigaEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1FullFlaskStringAmigaEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1OutroReunionSeqAmigaProvider },
+ { k1OutroHomeString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1OutroHomeStringAmigaEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1VeryCleverStringAmigaEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1GUIStringsAmigaEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1NewGameStringAmigaEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1ConfigStringsAmigaEnglishProvider },
+ { k1CreditsStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1CreditsStringsAmigaEnglishProvider },
+ { k1AmigaIntroSFXTable, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1AmigaIntroSFXTableAmigaProvider },
+ { k1AmigaGameSFXTable, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1AmigaGameSFXTableAmigaProvider },
+ { k1IntroStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1IntroStringsAmigaGermanProvider },
+ { k1ItemNames, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1ItemNamesAmigaGermanProvider },
+ { k1TakenStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1TakenStringsAmigaGermanProvider },
+ { k1PlacedStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1PlacedStringsAmigaGermanProvider },
+ { k1DroppedStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1DroppedStringsAmigaGermanProvider },
+ { k1NoDropStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1NoDropStringsAmigaGermanProvider },
+ { k1PutDownString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1PutDownStringAmigaGermanProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1WaitAmuletStringAmigaGermanProvider },
+ { k1BlackJewelString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1BlackJewelStringAmigaGermanProvider },
+ { k1HealingTipString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1HealingTipStringAmigaGermanProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1PoisonGoneStringAmigaGermanProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1ThePoisonStringsAmigaGermanProvider },
+ { k1FluteStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1FluteStringsAmigaGermanProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1WispJewelStringsAmigaGermanProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1MagicJewelStringsAmigaGermanProvider },
+ { k1FlaskFullString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1FlaskFullStringAmigaGermanProvider },
+ { k1FullFlaskString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1FullFlaskStringAmigaGermanProvider },
+ { k1OutroHomeString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1OutroHomeStringAmigaGermanProvider },
+ { k1VeryCleverString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1VeryCleverStringAmigaGermanProvider },
+ { k1GUIStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1GUIStringsAmigaGermanProvider },
+ { k1NewGameString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1NewGameStringAmigaGermanProvider },
+ { k1ConfigStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1ConfigStringsAmigaGermanProvider },
+ { k1CreditsStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1CreditsStringsAmigaGermanProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1KallakWritingSeqDOSProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqDOSProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqDOSProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqDOSProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqDOSProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1ForestSeqDOSProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1IntroCPSStringsDOSProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1IntroCOLStringsDOSProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1IntroWSAStringsDOSProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1IntroStringsDOSEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1RoomListDOSProvider },
+ { k1RoomFilenames, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1RoomFilenamesDOSProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesDOSProvider },
+ { k1DefaultShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1DefaultShapesDOSProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1ItemNamesDOSEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1TakenStringsDOSEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1PlacedStringsDOSEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1DroppedStringsDOSEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1NoDropStringsDOSEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqDOSProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette1DOSProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette2DOSProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette3DOSProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette4DOSProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette5DOSProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette6DOSProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette7DOSProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette8DOSProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette9DOSProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette10DOSProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette11DOSProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette12DOSProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette13DOSProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette14DOSProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette15DOSProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette16DOSProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette17DOSProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette18DOSProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette19DOSProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette20DOSProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette21DOSProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette22DOSProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette23DOSProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette24DOSProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette25DOSProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette26DOSProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette27DOSProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette28DOSProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette29DOSProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette30DOSProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette31DOSProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette32DOSProvider },
+ { k1SpecialPalette33, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette33DOSProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1PutDownStringDOSEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1WaitAmuletStringDOSEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1BlackJewelStringDOSEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1HealingTipStringDOSEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1PoisonGoneStringDOSEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Healing1ShapesDOSProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Healing2ShapesDOSProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1ThePoisonStringsDOSEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1FluteStringsDOSEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesDOSProvider },
+ { k1FluteShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1FluteShapesDOSProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Winter1ShapesDOSProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Winter2ShapesDOSProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Winter3ShapesDOSProvider },
+ { k1DrinkShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1DrinkShapesDOSProvider },
+ { k1WispShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1WispShapesDOSProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1MagicAnimShapesDOSProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1BranStoneShapesDOSProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1WispJewelStringsDOSEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1MagicJewelStringsDOSEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1FlaskFullStringDOSEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1FullFlaskStringDOSEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1OutroReunionSeqDOSProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1OutroHomeStringDOSEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1VeryCleverStringDOSEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1GUIStringsDOSEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1NewGameStringDOSEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1ConfigStringsDOSEnglishProvider },
+ { k1AudioTracks, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AudioTracksDOSProvider },
+ { k1AudioTracks2, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AudioTracks2DOSProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AudioTracksIntroDOSProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1IntroStringsDOSGermanProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1ItemNamesDOSGermanProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1TakenStringsDOSGermanProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1PlacedStringsDOSGermanProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1DroppedStringsDOSGermanProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1NoDropStringsDOSGermanProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1PutDownStringDOSGermanProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1WaitAmuletStringDOSGermanProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1BlackJewelStringDOSGermanProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1HealingTipStringDOSGermanProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1PoisonGoneStringDOSGermanProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1ThePoisonStringsDOSGermanProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1FluteStringsDOSGermanProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1WispJewelStringsDOSGermanProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1MagicJewelStringsDOSGermanProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1FlaskFullStringDOSGermanProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1FullFlaskStringDOSGermanProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1OutroHomeStringDOSGermanProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1VeryCleverStringDOSGermanProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1GUIStringsDOSGermanProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1NewGameStringDOSGermanProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1ConfigStringsDOSGermanProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1IntroStringsDOSFrenchProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1ItemNamesDOSFrenchProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1TakenStringsDOSFrenchProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1PlacedStringsDOSFrenchProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1DroppedStringsDOSFrenchProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1NoDropStringsDOSFrenchProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1PutDownStringDOSFrenchProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1WaitAmuletStringDOSFrenchProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1BlackJewelStringDOSFrenchProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1HealingTipStringDOSFrenchProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1PoisonGoneStringDOSFrenchProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1ThePoisonStringsDOSFrenchProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1FluteStringsDOSFrenchProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1WispJewelStringsDOSFrenchProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1MagicJewelStringsDOSFrenchProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1FlaskFullStringDOSFrenchProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1FullFlaskStringDOSFrenchProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1OutroHomeStringDOSFrenchProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1VeryCleverStringDOSFrenchProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1GUIStringsDOSFrenchProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1NewGameStringDOSFrenchProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1ConfigStringsDOSFrenchProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1IntroStringsDOSItalianProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1ItemNamesDOSItalianProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1TakenStringsDOSItalianProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1PlacedStringsDOSItalianProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1DroppedStringsDOSItalianProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1NoDropStringsDOSItalianProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1PutDownStringDOSItalianProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1WaitAmuletStringDOSItalianProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1BlackJewelStringDOSItalianProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1HealingTipStringDOSItalianProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1PoisonGoneStringDOSItalianProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1ThePoisonStringsDOSItalianProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1FluteStringsDOSItalianProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1WispJewelStringsDOSItalianProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1MagicJewelStringsDOSItalianProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1FlaskFullStringDOSItalianProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1FullFlaskStringDOSItalianProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1OutroHomeStringDOSItalianProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1VeryCleverStringDOSItalianProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1GUIStringsDOSItalianProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1NewGameStringDOSItalianProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1ConfigStringsDOSItalianProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1IntroStringsDOSSpanishProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1ItemNamesDOSSpanishProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1TakenStringsDOSSpanishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1PlacedStringsDOSSpanishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1DroppedStringsDOSSpanishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1NoDropStringsDOSSpanishProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1PutDownStringDOSSpanishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1WaitAmuletStringDOSSpanishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1BlackJewelStringDOSSpanishProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1HealingTipStringDOSSpanishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1PoisonGoneStringDOSSpanishProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1ThePoisonStringsDOSSpanishProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1FluteStringsDOSSpanishProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1WispJewelStringsDOSSpanishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1MagicJewelStringsDOSSpanishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1FlaskFullStringDOSSpanishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1FullFlaskStringDOSSpanishProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1OutroHomeStringDOSSpanishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1VeryCleverStringDOSSpanishProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1GUIStringsDOSSpanishProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1NewGameStringDOSSpanishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1ConfigStringsDOSSpanishProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1KallakWritingSeqDOSOldFloppyProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1MalcolmTreeSeqDOSOldFloppyProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1WestwoodLogoSeqDOSOldFloppyProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1KyrandiaLogoSeqDOSOldFloppyProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1KallakMalcolmSeqDOSOldFloppyProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1ForestSeqDOSOldFloppyProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1IntroCPSStringsDOSOldFloppyProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1IntroCOLStringsDOSOldFloppyProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1IntroWSAStringsDOSOldFloppyProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1IntroStringsDOSOldFloppyRussianProvider },
+ { k1RoomList, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1RoomListDOSOldFloppyProvider },
+ { k1RoomFilenames, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1RoomFilenamesDOSOldFloppyProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1CharacterImageFilenamesDOSOldFloppyProvider },
+ { k1DefaultShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1DefaultShapesDOSOldFloppyProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1ItemNamesDOSOldFloppyRussianProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1TakenStringsDOSOldFloppyRussianProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1PlacedStringsDOSOldFloppyRussianProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1DroppedStringsDOSOldFloppyRussianProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AmuleteAnimSeqDOSOldFloppyProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette1DOSOldFloppyProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette2DOSOldFloppyProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette3DOSOldFloppyProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette4DOSOldFloppyProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette5DOSOldFloppyProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette6DOSOldFloppyProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette7DOSOldFloppyProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette8DOSOldFloppyProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette9DOSOldFloppyProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette10DOSOldFloppyProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette11DOSOldFloppyProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette12DOSOldFloppyProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette13DOSOldFloppyProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette14DOSOldFloppyProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette15DOSOldFloppyProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette16DOSOldFloppyProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette17DOSOldFloppyProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette18DOSOldFloppyProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette19DOSOldFloppyProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette20DOSOldFloppyProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette21DOSOldFloppyProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette22DOSOldFloppyProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette23DOSOldFloppyProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette24DOSOldFloppyProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette25DOSOldFloppyProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette26DOSOldFloppyProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette27DOSOldFloppyProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette28DOSOldFloppyProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette29DOSOldFloppyProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette30DOSOldFloppyProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette31DOSOldFloppyProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette32DOSOldFloppyProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1PutDownStringDOSOldFloppyRussianProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1WaitAmuletStringDOSOldFloppyRussianProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1BlackJewelStringDOSOldFloppyRussianProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1HealingTipStringDOSOldFloppyRussianProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1PoisonGoneStringDOSOldFloppyRussianProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Healing1ShapesDOSOldFloppyProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Healing2ShapesDOSOldFloppyProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1ThePoisonStringsDOSOldFloppyRussianProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1FluteStringsDOSOldFloppyRussianProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1PoisonDeathShapesDOSOldFloppyProvider },
+ { k1FluteShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1FluteShapesDOSOldFloppyProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Winter1ShapesDOSOldFloppyProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Winter2ShapesDOSOldFloppyProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Winter3ShapesDOSOldFloppyProvider },
+ { k1DrinkShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1DrinkShapesDOSOldFloppyProvider },
+ { k1WispShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1WispShapesDOSOldFloppyProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1MagicAnimShapesDOSOldFloppyProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1BranStoneShapesDOSOldFloppyProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1WispJewelStringsDOSOldFloppyRussianProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1MagicJewelStringsDOSOldFloppyRussianProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1FlaskFullStringDOSOldFloppyRussianProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1FullFlaskStringDOSOldFloppyRussianProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1OutroReunionSeqDOSOldFloppyProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1OutroHomeStringDOSOldFloppyRussianProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1VeryCleverStringDOSOldFloppyRussianProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1GUIStringsDOSOldFloppyRussianProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1NewGameStringDOSOldFloppyRussianProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1ConfigStringsDOSOldFloppyRussianProvider },
+ { k1AudioTracks, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AudioTracksDOSOldFloppyProvider },
+ { k1AudioTracks2, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AudioTracks2DOSOldFloppyProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AudioTracksIntroDOSOldFloppyProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1KallakWritingSeqDOSCDProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1MalcolmTreeSeqDOSCDProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1WestwoodLogoSeqDOSCDProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1KyrandiaLogoSeqDOSCDProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1KallakMalcolmSeqDOSCDProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1ForestSeqDOSCDProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1IntroCPSStringsDOSCDProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1IntroCOLStringsDOSCDProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1IntroWSAStringsDOSCDProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1IntroStringsDOSCDEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1RoomListDOSCDProvider },
+ { k1RoomFilenames, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1RoomFilenamesDOSCDProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1CharacterImageFilenamesDOSCDProvider },
+ { k1DefaultShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1DefaultShapesDOSCDProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1ItemNamesDOSCDEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1TakenStringsDOSCDEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1PlacedStringsDOSCDEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1DroppedStringsDOSCDEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1NoDropStringsDOSCDEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AmuleteAnimSeqDOSCDProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette1DOSCDProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette2DOSCDProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette3DOSCDProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette4DOSCDProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette5DOSCDProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette6DOSCDProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette7DOSCDProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette8DOSCDProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette9DOSCDProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette10DOSCDProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette11DOSCDProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette12DOSCDProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette13DOSCDProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette14DOSCDProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette15DOSCDProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette16DOSCDProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette17DOSCDProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette18DOSCDProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette19DOSCDProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette20DOSCDProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette21DOSCDProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette22DOSCDProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette23DOSCDProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette24DOSCDProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette25DOSCDProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette26DOSCDProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette27DOSCDProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette28DOSCDProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette29DOSCDProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette30DOSCDProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette31DOSCDProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette32DOSCDProvider },
+ { k1SpecialPalette33, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette33DOSCDProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1PutDownStringDOSCDEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1WaitAmuletStringDOSCDEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1BlackJewelStringDOSCDEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1HealingTipStringDOSCDEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1PoisonGoneStringDOSCDEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Healing1ShapesDOSCDProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Healing2ShapesDOSCDProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1ThePoisonStringsDOSCDEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1FluteStringsDOSCDEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1PoisonDeathShapesDOSCDProvider },
+ { k1FluteShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1FluteShapesDOSCDProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Winter1ShapesDOSCDProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Winter2ShapesDOSCDProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Winter3ShapesDOSCDProvider },
+ { k1DrinkShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1DrinkShapesDOSCDProvider },
+ { k1WispShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1WispShapesDOSCDProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1MagicAnimShapesDOSCDProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1BranStoneShapesDOSCDProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1WispJewelStringsDOSCDEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1MagicJewelStringsDOSCDEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1FlaskFullStringDOSCDEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1FullFlaskStringDOSCDEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1OutroReunionSeqDOSCDProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1OutroHomeStringDOSCDEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1VeryCleverStringDOSCDEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1GUIStringsDOSCDEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1NewGameStringDOSCDEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1ConfigStringsDOSCDEnglishProvider },
+ { k1AudioTracks, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AudioTracksDOSCDProvider },
+ { k1AudioTracks2, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AudioTracks2DOSCDProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AudioTracksIntroDOSCDProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1IntroStringsDOSCDGermanProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1ItemNamesDOSCDGermanProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1TakenStringsDOSCDGermanProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1PlacedStringsDOSCDGermanProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1DroppedStringsDOSCDGermanProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1NoDropStringsDOSCDGermanProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1PutDownStringDOSCDGermanProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1WaitAmuletStringDOSCDGermanProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1BlackJewelStringDOSCDGermanProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1HealingTipStringDOSCDGermanProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1PoisonGoneStringDOSCDGermanProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1ThePoisonStringsDOSCDGermanProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1FluteStringsDOSCDGermanProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1WispJewelStringsDOSCDGermanProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1MagicJewelStringsDOSCDGermanProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1FlaskFullStringDOSCDGermanProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1FullFlaskStringDOSCDGermanProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1OutroHomeStringDOSCDGermanProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1VeryCleverStringDOSCDGermanProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1GUIStringsDOSCDGermanProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1NewGameStringDOSCDGermanProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1ConfigStringsDOSCDGermanProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1IntroStringsDOSCDFrenchProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1ItemNamesDOSCDFrenchProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1TakenStringsDOSCDFrenchProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1PlacedStringsDOSCDFrenchProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1DroppedStringsDOSCDFrenchProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1NoDropStringsDOSCDFrenchProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1PutDownStringDOSCDFrenchProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1WaitAmuletStringDOSCDFrenchProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1BlackJewelStringDOSCDFrenchProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1HealingTipStringDOSCDFrenchProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1PoisonGoneStringDOSCDFrenchProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1ThePoisonStringsDOSCDFrenchProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1FluteStringsDOSCDFrenchProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1WispJewelStringsDOSCDFrenchProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1MagicJewelStringsDOSCDFrenchProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1FlaskFullStringDOSCDFrenchProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1FullFlaskStringDOSCDFrenchProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1OutroHomeStringDOSCDFrenchProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1VeryCleverStringDOSCDFrenchProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1GUIStringsDOSCDFrenchProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1NewGameStringDOSCDFrenchProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1ConfigStringsDOSCDFrenchProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1IntroStringsDOSCDItalianProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1ItemNamesDOSCDItalianProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1TakenStringsDOSCDItalianProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1PlacedStringsDOSCDItalianProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1DroppedStringsDOSCDItalianProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1NoDropStringsDOSCDItalianProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1PutDownStringDOSCDItalianProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1WaitAmuletStringDOSCDItalianProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1BlackJewelStringDOSCDItalianProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1HealingTipStringDOSCDItalianProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1PoisonGoneStringDOSCDItalianProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1ThePoisonStringsDOSCDItalianProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1FluteStringsDOSCDItalianProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1WispJewelStringsDOSCDItalianProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1MagicJewelStringsDOSCDItalianProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1FlaskFullStringDOSCDItalianProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1FullFlaskStringDOSCDItalianProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1OutroHomeStringDOSCDItalianProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1VeryCleverStringDOSCDItalianProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1GUIStringsDOSCDItalianProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1NewGameStringDOSCDItalianProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1ConfigStringsDOSCDItalianProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KallakWritingSeqFMTownsProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqFMTownsProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqFMTownsProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqFMTownsProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqFMTownsProvider },
+ { k1ForestSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1ForestSeqFMTownsProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1IntroCPSStringsFMTownsProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1IntroCOLStringsFMTownsProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1IntroWSAStringsFMTownsProvider },
+ { k1IntroStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1IntroStringsFMTownsEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1RoomListFMTownsProvider },
+ { k1RoomFilenames, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1RoomFilenamesFMTownsProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesFMTownsProvider },
+ { k1DefaultShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1DefaultShapesFMTownsProvider },
+ { k1ItemNames, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1ItemNamesFMTownsEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1TakenStringsFMTownsEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1PlacedStringsFMTownsEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1DroppedStringsFMTownsEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1NoDropStringsFMTownsEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqFMTownsProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette1FMTownsProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette2FMTownsProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette3FMTownsProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette4FMTownsProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette5FMTownsProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette6FMTownsProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette7FMTownsProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette8FMTownsProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette9FMTownsProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette10FMTownsProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette11FMTownsProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette12FMTownsProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette13FMTownsProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette14FMTownsProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette15FMTownsProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette16FMTownsProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette17FMTownsProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette18FMTownsProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette19FMTownsProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette20FMTownsProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette21FMTownsProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette22FMTownsProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette23FMTownsProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette24FMTownsProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette25FMTownsProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette26FMTownsProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette27FMTownsProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette28FMTownsProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette29FMTownsProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette30FMTownsProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette31FMTownsProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette32FMTownsProvider },
+ { k1SpecialPalette33, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette33FMTownsProvider },
+ { k1PutDownString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1PutDownStringFMTownsEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1WaitAmuletStringFMTownsEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1BlackJewelStringFMTownsEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1HealingTipStringFMTownsEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1PoisonGoneStringFMTownsEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Healing1ShapesFMTownsProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Healing2ShapesFMTownsProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1ThePoisonStringsFMTownsEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1FluteStringsFMTownsEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesFMTownsProvider },
+ { k1FluteShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1FluteShapesFMTownsProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Winter1ShapesFMTownsProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Winter2ShapesFMTownsProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Winter3ShapesFMTownsProvider },
+ { k1DrinkShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1DrinkShapesFMTownsProvider },
+ { k1WispShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1WispShapesFMTownsProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1MagicAnimShapesFMTownsProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1BranStoneShapesFMTownsProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1WispJewelStringsFMTownsEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1MagicJewelStringsFMTownsEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1FlaskFullStringFMTownsEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1FullFlaskStringFMTownsEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1OutroReunionSeqFMTownsProvider },
+ { k1OutroHomeString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1OutroHomeStringFMTownsEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1VeryCleverStringFMTownsEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1GUIStringsFMTownsEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1NewGameStringFMTownsEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1ConfigStringsFMTownsEnglishProvider },
+ { k1TownsMusicFadeTable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsMusicFadeTableFMTownsProvider },
+ { k1TownsSFXwdTable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsSFXwdTableFMTownsProvider },
+ { k1TownsSFXbtTable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsSFXbtTableFMTownsProvider },
+ { k1TownsCDATable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsCDATableFMTownsProvider },
+ { k1AudioTracks, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1AudioTracksFMTownsProvider },
+ { k1CreditsStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1CreditsStringsFMTownsEnglishProvider },
+ { k1IntroStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1IntroStringsFMTownsJapaneseProvider },
+ { k1ItemNames, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1ItemNamesFMTownsJapaneseProvider },
+ { k1TakenStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1TakenStringsFMTownsJapaneseProvider },
+ { k1PlacedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1PlacedStringsFMTownsJapaneseProvider },
+ { k1DroppedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1DroppedStringsFMTownsJapaneseProvider },
+ { k1NoDropStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1NoDropStringsFMTownsJapaneseProvider },
+ { k1PutDownString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1PutDownStringFMTownsJapaneseProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1WaitAmuletStringFMTownsJapaneseProvider },
+ { k1BlackJewelString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1BlackJewelStringFMTownsJapaneseProvider },
+ { k1HealingTipString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1HealingTipStringFMTownsJapaneseProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1PoisonGoneStringFMTownsJapaneseProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1ThePoisonStringsFMTownsJapaneseProvider },
+ { k1FluteStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1FluteStringsFMTownsJapaneseProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1WispJewelStringsFMTownsJapaneseProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1MagicJewelStringsFMTownsJapaneseProvider },
+ { k1FlaskFullString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1FlaskFullStringFMTownsJapaneseProvider },
+ { k1FullFlaskString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1FullFlaskStringFMTownsJapaneseProvider },
+ { k1OutroHomeString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1OutroHomeStringFMTownsJapaneseProvider },
+ { k1VeryCleverString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1VeryCleverStringFMTownsJapaneseProvider },
+ { k1GUIStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1GUIStringsFMTownsJapaneseProvider },
+ { k1NewGameString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1NewGameStringFMTownsJapaneseProvider },
+ { k1ConfigStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1ConfigStringsFMTownsJapaneseProvider },
+ { k1CreditsStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1CreditsStringsFMTownsJapaneseProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1KallakWritingSeqPC98Provider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqPC98Provider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqPC98Provider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqPC98Provider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqPC98Provider },
+ { k1ForestSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1ForestSeqPC98Provider },
+ { k1IntroCPSStrings, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1IntroCPSStringsPC98Provider },
+ { k1IntroCOLStrings, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1IntroCOLStringsPC98Provider },
+ { k1IntroWSAStrings, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1IntroWSAStringsPC98Provider },
+ { k1IntroStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1IntroStringsPC98JapaneseProvider },
+ { k1RoomList, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1RoomListPC98Provider },
+ { k1RoomFilenames, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1RoomFilenamesPC98Provider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesPC98Provider },
+ { k1DefaultShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1DefaultShapesPC98Provider },
+ { k1ItemNames, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1ItemNamesPC98JapaneseProvider },
+ { k1TakenStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1TakenStringsPC98JapaneseProvider },
+ { k1PlacedStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PlacedStringsPC98JapaneseProvider },
+ { k1DroppedStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1DroppedStringsPC98JapaneseProvider },
+ { k1NoDropStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1NoDropStringsPC98JapaneseProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqPC98Provider },
+ { k1SpecialPalette1, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette1PC98Provider },
+ { k1SpecialPalette2, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette2PC98Provider },
+ { k1SpecialPalette3, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette3PC98Provider },
+ { k1SpecialPalette4, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette4PC98Provider },
+ { k1SpecialPalette5, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette5PC98Provider },
+ { k1SpecialPalette6, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette6PC98Provider },
+ { k1SpecialPalette7, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette7PC98Provider },
+ { k1SpecialPalette8, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette8PC98Provider },
+ { k1SpecialPalette9, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette9PC98Provider },
+ { k1SpecialPalette10, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette10PC98Provider },
+ { k1SpecialPalette11, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette11PC98Provider },
+ { k1SpecialPalette12, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette12PC98Provider },
+ { k1SpecialPalette13, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette13PC98Provider },
+ { k1SpecialPalette14, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette14PC98Provider },
+ { k1SpecialPalette15, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette15PC98Provider },
+ { k1SpecialPalette16, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette16PC98Provider },
+ { k1SpecialPalette17, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette17PC98Provider },
+ { k1SpecialPalette18, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette18PC98Provider },
+ { k1SpecialPalette19, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette19PC98Provider },
+ { k1SpecialPalette20, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette20PC98Provider },
+ { k1SpecialPalette21, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette21PC98Provider },
+ { k1SpecialPalette22, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette22PC98Provider },
+ { k1SpecialPalette23, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette23PC98Provider },
+ { k1SpecialPalette24, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette24PC98Provider },
+ { k1SpecialPalette25, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette25PC98Provider },
+ { k1SpecialPalette26, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette26PC98Provider },
+ { k1SpecialPalette27, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette27PC98Provider },
+ { k1SpecialPalette28, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette28PC98Provider },
+ { k1SpecialPalette29, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette29PC98Provider },
+ { k1SpecialPalette30, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette30PC98Provider },
+ { k1SpecialPalette31, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette31PC98Provider },
+ { k1SpecialPalette32, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette32PC98Provider },
+ { k1SpecialPalette33, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette33PC98Provider },
+ { k1PutDownString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PutDownStringPC98JapaneseProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1WaitAmuletStringPC98JapaneseProvider },
+ { k1BlackJewelString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1BlackJewelStringPC98JapaneseProvider },
+ { k1HealingTipString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1HealingTipStringPC98JapaneseProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PoisonGoneStringPC98JapaneseProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Healing1ShapesPC98Provider },
+ { k1Healing2Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Healing2ShapesPC98Provider },
+ { k1ThePoisonStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1ThePoisonStringsPC98JapaneseProvider },
+ { k1FluteStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1FluteStringsPC98JapaneseProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesPC98Provider },
+ { k1FluteShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1FluteShapesPC98Provider },
+ { k1Winter1Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Winter1ShapesPC98Provider },
+ { k1Winter2Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Winter2ShapesPC98Provider },
+ { k1Winter3Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Winter3ShapesPC98Provider },
+ { k1DrinkShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1DrinkShapesPC98Provider },
+ { k1WispShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1WispShapesPC98Provider },
+ { k1MagicAnimShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1MagicAnimShapesPC98Provider },
+ { k1BranStoneShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1BranStoneShapesPC98Provider },
+ { k1WispJewelStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1WispJewelStringsPC98JapaneseProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1MagicJewelStringsPC98JapaneseProvider },
+ { k1FlaskFullString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1FlaskFullStringPC98JapaneseProvider },
+ { k1FullFlaskString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1FullFlaskStringPC98JapaneseProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1OutroReunionSeqPC98Provider },
+ { k1OutroHomeString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1OutroHomeStringPC98JapaneseProvider },
+ { k1VeryCleverString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1VeryCleverStringPC98JapaneseProvider },
+ { k1GUIStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1GUIStringsPC98JapaneseProvider },
+ { k1NewGameString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1NewGameStringPC98JapaneseProvider },
+ { k1ConfigStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1ConfigStringsPC98JapaneseProvider },
+ { k1PC98StoryStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PC98StoryStringsPC98JapaneseProvider },
+ { k1PC98IntroSfx, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1PC98IntroSfxPC98Provider },
+ { k1CreditsStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1CreditsStringsPC98JapaneseProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplayPakFilesDOSDemoProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplaySeqDataDOSDemoProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplaySfxFilesDOSDemoProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplayIntroTracksDOSDemoProvider },
+ { k2SeqplayShapeAnimData, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplayShapeAnimDataDOSDemoProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayPakFilesDOSCDDemoProvider },
+ { k2SeqplayCredits, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayCreditsDOSCDDemoProvider },
+ { k2SeqplayCreditsSpecial, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayCreditsSpecialDOSCDDemoProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k2SeqplayStringsDOSCDDemoEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplaySfxFilesDOSCDDemoProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k2SeqplayTlkFilesDOSCDDemoEnglishProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplaySeqDataDOSCDDemoProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayIntroTracksDOSCDDemoProvider },
+ { k2SeqplayFinaleTracks, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayFinaleTracksDOSCDDemoProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameSfxFilesDOSCDDemoProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameSfxIndexDOSCDDemoProvider },
+ { k2IngameTracks, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameTracksDOSCDDemoProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameTalkObjIndexDOSCDDemoProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameShapeAnimDataDOSCDDemoProvider },
+ { k2IngameTlkDemoStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k2IngameTlkDemoStringsDOSCDDemoEnglishProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA, &k2SeqplayStringsDOSCDDemoFrenchProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA, &k2SeqplayTlkFilesDOSCDDemoFrenchProvider },
+ { k2IngameTlkDemoStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA, &k2IngameTlkDemoStringsDOSCDDemoFrenchProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU, &k2SeqplayStringsDOSCDDemoGermanProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU, &k2SeqplayTlkFilesDOSCDDemoGermanProvider },
+ { k2IngameTlkDemoStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU, &k2IngameTlkDemoStringsDOSCDDemoGermanProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplayPakFilesDOSProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, EN_ANY, &k2SeqplayStringsDOSEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplaySfxFilesDOSProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplayIntroTracksDOSProvider },
+ { k2SeqplayFinaleTracks, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplayFinaleTracksDOSProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplaySeqDataDOSProvider },
+ { k2IngamePakFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngamePakFilesDOSProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameSfxFilesDOSProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameSfxIndexDOSProvider },
+ { k2IngameTracks, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameTracksDOSProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameTalkObjIndexDOSProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameShapeAnimDataDOSProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, FR_FRA, &k2SeqplayStringsDOSFrenchProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, DE_DEU, &k2SeqplayStringsDOSGermanProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, IT_ITA, &k2SeqplayStringsDOSItalianProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, RU_RUS, &k2SeqplayStringsDOSRussianProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayPakFilesDOSCDProvider },
+ { k2SeqplayCredits, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayCreditsDOSCDProvider },
+ { k2SeqplayCreditsSpecial, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayCreditsSpecialDOSCDProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, EN_ANY, &k2SeqplayStringsDOSCDEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplaySfxFilesDOSCDProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, EN_ANY, &k2SeqplayTlkFilesDOSCDEnglishProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplaySeqDataDOSCDProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayIntroTracksDOSCDProvider },
+ { k2SeqplayFinaleTracks, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayFinaleTracksDOSCDProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameSfxFilesDOSCDProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameSfxIndexDOSCDProvider },
+ { k2IngameTracks, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameTracksDOSCDProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameTalkObjIndexDOSCDProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameShapeAnimDataDOSCDProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, FR_FRA, &k2SeqplayStringsDOSCDFrenchProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, FR_FRA, &k2SeqplayTlkFilesDOSCDFrenchProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, DE_DEU, &k2SeqplayStringsDOSCDGermanProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, DE_DEU, &k2SeqplayTlkFilesDOSCDGermanProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, IT_ITA, &k2SeqplayStringsDOSCDItalianProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, IT_ITA, &k2SeqplayTlkFilesDOSCDItalianProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, RU_RUS, &k2SeqplayStringsDOSCDRussianProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, RU_RUS, &k2SeqplayTlkFilesDOSCDRussianProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplayPakFilesFMTownsProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformFMTowns, kNoSpecial, EN_ANY, &k2SeqplayStringsFMTownsEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplaySfxFilesFMTownsProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplaySeqDataFMTownsProvider },
+ { k2SeqplayIntroCDA, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplayIntroCDAFMTownsProvider },
+ { k2SeqplayFinaleCDA, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplayFinaleCDAFMTownsProvider },
+ { k2IngamePakFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngamePakFilesFMTownsProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameSfxFilesFMTownsProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameSfxIndexFMTownsProvider },
+ { k2IngameCDA, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameCDAFMTownsProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameTalkObjIndexFMTownsProvider },
+ { k2IngameTimJpStrings, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameTimJpStringsFMTownsProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameShapeAnimDataFMTownsProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformFMTowns, kNoSpecial, JA_JPN, &k2SeqplayStringsFMTownsJapaneseProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2SeqplayPakFilesPC98Provider },
+ { k2SeqplayStrings, kKyra2, kPlatformPC98, kNoSpecial, EN_ANY, &k2SeqplayStringsPC98EnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2SeqplaySfxFilesPC98Provider },
+ { k2SeqplaySeqData, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2SeqplaySeqDataPC98Provider },
+ { k2IngamePakFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngamePakFilesPC98Provider },
+ { k2IngameSfxFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameSfxFilesPC98Provider },
+ { k2IngameSfxIndex, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameSfxIndexPC98Provider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameTalkObjIndexPC98Provider },
+ { k2IngameTimJpStrings, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameTimJpStringsPC98Provider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameShapeAnimDataPC98Provider },
+ { k2SeqplayStrings, kKyra2, kPlatformPC98, kNoSpecial, JA_JPN, &k2SeqplayStringsPC98JapaneseProvider },
+ { k3MainMenuStrings, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3MainMenuStringsDOSCDProvider },
+ { k3MusicFiles, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3MusicFilesDOSCDProvider },
+ { k3ScoreTable, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ScoreTableDOSCDProvider },
+ { k3SfxFiles, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3SfxFilesDOSCDProvider },
+ { k3SfxMap, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3SfxMapDOSCDProvider },
+ { k3ItemAnimData, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ItemAnimDataDOSCDProvider },
+ { k3ItemMagicTable, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ItemMagicTableDOSCDProvider },
+ { k3ItemStringMap, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ItemStringMapDOSCDProvider },
+ { kEoBBaseChargenStrings1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStrings1DOSEnglishProvider },
+ { kEoBBaseChargenStrings2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStrings2DOSEnglishProvider },
+ { kEoBBaseChargenStartLevels, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenStartLevelsDOSProvider },
+ { kEoBBaseChargenStatStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStatStringsDOSEnglishProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenRaceSexStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenClassStringsDOSEnglishProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenAlignmentStringsDOSEnglishProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenEnterGameStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassMinStats, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenClassMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMinStats, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenRaceMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMaxStats, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenRaceMaxStatsDOSProvider },
+ { kEoBBaseSaveThrowTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable1DOSProvider },
+ { kEoBBaseSaveThrowTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable2DOSProvider },
+ { kEoBBaseSaveThrowTable3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable3DOSProvider },
+ { kEoBBaseSaveThrowTable4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable4DOSProvider },
+ { kEoBBaseSaveThrwLvlIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrwLvlIndexDOSProvider },
+ { kEoBBaseSaveThrwModDiv, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrwModDivDOSProvider },
+ { kEoBBaseSaveThrwModExt, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrwModExtDOSProvider },
+ { kEoB1MainMenuStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MainMenuStringsDOSEnglishProvider },
+ { kEoB1BonusStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1BonusStringsDOSEnglishProvider },
+ { kEoB1IntroFilesOpening, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesOpeningDOSProvider },
+ { kEoB1IntroFilesTower, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesTowerDOSProvider },
+ { kEoB1IntroFilesOrb, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesOrbDOSProvider },
+ { kEoB1IntroFilesWdEntry, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesWdEntryDOSProvider },
+ { kEoB1IntroFilesKing, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesKingDOSProvider },
+ { kEoB1IntroFilesHands, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesHandsDOSProvider },
+ { kEoB1IntroFilesWdExit, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesWdExitDOSProvider },
+ { kEoB1IntroFilesTunnel, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesTunnelDOSProvider },
+ { kEoB1IntroOpeningFrmDelay, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroOpeningFrmDelayDOSProvider },
+ { kEoB1IntroWdEncodeX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdEncodeXDOSProvider },
+ { kEoB1IntroWdEncodeY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdEncodeYDOSProvider },
+ { kEoB1IntroWdEncodeWH, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdEncodeWHDOSProvider },
+ { kEoB1IntroWdDsX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdDsXDOSProvider },
+ { kEoB1IntroWdDsY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdDsYDOSProvider },
+ { kEoB1IntroTvlX1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlX1DOSProvider },
+ { kEoB1IntroTvlY1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlY1DOSProvider },
+ { kEoB1IntroTvlX2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlX2DOSProvider },
+ { kEoB1IntroTvlY2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlY2DOSProvider },
+ { kEoB1IntroTvlW, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlWDOSProvider },
+ { kEoB1IntroTvlH, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlHDOSProvider },
+ { kEoB1DoorShapeDefs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DoorShapeDefsDOSProvider },
+ { kEoB1DoorSwitchShapeDefs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DoorSwitchShapeDefsDOSProvider },
+ { kEoB1DoorSwitchCoords, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DoorSwitchCoordsDOSProvider },
+ { kEoB1MonsterProperties, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterPropertiesDOSProvider },
+ { kEoB1EnemyMageSpellList, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EnemyMageSpellListDOSProvider },
+ { kEoB1EnemyMageSfx, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EnemyMageSfxDOSProvider },
+ { kEoB1BeholderSpellList, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1BeholderSpellListDOSProvider },
+ { kEoB1BeholderSfx, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1BeholderSfxDOSProvider },
+ { kEoB1TurnUndeadString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1TurnUndeadStringDOSEnglishProvider },
+ { kEoB1CgaMappingDefault, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingDefaultDOSProvider },
+ { kEoB1CgaMappingAlt, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingAltDOSProvider },
+ { kEoB1CgaMappingInv, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingInvDOSProvider },
+ { kEoB1CgaMappingItemsL, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingItemsLDOSProvider },
+ { kEoB1CgaMappingItemsS, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingItemsSDOSProvider },
+ { kEoB1CgaMappingThrown, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingThrownDOSProvider },
+ { kEoB1CgaMappingIcons, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingIconsDOSProvider },
+ { kEoB1CgaMappingDeco, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingDecoDOSProvider },
+ { kEoB1CgaLevelMappingIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaLevelMappingIndexDOSProvider },
+ { kEoB1CgaMappingLevel0, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel0DOSProvider },
+ { kEoB1CgaMappingLevel1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel1DOSProvider },
+ { kEoB1CgaMappingLevel2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel2DOSProvider },
+ { kEoB1CgaMappingLevel3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel3DOSProvider },
+ { kEoB1CgaMappingLevel4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel4DOSProvider },
+ { kEoB1NpcShpData, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcShpDataDOSProvider },
+ { kEoB1NpcSubShpIndex1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcSubShpIndex1DOSProvider },
+ { kEoB1NpcSubShpIndex2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcSubShpIndex2DOSProvider },
+ { kEoB1NpcSubShpY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcSubShpYDOSProvider },
+ { kEoB1Npc0Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc0StringsDOSEnglishProvider },
+ { kEoB1Npc11Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc11StringsDOSEnglishProvider },
+ { kEoB1Npc12Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc12StringsDOSEnglishProvider },
+ { kEoB1Npc21Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc21StringsDOSEnglishProvider },
+ { kEoB1Npc22Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc22StringsDOSEnglishProvider },
+ { kEoB1Npc31Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc31StringsDOSEnglishProvider },
+ { kEoB1Npc32Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc32StringsDOSEnglishProvider },
+ { kEoB1Npc4Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc4StringsDOSEnglishProvider },
+ { kEoB1Npc5Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc5StringsDOSEnglishProvider },
+ { kEoB1Npc6Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc6StringsDOSEnglishProvider },
+ { kEoB1Npc7Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc7StringsDOSEnglishProvider },
+ { kEoBBasePryDoorStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PryDoorStringsDOSEnglishProvider },
+ { kEoBBaseWarningStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1WarningStringsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemSuffixStringsRingsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemSuffixStringsPotionsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemSuffixStringsWandsDOSEnglishProvider },
+ { kEoBBaseRipItemStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1RipItemStringsDOSEnglishProvider },
+ { kEoBBaseCursedString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CursedStringDOSEnglishProvider },
+ { kEoBBaseEnchantedString, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EnchantedStringDOSProvider },
+ { kEoBBaseMagicObjectStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicObjectStringsDOSEnglishProvider },
+ { kEoBBaseMagicObjectString5, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicObjectString5DOSEnglishProvider },
+ { kEoBBasePatternSuffix, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PatternSuffixDOSEnglishProvider },
+ { kEoBBasePatternGrFix1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PatternGrFix1DOSEnglishProvider },
+ { kEoBBasePatternGrFix2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PatternGrFix2DOSEnglishProvider },
+ { kEoBBaseValidateArmorString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ValidateArmorStringDOSEnglishProvider },
+ { kEoBBaseValidateNoDropString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ValidateNoDropStringDOSEnglishProvider },
+ { kEoBBasePotionStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PotionStringsDOSEnglishProvider },
+ { kEoBBaseWandStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1WandStringsDOSEnglishProvider },
+ { kEoBBaseItemMisuseStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemMisuseStringsDOSEnglishProvider },
+ { kEoBBaseTakenStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1TakenStringsDOSEnglishProvider },
+ { kEoBBasePotionEffectStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PotionEffectStringsDOSEnglishProvider },
+ { kEoBBaseYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1YesNoStringsDOSEnglishProvider },
+ { kRpgCommonMoreStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MoreStringsDOSEnglishProvider },
+ { kEoBBaseNpcMaxStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1NpcMaxStringsDOSEnglishProvider },
+ { kEoBBaseNpcJoinStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1NpcJoinStringsDOSEnglishProvider },
+ { kEoBBaseCancelStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CancelStringsDOSEnglishProvider },
+ { kEoBBaseMenuStringsMain, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsMainDOSEnglishProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsSaveLoadDOSEnglishProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsOnOffDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpells, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsSpellsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsRestDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsDropDOSEnglishProvider },
+ { kEoBBaseMenuStringsExit, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsExitDOSEnglishProvider },
+ { kEoBBaseMenuStringsStarve, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsStarveDOSEnglishProvider },
+ { kEoBBaseMenuStringsScribe, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsScribeDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsDrop2DOSEnglishProvider },
+ { kEoBBaseMenuStringsHead, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsHeadDOSEnglishProvider },
+ { kEoBBaseMenuStringsPoison, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsPoisonDOSEnglishProvider },
+ { kEoBBaseMenuStringsMgc, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsMgcDOSEnglishProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsPrefsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsRest2DOSEnglishProvider },
+ { kEoBBaseMenuStringsRest4, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsRest4DOSEnglishProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsDefeatDOSEnglishProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuYesNoStringsDOSEnglishProvider },
+ { kEoBBaseSpellLevelsMage, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SpellLevelsMageDOSProvider },
+ { kEoBBaseSpellLevelsCleric, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SpellLevelsClericDOSProvider },
+ { kEoBBaseNumSpellsCleric, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsClericDOSProvider },
+ { kEoBBaseNumSpellsWisAdj, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsWisAdjDOSProvider },
+ { kEoBBaseNumSpellsPal, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsPalDOSProvider },
+ { kEoBBaseNumSpellsMage, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsMageDOSProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsHpDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWp1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsWp1DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsWrDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsSt1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsSt1DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsInDOSEnglishProvider },
+ { kEoBBaseCharStatusStrings7, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings7DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings81, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings81DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings9, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings9DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings131, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings131DOSEnglishProvider },
+ { kEoBBaseLevelGainStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1LevelGainStringsDOSEnglishProvider },
+ { kEoBBaseExperienceTable0, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable0DOSProvider },
+ { kEoBBaseExperienceTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable1DOSProvider },
+ { kEoBBaseExperienceTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable2DOSProvider },
+ { kEoBBaseExperienceTable3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable3DOSProvider },
+ { kEoBBaseExperienceTable4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable4DOSProvider },
+ { kEoBBaseBookNumbers, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1BookNumbersDOSEnglishProvider },
+ { kEoBBaseMageSpellsList, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MageSpellsListDOSEnglishProvider },
+ { kEoBBaseClericSpellsList, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ClericSpellsListDOSEnglishProvider },
+ { kEoBBaseSpellNames, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1SpellNamesDOSEnglishProvider },
+ { kEoBBaseMagicStrings1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings1DOSEnglishProvider },
+ { kEoBBaseMagicStrings2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings2DOSEnglishProvider },
+ { kEoBBaseMagicStrings3, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings3DOSEnglishProvider },
+ { kEoBBaseMagicStrings4, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings4DOSEnglishProvider },
+ { kEoBBaseMagicStrings6, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings6DOSEnglishProvider },
+ { kEoBBaseMagicStrings7, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings7DOSEnglishProvider },
+ { kEoBBaseMagicStrings8, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings8DOSEnglishProvider },
+ { kEoBBaseExpObjectTblIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTblIndexDOSProvider },
+ { kEoBBaseExpObjectShpStart, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectShpStartDOSProvider },
+ { kEoBBaseExpObjectTbl1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTbl1DOSProvider },
+ { kEoBBaseExpObjectTbl2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTbl2DOSProvider },
+ { kEoBBaseExpObjectTbl3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTbl3DOSProvider },
+ { kEoBBaseExpObjectY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectYDOSProvider },
+ { kEoBBaseSparkDefSteps, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefStepsDOSProvider },
+ { kEoBBaseSparkDefSubSteps, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefSubStepsDOSProvider },
+ { kEoBBaseSparkDefShift, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefShiftDOSProvider },
+ { kEoBBaseSparkDefAdd, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefAddDOSProvider },
+ { kEoBBaseSparkDefX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefXDOSProvider },
+ { kEoBBaseSparkDefY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefYDOSProvider },
+ { kEoBBaseSparkOfFlags1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfFlags1DOSProvider },
+ { kEoBBaseSparkOfFlags2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfFlags2DOSProvider },
+ { kEoBBaseSparkOfShift, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfShiftDOSProvider },
+ { kEoBBaseSparkOfX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfXDOSProvider },
+ { kEoBBaseSparkOfY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfYDOSProvider },
+ { kEoBBaseSpellProperties, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SpellPropertiesDOSProvider },
+ { kEoBBaseMagicFlightProps, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MagicFlightPropsDOSProvider },
+ { kEoBBaseTurnUndeadEffect, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1TurnUndeadEffectDOSProvider },
+ { kEoBBaseBurningHandsDest, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1BurningHandsDestDOSProvider },
+ { kEoBBaseConeOfColdDest1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest1DOSProvider },
+ { kEoBBaseConeOfColdDest2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest2DOSProvider },
+ { kEoBBaseConeOfColdDest3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest3DOSProvider },
+ { kEoBBaseConeOfColdDest4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest4DOSProvider },
+ { kEoBBaseConeOfColdGfxTbl, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdGfxTblDOSProvider },
+ { kRpgCommonDscDoorShapeIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorShapeIndexDOSProvider },
+ { kEoBBaseWllFlagPreset, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1WllFlagPresetDOSProvider },
+ { kEoBBaseDscShapeCoords, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscShapeCoordsDOSProvider },
+ { kEoBBaseDscDoorScaleOffs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleOffsDOSProvider },
+ { kEoBBaseDscDoorScaleMult1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult1DOSProvider },
+ { kEoBBaseDscDoorScaleMult2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult2DOSProvider },
+ { kEoBBaseDscDoorScaleMult3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult3DOSProvider },
+ { kEoBBaseDscDoorScaleMult4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult4DOSProvider },
+ { kEoBBaseDscDoorScaleMult5, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult5DOSProvider },
+ { kEoBBaseDscDoorScaleMult6, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult6DOSProvider },
+ { kEoBBaseDscDoorXE, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorXEDOSProvider },
+ { kEoBBaseDscDoorY1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY1DOSProvider },
+ { kEoBBaseDscDoorY3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY3DOSProvider },
+ { kEoBBaseDscDoorY4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY4DOSProvider },
+ { kEoBBaseDscDoorY5, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY5DOSProvider },
+ { kEoBBaseDscDoorY6, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY6DOSProvider },
+ { kEoBBaseDscDoorY7, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY7DOSProvider },
+ { kEoBBaseDscDoorCoordsExt, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorCoordsExtDOSProvider },
+ { kRpgCommonDscDoorFrameY1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameY1DOSProvider },
+ { kRpgCommonDscDoorFrameY2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameY2DOSProvider },
+ { kRpgCommonDscDoorFrameIndex1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameIndex1DOSProvider },
+ { kRpgCommonDscDoorFrameIndex2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameIndex2DOSProvider },
+ { kEoBBaseDscItemPosIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemPosIndexDOSProvider },
+ { kEoBBaseDscItemShpX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemShpXDOSProvider },
+ { kEoBBaseDscItemScaleIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemScaleIndexDOSProvider },
+ { kEoBBaseDscItemTileIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemTileIndexDOSProvider },
+ { kEoBBaseDscItemShapeMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemShapeMapDOSProvider },
+ { kEoBBaseDscTelptrShpCoords, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscTelptrShpCoordsDOSProvider },
+ { kEoBBasePortalSeqData, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1PortalSeqDataDOSProvider },
+ { kEoBBaseManDef, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ManDefDOSEnglishProvider },
+ { kEoBBaseManWord, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ManWordDOSEnglishProvider },
+ { kEoBBaseManPrompt, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ManPromptDOSEnglishProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscMonsterFrmOffsTbl1DOSProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscMonsterFrmOffsTbl2DOSProvider },
+ { kEoBBaseInvSlotX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1InvSlotXDOSProvider },
+ { kEoBBaseInvSlotY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1InvSlotYDOSProvider },
+ { kEoBBaseSlotValidationFlags, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SlotValidationFlagsDOSProvider },
+ { kEoBBaseProjectileWeaponTypes, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ProjectileWeaponTypesDOSProvider },
+ { kEoBBaseWandTypes, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1WandTypesDOSProvider },
+ { kEoBBaseDrawObjPosIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DrawObjPosIndexDOSProvider },
+ { kEoBBaseFlightObjFlipIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FlightObjFlipIndexDOSProvider },
+ { kEoBBaseFlightObjShpMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FlightObjShpMapDOSProvider },
+ { kEoBBaseFlightObjSclIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FlightObjSclIndexDOSProvider },
+ { kRpgCommonDscShapeIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscShapeIndexDOSProvider },
+ { kRpgCommonDscX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscXDOSProvider },
+ { kRpgCommonDscTileIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscTileIndexDOSProvider },
+ { kRpgCommonDscUnk2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscUnk2DOSProvider },
+ { kRpgCommonDscDimData1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDimData1DOSProvider },
+ { kRpgCommonDscDimData2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDimData2DOSProvider },
+ { kRpgCommonDscBlockMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscBlockMapDOSProvider },
+ { kRpgCommonDscDimMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDimMapDOSProvider },
+ { kRpgCommonDscBlockIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscBlockIndexDOSProvider },
+ { kEoBBaseClassModifierFlags, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ClassModifierFlagsDOSProvider },
+ { kEoBBaseMonsterStepTable01, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterStepTable01DOSProvider },
+ { kEoBBaseMonsterStepTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterStepTable2DOSProvider },
+ { kEoBBaseMonsterStepTable3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterStepTable3DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttPosTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable21, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttPosTable21DOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttChkTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttChkTable2DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttDstTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttDstTable2DOSProvider },
+ { kEoBBaseMonsterProximityTable, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterProximityTableDOSProvider },
+ { kEoBBaseFindBlockMonstersTable, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FindBlockMonstersTableDOSProvider },
+ { kEoBBaseMonsterDirChangeTable, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterDirChangeTableDOSProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MonsterDistAttStringsDOSEnglishProvider },
+ { kEoBBaseEncodeMonsterDefs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EncodeMonsterDefsDOSProvider },
+ { kEoBBaseNpcPresets, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcPresetsDOSProvider },
+ { kEoBBaseChargenStrings1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenStrings1DOSGermanProvider },
+ { kEoBBaseChargenStrings2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenStrings2DOSGermanProvider },
+ { kEoBBaseChargenStatStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenStatStringsDOSGermanProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenRaceSexStringsDOSGermanProvider },
+ { kEoBBaseChargenClassStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenClassStringsDOSGermanProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenAlignmentStringsDOSGermanProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenEnterGameStringsDOSGermanProvider },
+ { kEoB1MainMenuStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MainMenuStringsDOSGermanProvider },
+ { kEoB1BonusStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1BonusStringsDOSGermanProvider },
+ { kEoB1TurnUndeadString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1TurnUndeadStringDOSGermanProvider },
+ { kEoB1Npc0Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc0StringsDOSGermanProvider },
+ { kEoB1Npc11Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc11StringsDOSGermanProvider },
+ { kEoB1Npc12Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc12StringsDOSGermanProvider },
+ { kEoB1Npc21Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc21StringsDOSGermanProvider },
+ { kEoB1Npc22Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc22StringsDOSGermanProvider },
+ { kEoB1Npc31Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc31StringsDOSGermanProvider },
+ { kEoB1Npc32Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc32StringsDOSGermanProvider },
+ { kEoB1Npc4Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc4StringsDOSGermanProvider },
+ { kEoB1Npc5Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc5StringsDOSGermanProvider },
+ { kEoB1Npc6Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc6StringsDOSGermanProvider },
+ { kEoB1Npc7Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc7StringsDOSGermanProvider },
+ { kEoBBasePryDoorStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PryDoorStringsDOSGermanProvider },
+ { kEoBBaseWarningStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1WarningStringsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemSuffixStringsRingsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemSuffixStringsPotionsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemSuffixStringsWandsDOSGermanProvider },
+ { kEoBBaseRipItemStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1RipItemStringsDOSGermanProvider },
+ { kEoBBaseCursedString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CursedStringDOSGermanProvider },
+ { kEoBBaseMagicObjectStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicObjectStringsDOSGermanProvider },
+ { kEoBBaseMagicObjectString5, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicObjectString5DOSGermanProvider },
+ { kEoBBasePatternSuffix, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PatternSuffixDOSGermanProvider },
+ { kEoBBasePatternGrFix1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PatternGrFix1DOSGermanProvider },
+ { kEoBBasePatternGrFix2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PatternGrFix2DOSGermanProvider },
+ { kEoBBaseValidateArmorString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ValidateArmorStringDOSGermanProvider },
+ { kEoBBaseValidateNoDropString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ValidateNoDropStringDOSGermanProvider },
+ { kEoBBasePotionStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PotionStringsDOSGermanProvider },
+ { kEoBBaseWandStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1WandStringsDOSGermanProvider },
+ { kEoBBaseItemMisuseStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemMisuseStringsDOSGermanProvider },
+ { kEoBBaseTakenStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1TakenStringsDOSGermanProvider },
+ { kEoBBasePotionEffectStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PotionEffectStringsDOSGermanProvider },
+ { kEoBBaseYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1YesNoStringsDOSGermanProvider },
+ { kRpgCommonMoreStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MoreStringsDOSGermanProvider },
+ { kEoBBaseNpcMaxStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1NpcMaxStringsDOSGermanProvider },
+ { kEoBBaseNpcJoinStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1NpcJoinStringsDOSGermanProvider },
+ { kEoBBaseCancelStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CancelStringsDOSGermanProvider },
+ { kEoBBaseMenuStringsMain, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsMainDOSGermanProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsSaveLoadDOSGermanProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsOnOffDOSGermanProvider },
+ { kEoBBaseMenuStringsSpells, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsSpellsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsRestDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsDropDOSGermanProvider },
+ { kEoBBaseMenuStringsExit, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsExitDOSGermanProvider },
+ { kEoBBaseMenuStringsStarve, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsStarveDOSGermanProvider },
+ { kEoBBaseMenuStringsScribe, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsScribeDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsDrop2DOSGermanProvider },
+ { kEoBBaseMenuStringsHead, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsHeadDOSGermanProvider },
+ { kEoBBaseMenuStringsPoison, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsPoisonDOSGermanProvider },
+ { kEoBBaseMenuStringsMgc, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsMgcDOSGermanProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsPrefsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsRest2DOSGermanProvider },
+ { kEoBBaseMenuStringsRest4, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsRest4DOSGermanProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsDefeatDOSGermanProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuYesNoStringsDOSGermanProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsHpDOSGermanProvider },
+ { kEoBBaseCharGuiStringsWp1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsWp1DOSGermanProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsWrDOSGermanProvider },
+ { kEoBBaseCharGuiStringsSt1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsSt1DOSGermanProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsInDOSGermanProvider },
+ { kEoBBaseCharStatusStrings7, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings7DOSGermanProvider },
+ { kEoBBaseCharStatusStrings81, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings81DOSGermanProvider },
+ { kEoBBaseCharStatusStrings9, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings9DOSGermanProvider },
+ { kEoBBaseCharStatusStrings131, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings131DOSGermanProvider },
+ { kEoBBaseLevelGainStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1LevelGainStringsDOSGermanProvider },
+ { kEoBBaseBookNumbers, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1BookNumbersDOSGermanProvider },
+ { kEoBBaseMageSpellsList, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MageSpellsListDOSGermanProvider },
+ { kEoBBaseClericSpellsList, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ClericSpellsListDOSGermanProvider },
+ { kEoBBaseSpellNames, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1SpellNamesDOSGermanProvider },
+ { kEoBBaseMagicStrings1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings1DOSGermanProvider },
+ { kEoBBaseMagicStrings2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings2DOSGermanProvider },
+ { kEoBBaseMagicStrings3, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings3DOSGermanProvider },
+ { kEoBBaseMagicStrings4, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings4DOSGermanProvider },
+ { kEoBBaseMagicStrings6, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings6DOSGermanProvider },
+ { kEoBBaseMagicStrings7, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings7DOSGermanProvider },
+ { kEoBBaseMagicStrings8, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings8DOSGermanProvider },
+ { kEoBBaseManDef, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ManDefDOSGermanProvider },
+ { kEoBBaseManWord, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ManWordDOSGermanProvider },
+ { kEoBBaseManPrompt, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ManPromptDOSGermanProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MonsterDistAttStringsDOSGermanProvider },
+ { kEoBBaseChargenStrings1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenStrings1DOSEnglishProvider },
+ { kEoBBaseChargenStrings2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenStrings2DOSEnglishProvider },
+ { kEoBBaseChargenStartLevels, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenStartLevelsDOSProvider },
+ { kEoBBaseChargenStatStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenStatStringsDOSEnglishProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenRaceSexStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenClassStringsDOSEnglishProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenAlignmentStringsDOSEnglishProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenEnterGameStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassMinStats, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenClassMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMinStats, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenRaceMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMaxStats, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenRaceMaxStatsDOSProvider },
+ { kEoBBaseSaveThrowTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable1DOSProvider },
+ { kEoBBaseSaveThrowTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable2DOSProvider },
+ { kEoBBaseSaveThrowTable3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable3DOSProvider },
+ { kEoBBaseSaveThrowTable4, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable4DOSProvider },
+ { kEoBBaseSaveThrwLvlIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrwLvlIndexDOSProvider },
+ { kEoBBaseSaveThrwModDiv, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrwModDivDOSProvider },
+ { kEoBBaseSaveThrwModExt, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrwModExtDOSProvider },
+ { kEoBBasePryDoorStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PryDoorStringsDOSEnglishProvider },
+ { kEoBBaseWarningStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2WarningStringsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemSuffixStringsRingsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemSuffixStringsPotionsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemSuffixStringsWandsDOSEnglishProvider },
+ { kEoBBaseRipItemStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2RipItemStringsDOSEnglishProvider },
+ { kEoBBaseCursedString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CursedStringDOSEnglishProvider },
+ { kEoBBaseEnchantedString, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2EnchantedStringDOSProvider },
+ { kEoBBaseMagicObjectStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicObjectStringsDOSEnglishProvider },
+ { kEoBBaseMagicObjectString5, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicObjectString5DOSEnglishProvider },
+ { kEoBBasePatternSuffix, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PatternSuffixDOSEnglishProvider },
+ { kEoBBasePatternGrFix1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PatternGrFix1DOSEnglishProvider },
+ { kEoBBasePatternGrFix2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PatternGrFix2DOSEnglishProvider },
+ { kEoBBaseValidateArmorString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ValidateArmorStringDOSEnglishProvider },
+ { kEoBBaseValidateCursedString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ValidateCursedStringDOSEnglishProvider },
+ { kEoBBaseValidateNoDropString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ValidateNoDropStringDOSEnglishProvider },
+ { kEoBBasePotionStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PotionStringsDOSEnglishProvider },
+ { kEoBBaseWandStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2WandStringsDOSEnglishProvider },
+ { kEoBBaseItemMisuseStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemMisuseStringsDOSEnglishProvider },
+ { kEoBBaseTakenStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TakenStringsDOSEnglishProvider },
+ { kEoBBasePotionEffectStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PotionEffectStringsDOSEnglishProvider },
+ { kEoBBaseYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2YesNoStringsDOSEnglishProvider },
+ { kRpgCommonMoreStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MoreStringsDOSEnglishProvider },
+ { kEoBBaseNpcMaxStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2NpcMaxStringsDOSEnglishProvider },
+ { kEoBBaseOkStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2OkStringsDOSEnglishProvider },
+ { kEoBBaseNpcJoinStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2NpcJoinStringsDOSEnglishProvider },
+ { kEoBBaseCancelStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CancelStringsDOSEnglishProvider },
+ { kEoBBaseAbortStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2AbortStringsDOSEnglishProvider },
+ { kEoBBaseMenuStringsMain, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsMainDOSEnglishProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsSaveLoadDOSEnglishProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsOnOffDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpells, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsSpellsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRestDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsDropDOSEnglishProvider },
+ { kEoBBaseMenuStringsExit, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsExitDOSEnglishProvider },
+ { kEoBBaseMenuStringsStarve, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsStarveDOSEnglishProvider },
+ { kEoBBaseMenuStringsScribe, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsScribeDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsDrop2DOSEnglishProvider },
+ { kEoBBaseMenuStringsHead, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsHeadDOSEnglishProvider },
+ { kEoBBaseMenuStringsPoison, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsPoisonDOSEnglishProvider },
+ { kEoBBaseMenuStringsMgc, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsMgcDOSEnglishProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsPrefsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRest2DOSEnglishProvider },
+ { kEoBBaseMenuStringsRest3, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRest3DOSEnglishProvider },
+ { kEoBBaseMenuStringsRest4, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRest4DOSEnglishProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsDefeatDOSEnglishProvider },
+ { kEoBBaseMenuStringsTransfer, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsTransferDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpec, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsSpecDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpellNo, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MenuStringsSpellNoDOSProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuYesNoStringsDOSEnglishProvider },
+ { kEoBBaseSpellLevelsMage, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SpellLevelsMageDOSProvider },
+ { kEoBBaseSpellLevelsCleric, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SpellLevelsClericDOSProvider },
+ { kEoBBaseNumSpellsCleric, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsClericDOSProvider },
+ { kEoBBaseNumSpellsWisAdj, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsWisAdjDOSProvider },
+ { kEoBBaseNumSpellsPal, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsPalDOSProvider },
+ { kEoBBaseNumSpellsMage, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsMageDOSProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsHpDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWp2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsWp2DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsWrDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsSt2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsSt2DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsInDOSEnglishProvider },
+ { kEoBBaseCharStatusStrings7, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings7DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings82, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings82DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings9, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings9DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings12, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings12DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings132, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings132DOSEnglishProvider },
+ { kEoBBaseLevelGainStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2LevelGainStringsDOSEnglishProvider },
+ { kEoBBaseExperienceTable0, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable0DOSProvider },
+ { kEoBBaseExperienceTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable1DOSProvider },
+ { kEoBBaseExperienceTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable2DOSProvider },
+ { kEoBBaseExperienceTable3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable3DOSProvider },
+ { kEoBBaseExperienceTable4, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable4DOSProvider },
+ { kEoBBaseBookNumbers, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2BookNumbersDOSEnglishProvider },
+ { kEoBBaseMageSpellsList, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MageSpellsListDOSEnglishProvider },
+ { kEoBBaseClericSpellsList, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ClericSpellsListDOSEnglishProvider },
+ { kEoBBaseSpellNames, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2SpellNamesDOSEnglishProvider },
+ { kEoBBaseMagicStrings1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings1DOSEnglishProvider },
+ { kEoBBaseMagicStrings2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings2DOSEnglishProvider },
+ { kEoBBaseMagicStrings3, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings3DOSEnglishProvider },
+ { kEoBBaseMagicStrings4, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings4DOSEnglishProvider },
+ { kEoBBaseMagicStrings6, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings6DOSEnglishProvider },
+ { kEoBBaseMagicStrings7, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings7DOSEnglishProvider },
+ { kEoBBaseMagicStrings8, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings8DOSEnglishProvider },
+ { kEoBBaseExpObjectTlMode, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTlModeDOSProvider },
+ { kEoBBaseExpObjectTblIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTblIndexDOSProvider },
+ { kEoBBaseExpObjectShpStart, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectShpStartDOSProvider },
+ { kEoBBaseExpObjectTbl1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl1DOSProvider },
+ { kEoBBaseExpObjectTbl2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl2DOSProvider },
+ { kEoBBaseExpObjectTbl3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl3DOSProvider },
+ { kEoBBaseExpObjectY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectYDOSProvider },
+ { kEoBBaseSparkDefSteps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefStepsDOSProvider },
+ { kEoBBaseSparkDefSubSteps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefSubStepsDOSProvider },
+ { kEoBBaseSparkDefShift, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefShiftDOSProvider },
+ { kEoBBaseSparkDefAdd, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefAddDOSProvider },
+ { kEoBBaseSparkDefX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefXDOSProvider },
+ { kEoBBaseSparkDefY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefYDOSProvider },
+ { kEoBBaseSparkOfFlags1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfFlags1DOSProvider },
+ { kEoBBaseSparkOfFlags2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfFlags2DOSProvider },
+ { kEoBBaseSparkOfShift, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfShiftDOSProvider },
+ { kEoBBaseSparkOfX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfXDOSProvider },
+ { kEoBBaseSparkOfY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfYDOSProvider },
+ { kEoBBaseSpellProperties, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SpellPropertiesDOSProvider },
+ { kEoBBaseMagicFlightProps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MagicFlightPropsDOSProvider },
+ { kEoBBaseTurnUndeadEffect, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TurnUndeadEffectDOSProvider },
+ { kEoBBaseBurningHandsDest, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2BurningHandsDestDOSProvider },
+ { kEoBBaseConeOfColdDest1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest1DOSProvider },
+ { kEoBBaseConeOfColdDest2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest2DOSProvider },
+ { kEoBBaseConeOfColdDest3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest3DOSProvider },
+ { kEoBBaseConeOfColdDest4, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest4DOSProvider },
+ { kEoBBaseConeOfColdGfxTbl, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdGfxTblDOSProvider },
+ { kRpgCommonDscDoorShapeIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorShapeIndexDOSProvider },
+ { kEoBBaseWllFlagPreset, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WllFlagPresetDOSProvider },
+ { kEoBBaseDscShapeCoords, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscShapeCoordsDOSProvider },
+ { kEoBBaseDscDoorScaleOffs, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleOffsDOSProvider },
+ { kEoBBaseDscDoorScaleMult1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult1DOSProvider },
+ { kEoBBaseDscDoorScaleMult2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult2DOSProvider },
+ { kEoBBaseDscDoorScaleMult3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult3DOSProvider },
+ { kEoBBaseDscDoorType5Offs, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorType5OffsDOSProvider },
+ { kEoBBaseDscDoorY1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorY1DOSProvider },
+ { kRpgCommonDscDoorY2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorY2DOSProvider },
+ { kRpgCommonDscDoorFrameY1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorFrameY1DOSProvider },
+ { kRpgCommonDscDoorFrameY2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorFrameY2DOSProvider },
+ { kEoBBaseDscItemPosIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemPosIndexDOSProvider },
+ { kEoBBaseDscItemShpX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemShpXDOSProvider },
+ { kEoBBaseDscItemScaleIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemScaleIndexDOSProvider },
+ { kEoBBaseDscItemTileIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemTileIndexDOSProvider },
+ { kEoBBaseDscItemShapeMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemShapeMapDOSProvider },
+ { kEoBBaseDscTelptrShpCoords, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscTelptrShpCoordsDOSProvider },
+ { kEoBBasePortalSeqData, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2PortalSeqDataDOSProvider },
+ { kEoBBaseManDef, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ManDefDOSEnglishProvider },
+ { kEoBBaseManWord, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ManWordDOSEnglishProvider },
+ { kEoBBaseManPrompt, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ManPromptDOSEnglishProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscMonsterFrmOffsTbl1DOSProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscMonsterFrmOffsTbl2DOSProvider },
+ { kEoBBaseInvSlotX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2InvSlotXDOSProvider },
+ { kEoBBaseInvSlotY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2InvSlotYDOSProvider },
+ { kEoBBaseSlotValidationFlags, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SlotValidationFlagsDOSProvider },
+ { kEoBBaseProjectileWeaponTypes, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ProjectileWeaponTypesDOSProvider },
+ { kEoBBaseWandTypes, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WandTypesDOSProvider },
+ { kEoBBaseDrawObjPosIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DrawObjPosIndexDOSProvider },
+ { kEoBBaseFlightObjFlipIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FlightObjFlipIndexDOSProvider },
+ { kEoBBaseFlightObjShpMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FlightObjShpMapDOSProvider },
+ { kEoBBaseFlightObjSclIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FlightObjSclIndexDOSProvider },
+ { kEoB2MainMenuStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MainMenuStringsDOSEnglishProvider },
+ { kEoB2TransferPortraitFrames, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferPortraitFramesDOSProvider },
+ { kEoB2TransferConvertTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferConvertTableDOSProvider },
+ { kEoB2TransferItemTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferItemTableDOSProvider },
+ { kEoB2TransferExpTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferExpTableDOSProvider },
+ { kEoB2TransferStrings1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TransferStrings1DOSEnglishProvider },
+ { kEoB2TransferStrings2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TransferStrings2DOSEnglishProvider },
+ { kEoB2TransferLabels, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TransferLabelsDOSEnglishProvider },
+ { kEoB2IntroStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2IntroStringsDOSEnglishProvider },
+ { kEoB2IntroCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2IntroCPSFilesDOSEnglishProvider },
+ { kEoB2IntroAnimData00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData00DOSProvider },
+ { kEoB2IntroAnimData01, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData01DOSProvider },
+ { kEoB2IntroAnimData02, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData02DOSProvider },
+ { kEoB2IntroAnimData03, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData03DOSProvider },
+ { kEoB2IntroAnimData04, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData04DOSProvider },
+ { kEoB2IntroAnimData05, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData05DOSProvider },
+ { kEoB2IntroAnimData06, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData06DOSProvider },
+ { kEoB2IntroAnimData07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData07DOSProvider },
+ { kEoB2IntroAnimData08, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData08DOSProvider },
+ { kEoB2IntroAnimData09, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData09DOSProvider },
+ { kEoB2IntroAnimData10, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData10DOSProvider },
+ { kEoB2IntroAnimData11, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData11DOSProvider },
+ { kEoB2IntroAnimData12, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData12DOSProvider },
+ { kEoB2IntroAnimData13, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData13DOSProvider },
+ { kEoB2IntroAnimData14, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData14DOSProvider },
+ { kEoB2IntroAnimData15, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData15DOSProvider },
+ { kEoB2IntroAnimData16, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData16DOSProvider },
+ { kEoB2IntroAnimData17, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData17DOSProvider },
+ { kEoB2IntroAnimData18, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData18DOSProvider },
+ { kEoB2IntroAnimData19, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData19DOSProvider },
+ { kEoB2IntroAnimData20, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData20DOSProvider },
+ { kEoB2IntroAnimData21, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData21DOSProvider },
+ { kEoB2IntroAnimData22, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData22DOSProvider },
+ { kEoB2IntroAnimData23, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData23DOSProvider },
+ { kEoB2IntroAnimData24, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData24DOSProvider },
+ { kEoB2IntroAnimData25, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData25DOSProvider },
+ { kEoB2IntroAnimData26, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData26DOSProvider },
+ { kEoB2IntroAnimData27, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData27DOSProvider },
+ { kEoB2IntroAnimData28, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData28DOSProvider },
+ { kEoB2IntroAnimData29, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData29DOSProvider },
+ { kEoB2IntroAnimData30, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData30DOSProvider },
+ { kEoB2IntroAnimData31, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData31DOSProvider },
+ { kEoB2IntroAnimData32, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData32DOSProvider },
+ { kEoB2IntroAnimData33, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData33DOSProvider },
+ { kEoB2IntroAnimData34, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData34DOSProvider },
+ { kEoB2IntroAnimData35, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData35DOSProvider },
+ { kEoB2IntroAnimData36, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData36DOSProvider },
+ { kEoB2IntroAnimData37, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData37DOSProvider },
+ { kEoB2IntroAnimData38, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData38DOSProvider },
+ { kEoB2IntroAnimData39, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData39DOSProvider },
+ { kEoB2IntroAnimData40, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData40DOSProvider },
+ { kEoB2IntroAnimData41, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData41DOSProvider },
+ { kEoB2IntroAnimData42, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData42DOSProvider },
+ { kEoB2IntroAnimData43, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData43DOSProvider },
+ { kEoB2IntroShapes00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes00DOSProvider },
+ { kEoB2IntroShapes01, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes01DOSProvider },
+ { kEoB2IntroShapes04, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes04DOSProvider },
+ { kEoB2IntroShapes07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes07DOSProvider },
+ { kEoB2FinaleStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2FinaleStringsDOSEnglishProvider },
+ { kEoB2CreditsData, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CreditsDataDOSEnglishProvider },
+ { kEoB2FinaleCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2FinaleCPSFilesDOSEnglishProvider },
+ { kEoB2FinaleAnimData00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData00DOSProvider },
+ { kEoB2FinaleAnimData01, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData01DOSProvider },
+ { kEoB2FinaleAnimData02, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData02DOSProvider },
+ { kEoB2FinaleAnimData03, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData03DOSProvider },
+ { kEoB2FinaleAnimData04, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData04DOSProvider },
+ { kEoB2FinaleAnimData05, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData05DOSProvider },
+ { kEoB2FinaleAnimData06, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData06DOSProvider },
+ { kEoB2FinaleAnimData07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData07DOSProvider },
+ { kEoB2FinaleAnimData08, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData08DOSProvider },
+ { kEoB2FinaleAnimData09, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData09DOSProvider },
+ { kEoB2FinaleAnimData10, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData10DOSProvider },
+ { kEoB2FinaleAnimData11, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData11DOSProvider },
+ { kEoB2FinaleAnimData12, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData12DOSProvider },
+ { kEoB2FinaleAnimData13, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData13DOSProvider },
+ { kEoB2FinaleAnimData14, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData14DOSProvider },
+ { kEoB2FinaleAnimData15, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData15DOSProvider },
+ { kEoB2FinaleAnimData16, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData16DOSProvider },
+ { kEoB2FinaleAnimData17, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData17DOSProvider },
+ { kEoB2FinaleAnimData18, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData18DOSProvider },
+ { kEoB2FinaleAnimData19, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData19DOSProvider },
+ { kEoB2FinaleAnimData20, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData20DOSProvider },
+ { kEoB2FinaleShapes00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes00DOSProvider },
+ { kEoB2FinaleShapes03, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes03DOSProvider },
+ { kEoB2FinaleShapes07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes07DOSProvider },
+ { kEoB2FinaleShapes09, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes09DOSProvider },
+ { kEoB2FinaleShapes10, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes10DOSProvider },
+ { kEoB2NpcShapeData, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NpcShapeDataDOSProvider },
+ { kEoBBaseClassModifierFlags, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ClassModifierFlagsDOSProvider },
+ { kEoBBaseMonsterStepTable02, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable02DOSProvider },
+ { kEoBBaseMonsterStepTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable1DOSProvider },
+ { kEoBBaseMonsterStepTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable2DOSProvider },
+ { kEoBBaseMonsterStepTable3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable3DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttPosTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable22, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttPosTable22DOSProvider },
+ { kEoBBaseMonsterCloseAttUnkTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttUnkTableDOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttChkTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttChkTable2DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttDstTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttDstTable2DOSProvider },
+ { kEoBBaseMonsterProximityTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterProximityTableDOSProvider },
+ { kEoBBaseFindBlockMonstersTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FindBlockMonstersTableDOSProvider },
+ { kEoBBaseMonsterDirChangeTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterDirChangeTableDOSProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MonsterDistAttStringsDOSEnglishProvider },
+ { kEoBBaseEncodeMonsterDefs, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2EncodeMonsterDefsDOSProvider },
+ { kEoBBaseNpcPresets, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NpcPresetsDOSProvider },
+ { kEoB2Npc1Strings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2Npc1StringsDOSEnglishProvider },
+ { kEoB2Npc2Strings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2Npc2StringsDOSEnglishProvider },
+ { kEoB2MonsterDustStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MonsterDustStringsDOSEnglishProvider },
+ { kEoB2DreamSteps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DreamStepsDOSProvider },
+ { kEoB2KheldranStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2KheldranStringsDOSEnglishProvider },
+ { kEoB2HornStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2HornStringsDOSEnglishProvider },
+ { kEoB2HornSounds, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2HornSoundsDOSProvider },
+ { kEoB2WallOfForceDsX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceDsXDOSProvider },
+ { kEoB2WallOfForceDsY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceDsYDOSProvider },
+ { kEoB2WallOfForceNumW, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceNumWDOSProvider },
+ { kEoB2WallOfForceNumH, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceNumHDOSProvider },
+ { kEoB2WallOfForceShpId, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShpIdDOSProvider },
+ { kRpgCommonDscShapeIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscShapeIndexDOSProvider },
+ { kRpgCommonDscX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscXDOSProvider },
+ { kRpgCommonDscTileIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscTileIndexDOSProvider },
+ { kRpgCommonDscUnk2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscUnk2DOSProvider },
+ { kRpgCommonDscDimData1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDimData1DOSProvider },
+ { kRpgCommonDscDimData2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDimData2DOSProvider },
+ { kRpgCommonDscBlockMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscBlockMapDOSProvider },
+ { kRpgCommonDscDimMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDimMapDOSProvider },
+ { kRpgCommonDscBlockIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscBlockIndexDOSProvider },
+ { kEoBBaseChargenStrings1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenStrings1DOSGermanProvider },
+ { kEoBBaseChargenStrings2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenStrings2DOSGermanProvider },
+ { kEoBBaseChargenStatStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenStatStringsDOSGermanProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenRaceSexStringsDOSGermanProvider },
+ { kEoBBaseChargenClassStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenClassStringsDOSGermanProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenAlignmentStringsDOSGermanProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenEnterGameStringsDOSGermanProvider },
+ { kEoBBasePryDoorStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PryDoorStringsDOSGermanProvider },
+ { kEoBBaseWarningStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2WarningStringsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemSuffixStringsRingsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemSuffixStringsPotionsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemSuffixStringsWandsDOSGermanProvider },
+ { kEoBBaseRipItemStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2RipItemStringsDOSGermanProvider },
+ { kEoBBaseCursedString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CursedStringDOSGermanProvider },
+ { kEoBBaseMagicObjectStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicObjectStringsDOSGermanProvider },
+ { kEoBBaseMagicObjectString5, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicObjectString5DOSGermanProvider },
+ { kEoBBasePatternSuffix, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PatternSuffixDOSGermanProvider },
+ { kEoBBasePatternGrFix1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PatternGrFix1DOSGermanProvider },
+ { kEoBBasePatternGrFix2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PatternGrFix2DOSGermanProvider },
+ { kEoBBaseValidateArmorString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ValidateArmorStringDOSGermanProvider },
+ { kEoBBaseValidateCursedString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ValidateCursedStringDOSGermanProvider },
+ { kEoBBaseValidateNoDropString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ValidateNoDropStringDOSGermanProvider },
+ { kEoBBasePotionStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PotionStringsDOSGermanProvider },
+ { kEoBBaseWandStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2WandStringsDOSGermanProvider },
+ { kEoBBaseItemMisuseStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemMisuseStringsDOSGermanProvider },
+ { kEoBBaseTakenStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TakenStringsDOSGermanProvider },
+ { kEoBBasePotionEffectStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PotionEffectStringsDOSGermanProvider },
+ { kEoBBaseYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2YesNoStringsDOSGermanProvider },
+ { kRpgCommonMoreStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MoreStringsDOSGermanProvider },
+ { kEoBBaseNpcMaxStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2NpcMaxStringsDOSGermanProvider },
+ { kEoBBaseOkStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2OkStringsDOSGermanProvider },
+ { kEoBBaseNpcJoinStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2NpcJoinStringsDOSGermanProvider },
+ { kEoBBaseCancelStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CancelStringsDOSGermanProvider },
+ { kEoBBaseAbortStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2AbortStringsDOSGermanProvider },
+ { kEoBBaseMenuStringsMain, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsMainDOSGermanProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsSaveLoadDOSGermanProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsOnOffDOSGermanProvider },
+ { kEoBBaseMenuStringsSpells, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsSpellsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRestDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsDropDOSGermanProvider },
+ { kEoBBaseMenuStringsExit, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsExitDOSGermanProvider },
+ { kEoBBaseMenuStringsStarve, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsStarveDOSGermanProvider },
+ { kEoBBaseMenuStringsScribe, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsScribeDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsDrop2DOSGermanProvider },
+ { kEoBBaseMenuStringsHead, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsHeadDOSGermanProvider },
+ { kEoBBaseMenuStringsPoison, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsPoisonDOSGermanProvider },
+ { kEoBBaseMenuStringsMgc, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsMgcDOSGermanProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsPrefsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRest2DOSGermanProvider },
+ { kEoBBaseMenuStringsRest3, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRest3DOSGermanProvider },
+ { kEoBBaseMenuStringsRest4, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRest4DOSGermanProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsDefeatDOSGermanProvider },
+ { kEoBBaseMenuStringsTransfer, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsTransferDOSGermanProvider },
+ { kEoBBaseMenuStringsSpec, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsSpecDOSGermanProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuYesNoStringsDOSGermanProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsHpDOSGermanProvider },
+ { kEoBBaseCharGuiStringsWp2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsWp2DOSGermanProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsWrDOSGermanProvider },
+ { kEoBBaseCharGuiStringsSt2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsSt2DOSGermanProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsInDOSGermanProvider },
+ { kEoBBaseCharStatusStrings7, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings7DOSGermanProvider },
+ { kEoBBaseCharStatusStrings82, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings82DOSGermanProvider },
+ { kEoBBaseCharStatusStrings9, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings9DOSGermanProvider },
+ { kEoBBaseCharStatusStrings12, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings12DOSGermanProvider },
+ { kEoBBaseCharStatusStrings132, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings132DOSGermanProvider },
+ { kEoBBaseLevelGainStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2LevelGainStringsDOSGermanProvider },
+ { kEoBBaseBookNumbers, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2BookNumbersDOSGermanProvider },
+ { kEoBBaseMageSpellsList, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MageSpellsListDOSGermanProvider },
+ { kEoBBaseClericSpellsList, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ClericSpellsListDOSGermanProvider },
+ { kEoBBaseSpellNames, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2SpellNamesDOSGermanProvider },
+ { kEoBBaseMagicStrings1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings1DOSGermanProvider },
+ { kEoBBaseMagicStrings2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings2DOSGermanProvider },
+ { kEoBBaseMagicStrings3, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings3DOSGermanProvider },
+ { kEoBBaseMagicStrings4, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings4DOSGermanProvider },
+ { kEoBBaseMagicStrings6, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings6DOSGermanProvider },
+ { kEoBBaseMagicStrings7, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings7DOSGermanProvider },
+ { kEoBBaseMagicStrings8, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings8DOSGermanProvider },
+ { kEoBBaseManDef, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ManDefDOSGermanProvider },
+ { kEoBBaseManWord, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ManWordDOSGermanProvider },
+ { kEoBBaseManPrompt, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ManPromptDOSGermanProvider },
+ { kEoB2MainMenuStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MainMenuStringsDOSGermanProvider },
+ { kEoB2TransferStrings1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TransferStrings1DOSGermanProvider },
+ { kEoB2TransferStrings2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TransferStrings2DOSGermanProvider },
+ { kEoB2TransferLabels, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TransferLabelsDOSGermanProvider },
+ { kEoB2IntroStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2IntroStringsDOSGermanProvider },
+ { kEoB2IntroCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2IntroCPSFilesDOSGermanProvider },
+ { kEoB2FinaleStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2FinaleStringsDOSGermanProvider },
+ { kEoB2CreditsData, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CreditsDataDOSGermanProvider },
+ { kEoB2FinaleCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2FinaleCPSFilesDOSGermanProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MonsterDistAttStringsDOSGermanProvider },
+ { kEoB2Npc1Strings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2Npc1StringsDOSGermanProvider },
+ { kEoB2Npc2Strings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2Npc2StringsDOSGermanProvider },
+ { kEoB2MonsterDustStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MonsterDustStringsDOSGermanProvider },
+ { kEoB2KheldranStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2KheldranStringsDOSGermanProvider },
+ { kEoB2HornStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2HornStringsDOSGermanProvider },
+ { k2SeqplayPakFiles, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplayPakFilesDOSDemoProvider },
+ { k2SeqplayStrings, kLoL, kPlatformDOS, kDemoVersion, EN_ANY, &kLoLSeqplayStringsDOSDemoEnglishProvider },
+ { k2SeqplaySeqData, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplaySeqDataDOSDemoProvider },
+ { k2SeqplaySfxFiles, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplaySfxFilesDOSDemoProvider },
+ { k2SeqplayIntroTracks, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplayIntroTracksDOSDemoProvider },
+ { kLoLIngamePakFiles, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngamePakFilesDOSProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, EN_ANY, &kLoLCharacterDefsDOSEnglishProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameSfxFilesDOSProvider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameSfxIndexDOSProvider },
+ { kLoLMusicTrackMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMusicTrackMapDOSProvider },
+ { kLoLIngameGMSfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameGMSfxIndexDOSProvider },
+ { kLoLIngameMT32SfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameMT32SfxIndexDOSProvider },
+ { kLoLIngamePcSpkSfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngamePcSpkSfxIndexDOSProvider },
+ { kLoLSpellProperties, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSpellPropertiesDOSProvider },
+ { kLoLGameShapeMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLGameShapeMapDOSProvider },
+ { kLoLSceneItemOffs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSceneItemOffsDOSProvider },
+ { kLoLCharInvIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharInvIndexDOSProvider },
+ { kLoLCharInvDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharInvDefsDOSProvider },
+ { kLoLCharDefsMan, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsManDOSProvider },
+ { kLoLCharDefsWoman, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsWomanDOSProvider },
+ { kLoLCharDefsKieran, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsKieranDOSProvider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsAkshelDOSProvider },
+ { kLoLExpRequirements, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLExpRequirementsDOSProvider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers1DOSProvider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers2DOSProvider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers3DOSProvider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterShiftOffsetsDOSProvider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterDirFlagsDOSProvider },
+ { kLoLMonsterScaleY, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterScaleYDOSProvider },
+ { kLoLMonsterScaleX, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterScaleXDOSProvider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterScaleWHDOSProvider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLFlyingObjectShpDOSProvider },
+ { kLoLInventoryDesc, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLInventoryDescDOSProvider },
+ { kLoLLevelShpList, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLevelShpListDOSProvider },
+ { kLoLLevelDatList, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLevelDatListDOSProvider },
+ { kLoLCompassDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCompassDefsDOSProvider },
+ { kLoLStashSetup, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLStashSetupDOSProvider },
+ { kLoLDscWalls, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscWallsDOSProvider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscShapeIndexDOSProvider },
+ { kLoLDscOvlMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscOvlMapDOSProvider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscScaleWidthDataDOSProvider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscScaleHeightDataDOSProvider },
+ { kRpgCommonDscX, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscXDOSProvider },
+ { kLoLBaseDscY, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLBaseDscYDOSProvider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscTileIndexDOSProvider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscUnk2DOSProvider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorShapeIndexDOSProvider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDimData1DOSProvider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDimData2DOSProvider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscBlockMapDOSProvider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDimMapDOSProvider },
+ { kLoLDscOvlIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscOvlIndexDOSProvider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscBlockIndexDOSProvider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorY2DOSProvider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1DOSProvider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2DOSProvider },
+ { kLoLDscDoorScale, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleDOSProvider },
+ { kLoLDscDoor4, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoor4DOSProvider },
+ { kLoLDscDoorX, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorXDOSProvider },
+ { kLoLDscDoorY, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorYDOSProvider },
+ { kLoLScrollXTop, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollXTopDOSProvider },
+ { kLoLScrollYTop, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollYTopDOSProvider },
+ { kLoLScrollXBottom, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollXBottomDOSProvider },
+ { kLoLScrollYBottom, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollYBottomDOSProvider },
+ { kLoLButtonDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonDefsDOSProvider },
+ { kLoLButtonList1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList1DOSProvider },
+ { kLoLButtonList2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList2DOSProvider },
+ { kLoLButtonList3, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList3DOSProvider },
+ { kLoLButtonList4, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList4DOSProvider },
+ { kLoLButtonList5, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList5DOSProvider },
+ { kLoLButtonList6, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList6DOSProvider },
+ { kLoLButtonList7, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList7DOSProvider },
+ { kLoLButtonList8, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList8DOSProvider },
+ { kLoLLegendData, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLegendDataDOSProvider },
+ { kLoLMapCursorOvl, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMapCursorOvlDOSProvider },
+ { kLoLMapStringId, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMapStringIdDOSProvider },
+ { kLoLSpellbookAnim, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSpellbookAnimDOSProvider },
+ { kLoLSpellbookCoords, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSpellbookCoordsDOSProvider },
+ { kLoLHealShapeFrames, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLHealShapeFramesDOSProvider },
+ { kLoLLightningDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLightningDefsDOSProvider },
+ { kLoLFireballCoords, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLFireballCoordsDOSProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, RU_RUS, &kLoLCharacterDefsDOSRussianProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, DE_DEU, &kLoLCharacterDefsDOSGermanProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, FR_FRA, &kLoLCharacterDefsDOSFrenchProvider },
+ { kLoLIngamePakFiles, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLIngamePakFilesPC98Provider },
+ { kLoLCharacterDefs, kLoL, kPlatformPC98, kNoSpecial, JA_JPN, &kLoLCharacterDefsPC98JapaneseProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLIngameSfxFilesPC98Provider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLIngameSfxIndexPC98Provider },
+ { kLoLSpellProperties, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSpellPropertiesPC98Provider },
+ { kLoLGameShapeMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLGameShapeMapPC98Provider },
+ { kLoLSceneItemOffs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSceneItemOffsPC98Provider },
+ { kLoLCharInvIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharInvIndexPC98Provider },
+ { kLoLCharInvDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharInvDefsPC98Provider },
+ { kLoLCharDefsMan, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsManPC98Provider },
+ { kLoLCharDefsWoman, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsWomanPC98Provider },
+ { kLoLCharDefsKieran, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsKieranPC98Provider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsAkshelPC98Provider },
+ { kLoLExpRequirements, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLExpRequirementsPC98Provider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers1PC98Provider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers2PC98Provider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers3PC98Provider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterShiftOffsetsPC98Provider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterDirFlagsPC98Provider },
+ { kLoLMonsterScaleY, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterScaleYPC98Provider },
+ { kLoLMonsterScaleX, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterScaleXPC98Provider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterScaleWHPC98Provider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLFlyingObjectShpPC98Provider },
+ { kLoLInventoryDesc, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLInventoryDescPC98Provider },
+ { kLoLLevelShpList, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLevelShpListPC98Provider },
+ { kLoLLevelDatList, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLevelDatListPC98Provider },
+ { kLoLCompassDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCompassDefsPC98Provider },
+ { kLoLStashSetup, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLStashSetupPC98Provider },
+ { kLoLDscWalls, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscWallsPC98Provider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscShapeIndexPC98Provider },
+ { kLoLDscOvlMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscOvlMapPC98Provider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscScaleWidthDataPC98Provider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscScaleHeightDataPC98Provider },
+ { kRpgCommonDscX, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscXPC98Provider },
+ { kLoLBaseDscY, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLBaseDscYPC98Provider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscTileIndexPC98Provider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscUnk2PC98Provider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorShapeIndexPC98Provider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDimData1PC98Provider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDimData2PC98Provider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscBlockMapPC98Provider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDimMapPC98Provider },
+ { kLoLDscOvlIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscOvlIndexPC98Provider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscBlockIndexPC98Provider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorY2PC98Provider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1PC98Provider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2PC98Provider },
+ { kLoLDscDoorScale, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorScalePC98Provider },
+ { kLoLDscDoor4, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoor4PC98Provider },
+ { kLoLDscDoorX, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorXPC98Provider },
+ { kLoLDscDoorY, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorYPC98Provider },
+ { kLoLScrollXTop, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollXTopPC98Provider },
+ { kLoLScrollYTop, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollYTopPC98Provider },
+ { kLoLScrollXBottom, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollXBottomPC98Provider },
+ { kLoLScrollYBottom, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollYBottomPC98Provider },
+ { kLoLButtonDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonDefsPC98Provider },
+ { kLoLButtonList1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList1PC98Provider },
+ { kLoLButtonList2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList2PC98Provider },
+ { kLoLButtonList3, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList3PC98Provider },
+ { kLoLButtonList4, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList4PC98Provider },
+ { kLoLButtonList5, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList5PC98Provider },
+ { kLoLButtonList6, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList6PC98Provider },
+ { kLoLButtonList7, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList7PC98Provider },
+ { kLoLButtonList8, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList8PC98Provider },
+ { kLoLLegendData, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLegendDataPC98Provider },
+ { kLoLMapStringId, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMapStringIdPC98Provider },
+ { kLoLSpellbookAnim, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSpellbookAnimPC98Provider },
+ { kLoLSpellbookCoords, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSpellbookCoordsPC98Provider },
+ { kLoLHealShapeFrames, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLHealShapeFramesPC98Provider },
+ { kLoLLightningDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLightningDefsPC98Provider },
+ { kLoLFireballCoords, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLFireballCoordsPC98Provider },
+ { kLoLCredits, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCreditsPC98Provider },
+ { kLoLIngamePakFiles, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLIngamePakFilesFMTownsProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformFMTowns, kNoSpecial, JA_JPN, &kLoLCharacterDefsFMTownsJapaneseProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLIngameSfxFilesFMTownsProvider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLIngameSfxIndexFMTownsProvider },
+ { kLoLSpellProperties, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSpellPropertiesFMTownsProvider },
+ { kLoLGameShapeMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLGameShapeMapFMTownsProvider },
+ { kLoLSceneItemOffs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSceneItemOffsFMTownsProvider },
+ { kLoLCharInvIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharInvIndexFMTownsProvider },
+ { kLoLCharInvDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharInvDefsFMTownsProvider },
+ { kLoLCharDefsMan, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsManFMTownsProvider },
+ { kLoLCharDefsWoman, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsWomanFMTownsProvider },
+ { kLoLCharDefsKieran, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsKieranFMTownsProvider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsAkshelFMTownsProvider },
+ { kLoLExpRequirements, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLExpRequirementsFMTownsProvider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers1FMTownsProvider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers2FMTownsProvider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers3FMTownsProvider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterShiftOffsetsFMTownsProvider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterDirFlagsFMTownsProvider },
+ { kLoLMonsterScaleY, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterScaleYFMTownsProvider },
+ { kLoLMonsterScaleX, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterScaleXFMTownsProvider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterScaleWHFMTownsProvider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLFlyingObjectShpFMTownsProvider },
+ { kLoLInventoryDesc, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLInventoryDescFMTownsProvider },
+ { kLoLLevelShpList, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLevelShpListFMTownsProvider },
+ { kLoLLevelDatList, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLevelDatListFMTownsProvider },
+ { kLoLCompassDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCompassDefsFMTownsProvider },
+ { kLoLStashSetup, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLStashSetupFMTownsProvider },
+ { kLoLDscWalls, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscWallsFMTownsProvider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscShapeIndexFMTownsProvider },
+ { kLoLDscOvlMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscOvlMapFMTownsProvider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscScaleWidthDataFMTownsProvider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscScaleHeightDataFMTownsProvider },
+ { kRpgCommonDscX, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscXFMTownsProvider },
+ { kLoLBaseDscY, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLBaseDscYFMTownsProvider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscTileIndexFMTownsProvider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscUnk2FMTownsProvider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorShapeIndexFMTownsProvider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDimData1FMTownsProvider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDimData2FMTownsProvider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscBlockMapFMTownsProvider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDimMapFMTownsProvider },
+ { kLoLDscOvlIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscOvlIndexFMTownsProvider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscBlockIndexFMTownsProvider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorY2FMTownsProvider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1FMTownsProvider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2FMTownsProvider },
+ { kLoLDscDoorScale, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleFMTownsProvider },
+ { kLoLDscDoor4, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoor4FMTownsProvider },
+ { kLoLDscDoorX, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorXFMTownsProvider },
+ { kLoLDscDoorY, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorYFMTownsProvider },
+ { kLoLScrollXTop, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollXTopFMTownsProvider },
+ { kLoLScrollYTop, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollYTopFMTownsProvider },
+ { kLoLScrollXBottom, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollXBottomFMTownsProvider },
+ { kLoLScrollYBottom, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollYBottomFMTownsProvider },
+ { kLoLButtonDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonDefsFMTownsProvider },
+ { kLoLButtonList1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList1FMTownsProvider },
+ { kLoLButtonList2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList2FMTownsProvider },
+ { kLoLButtonList3, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList3FMTownsProvider },
+ { kLoLButtonList4, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList4FMTownsProvider },
+ { kLoLButtonList5, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList5FMTownsProvider },
+ { kLoLButtonList6, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList6FMTownsProvider },
+ { kLoLButtonList7, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList7FMTownsProvider },
+ { kLoLButtonList8, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList8FMTownsProvider },
+ { kLoLLegendData, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLegendDataFMTownsProvider },
+ { kLoLMapStringId, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMapStringIdFMTownsProvider },
+ { kLoLSpellbookAnim, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSpellbookAnimFMTownsProvider },
+ { kLoLSpellbookCoords, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSpellbookCoordsFMTownsProvider },
+ { kLoLHealShapeFrames, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLHealShapeFramesFMTownsProvider },
+ { kLoLLightningDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLightningDefsFMTownsProvider },
+ { kLoLFireballCoords, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLFireballCoordsFMTownsProvider },
+ { kLoLCredits, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCreditsFMTownsProvider },
+ { kLoLHistory, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLHistoryDOSCDProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, EN_ANY, &kLoLCharacterDefsDOSCDEnglishProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameSfxFilesDOSCDProvider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameSfxIndexDOSCDProvider },
+ { kLoLMusicTrackMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMusicTrackMapDOSCDProvider },
+ { kLoLIngameGMSfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameGMSfxIndexDOSCDProvider },
+ { kLoLIngameMT32SfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameMT32SfxIndexDOSCDProvider },
+ { kLoLIngamePcSpkSfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngamePcSpkSfxIndexDOSCDProvider },
+ { kLoLSpellProperties, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSpellPropertiesDOSCDProvider },
+ { kLoLGameShapeMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLGameShapeMapDOSCDProvider },
+ { kLoLSceneItemOffs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSceneItemOffsDOSCDProvider },
+ { kLoLCharInvIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharInvIndexDOSCDProvider },
+ { kLoLCharInvDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharInvDefsDOSCDProvider },
+ { kLoLCharDefsMan, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsManDOSCDProvider },
+ { kLoLCharDefsWoman, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsWomanDOSCDProvider },
+ { kLoLCharDefsKieran, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsKieranDOSCDProvider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsAkshelDOSCDProvider },
+ { kLoLExpRequirements, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLExpRequirementsDOSCDProvider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers1DOSCDProvider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers2DOSCDProvider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers3DOSCDProvider },
+ { kLoLMonsterModifiers4, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers4DOSCDProvider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterShiftOffsetsDOSCDProvider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterDirFlagsDOSCDProvider },
+ { kLoLMonsterScaleY, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterScaleYDOSCDProvider },
+ { kLoLMonsterScaleX, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterScaleXDOSCDProvider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterScaleWHDOSCDProvider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLFlyingObjectShpDOSCDProvider },
+ { kLoLInventoryDesc, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLInventoryDescDOSCDProvider },
+ { kLoLLevelShpList, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLevelShpListDOSCDProvider },
+ { kLoLLevelDatList, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLevelDatListDOSCDProvider },
+ { kLoLCompassDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCompassDefsDOSCDProvider },
+ { kLoLItemPrices, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLItemPricesDOSCDProvider },
+ { kLoLStashSetup, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLStashSetupDOSCDProvider },
+ { kLoLDscWalls, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscWallsDOSCDProvider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscShapeIndexDOSCDProvider },
+ { kLoLDscOvlMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscOvlMapDOSCDProvider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscScaleWidthDataDOSCDProvider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscScaleHeightDataDOSCDProvider },
+ { kRpgCommonDscX, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscXDOSCDProvider },
+ { kLoLBaseDscY, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLBaseDscYDOSCDProvider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscTileIndexDOSCDProvider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscUnk2DOSCDProvider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorShapeIndexDOSCDProvider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDimData1DOSCDProvider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDimData2DOSCDProvider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscBlockMapDOSCDProvider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDimMapDOSCDProvider },
+ { kLoLDscOvlIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscOvlIndexDOSCDProvider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscBlockIndexDOSCDProvider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorY2DOSCDProvider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorFrameY1DOSCDProvider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorFrameY2DOSCDProvider },
+ { kLoLDscDoorScale, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorScaleDOSCDProvider },
+ { kLoLDscDoor4, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoor4DOSCDProvider },
+ { kLoLDscDoorX, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorXDOSCDProvider },
+ { kLoLDscDoorY, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorYDOSCDProvider },
+ { kLoLScrollXTop, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollXTopDOSCDProvider },
+ { kLoLScrollYTop, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollYTopDOSCDProvider },
+ { kLoLScrollXBottom, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollXBottomDOSCDProvider },
+ { kLoLScrollYBottom, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollYBottomDOSCDProvider },
+ { kLoLButtonDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonDefsDOSCDProvider },
+ { kLoLButtonList1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList1DOSCDProvider },
+ { kLoLButtonList2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList2DOSCDProvider },
+ { kLoLButtonList3, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList3DOSCDProvider },
+ { kLoLButtonList4, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList4DOSCDProvider },
+ { kLoLButtonList5, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList5DOSCDProvider },
+ { kLoLButtonList6, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList6DOSCDProvider },
+ { kLoLButtonList7, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList7DOSCDProvider },
+ { kLoLButtonList8, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList8DOSCDProvider },
+ { kLoLLegendData, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLegendDataDOSCDProvider },
+ { kLoLMapCursorOvl, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMapCursorOvlDOSCDProvider },
+ { kLoLMapStringId, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMapStringIdDOSCDProvider },
+ { kLoLSpellbookAnim, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSpellbookAnimDOSCDProvider },
+ { kLoLSpellbookCoords, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSpellbookCoordsDOSCDProvider },
+ { kLoLHealShapeFrames, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLHealShapeFramesDOSCDProvider },
+ { kLoLLightningDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLightningDefsDOSCDProvider },
+ { kLoLFireballCoords, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLFireballCoordsDOSCDProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, FR_FRA, &kLoLCharacterDefsDOSCDFrenchProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, DE_DEU, &kLoLCharacterDefsDOSCDGermanProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, IT_ITA, &kLoLCharacterDefsDOSCDItalianProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, RU_RUS, &kLoLCharacterDefsDOSCDRussianProvider },
+ { kMaxResIDs, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, NULL }
+};
+
+const ResourceProvider *obtainResourceProviders() {
+ return resourceProviders;
+}
diff --git a/devtools/create_kyradat/resources.h b/devtools/create_kyradat/resources.h
new file mode 100644
index 0000000..c9ab232
--- /dev/null
+++ b/devtools/create_kyradat/resources.h
@@ -0,0 +1,45 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CREATE_KYRADAT_RESOURCES_H
+#define CREATE_KYRADAT_RESOURCES_H
+
+#include "create_kyradat.h"
+
+#include "common/util.h"
+#include "common/language.h"
+#include "common/platform.h"
+
+using namespace Common;
+
+struct ResourceProvider {
+ kExtractID id;
+ kGame game;
+ Platform platform;
+ kSpecial special;
+ Language language;
+ const void *provider;
+};
+
+const ResourceProvider *obtainResourceProviders();
+
+#endif
diff --git a/devtools/create_kyradat/resources/eob1_dos.h b/devtools/create_kyradat/resources/eob1_dos.h
new file mode 100644
index 0000000..b2aa884
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob1_dos.h
@@ -0,0 +1,1765 @@
+static const byte kEoB1ChargenStartLevelsDOS[60] = {
+ 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x01,
+ 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x01,
+ 0x03, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x01,
+ 0x02, 0x02, 0x00, 0x02, 0x02, 0x03, 0x00, 0x02,
+ 0x02, 0x02, 0x00, 0x02, 0x01, 0x01, 0x02, 0x03,
+ 0x03, 0x02, 0x00, 0x02, 0x02, 0x03, 0x00, 0x02,
+ 0x01, 0x02, 0x01, 0x03, 0x02, 0x02, 0x00, 0x02,
+ 0x02, 0x02, 0x00, 0x02
+};
+
+static const ByteProvider kEoB1ChargenStartLevelsDOSProvider = { ARRAYSIZE(kEoB1ChargenStartLevelsDOS), kEoB1ChargenStartLevelsDOS };
+
+static const byte kEoB1ChargenClassMinStatsDOS[90] = {
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00,
+ 0x0E, 0x0D, 0x0E, 0x00, 0x0C, 0x00, 0x0D, 0x00,
+ 0x09, 0x11, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00,
+ 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00,
+ 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09,
+ 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09,
+ 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00,
+ 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00,
+ 0x0E, 0x0D, 0x0E, 0x00, 0x00, 0x09, 0x09, 0x00,
+ 0x00, 0x00
+};
+
+static const ByteProvider kEoB1ChargenClassMinStatsDOSProvider = { ARRAYSIZE(kEoB1ChargenClassMinStatsDOS), kEoB1ChargenClassMinStatsDOS };
+
+static const byte kEoB1ChargenRaceMinStatsDOS[36] = {
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x08,
+ 0x03, 0x07, 0x06, 0x08, 0x03, 0x04, 0x03, 0x06,
+ 0x06, 0x03, 0x08, 0x03, 0x03, 0x03, 0x0C, 0x02,
+ 0x06, 0x07, 0x02, 0x03, 0x08, 0x03, 0x07, 0x06,
+ 0x03, 0x08, 0x0A, 0x06
+};
+
+static const ByteProvider kEoB1ChargenRaceMinStatsDOSProvider = { ARRAYSIZE(kEoB1ChargenRaceMinStatsDOS), kEoB1ChargenRaceMinStatsDOS };
+
+static const uint16 kEoB1ChargenRaceMaxStatsDOS[36] = {
+ 0x6412, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x6412, 0x0012,
+ 0x0012, 0x0013, 0x0011, 0x0012, 0x6412, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x6412, 0x0012, 0x0012, 0x0011, 0x0013, 0x0010,
+ 0x6412, 0x0013, 0x0011, 0x0012, 0x0012, 0x0012, 0x0011, 0x0012,
+ 0x0011, 0x0013, 0x0012, 0x0012
+};
+
+static const Uint16Provider kEoB1ChargenRaceMaxStatsDOSProvider = { ARRAYSIZE(kEoB1ChargenRaceMaxStatsDOS), kEoB1ChargenRaceMaxStatsDOS };
+
+static const byte kEoB1SaveThrowTable1DOS[50] = {
+ 0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x07, 0x05,
+ 0x04, 0x03, 0x12, 0x10, 0x0F, 0x0D, 0x0C, 0x0A,
+ 0x09, 0x07, 0x06, 0x05, 0x11, 0x0F, 0x0E, 0x0C,
+ 0x0B, 0x09, 0x08, 0x06, 0x05, 0x04, 0x14, 0x11,
+ 0x10, 0x0D, 0x0C, 0x09, 0x08, 0x05, 0x04, 0x04,
+ 0x13, 0x11, 0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08,
+ 0x07, 0x06
+};
+
+static const ByteProvider kEoB1SaveThrowTable1DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable1DOS), kEoB1SaveThrowTable1DOS };
+
+static const byte kEoB1SaveThrowTable2DOS[25] = {
+ 0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x0B, 0x09, 0x07,
+ 0x05, 0x03, 0x0D, 0x0B, 0x09, 0x07, 0x05, 0x0F,
+ 0x0D, 0x0B, 0x09, 0x07, 0x0C, 0x0A, 0x08, 0x06,
+ 0x04
+};
+
+static const ByteProvider kEoB1SaveThrowTable2DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable2DOS), kEoB1SaveThrowTable2DOS };
+
+static const byte kEoB1SaveThrowTable3DOS[35] = {
+ 0x0A, 0x09, 0x07, 0x06, 0x05, 0x04, 0x02, 0x0E,
+ 0x0D, 0x0B, 0x0A, 0x09, 0x08, 0x06, 0x0D, 0x0C,
+ 0x0A, 0x09, 0x08, 0x07, 0x05, 0x10, 0x0F, 0x0D,
+ 0x0C, 0x0B, 0x0A, 0x08, 0x0F, 0x0E, 0x0C, 0x0B,
+ 0x0A, 0x09, 0x07
+};
+
+static const ByteProvider kEoB1SaveThrowTable3DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable3DOS), kEoB1SaveThrowTable3DOS };
+
+static const byte kEoB1SaveThrowTable4DOS[30] = {
+ 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x0E, 0x0C,
+ 0x0A, 0x08, 0x06, 0x07, 0x0C, 0x0B, 0x0A, 0x09,
+ 0x08, 0x04, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B,
+ 0x0F, 0x0D, 0x0B, 0x09, 0x07, 0x05
+};
+
+static const ByteProvider kEoB1SaveThrowTable4DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable4DOS), kEoB1SaveThrowTable4DOS };
+
+static const byte kEoB1SaveThrwLvlIndexDOS[6] = {
+ 0x11, 0x15, 0x13, 0x15, 0x11, 0x11
+};
+
+static const ByteProvider kEoB1SaveThrwLvlIndexDOSProvider = { ARRAYSIZE(kEoB1SaveThrwLvlIndexDOS), kEoB1SaveThrwLvlIndexDOS };
+
+static const byte kEoB1SaveThrwModDivDOS[6] = {
+ 0x02, 0x05, 0x03, 0x04, 0x02, 0x02
+};
+
+static const ByteProvider kEoB1SaveThrwModDivDOSProvider = { ARRAYSIZE(kEoB1SaveThrwModDivDOS), kEoB1SaveThrwModDivDOS };
+
+static const byte kEoB1SaveThrwModExtDOS[6] = {
+ 0x0A, 0x05, 0x07, 0x06, 0x0A, 0x0A
+};
+
+static const ByteProvider kEoB1SaveThrwModExtDOSProvider = { ARRAYSIZE(kEoB1SaveThrwModExtDOS), kEoB1SaveThrwModExtDOS };
+
+static const char *const kEoB1IntroFilesOpeningDOS[6] = {
+ "AND.CMP",
+ "SSI.CMP",
+ "PRESENT.CMP",
+ "DAND.CMP",
+ "WESTWOOD.CMP",
+ "WESTWOOD.COL"
+};
+
+static const StringListProvider kEoB1IntroFilesOpeningDOSProvider = { ARRAYSIZE(kEoB1IntroFilesOpeningDOS), kEoB1IntroFilesOpeningDOS };
+
+static const char *const kEoB1IntroFilesTowerDOS[2] = {
+ "TOWRMAGE.COL",
+ "TOWRMAGE.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesTowerDOSProvider = { ARRAYSIZE(kEoB1IntroFilesTowerDOS), kEoB1IntroFilesTowerDOS };
+
+static const char *const kEoB1IntroFilesOrbDOS[2] = {
+ "ORB.CMP",
+ "TOWRMAGE.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesOrbDOSProvider = { ARRAYSIZE(kEoB1IntroFilesOrbDOS), kEoB1IntroFilesOrbDOS };
+
+static const char *const kEoB1IntroFilesWdEntryDOS[4] = {
+ "WTRDP2.COL",
+ "WTRDP1.CMP",
+ "WTRDP2.CMP",
+ "WTRDP3.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesWdEntryDOSProvider = { ARRAYSIZE(kEoB1IntroFilesWdEntryDOS), kEoB1IntroFilesWdEntryDOS };
+
+static const char *const kEoB1IntroFilesKingDOS[2] = {
+ "KING.CMP",
+ "ADVENTUR.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesKingDOSProvider = { ARRAYSIZE(kEoB1IntroFilesKingDOS), kEoB1IntroFilesKingDOS };
+
+static const char *const kEoB1IntroFilesHandsDOS[1] = {
+ "HANDS.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesHandsDOSProvider = { ARRAYSIZE(kEoB1IntroFilesHandsDOS), kEoB1IntroFilesHandsDOS };
+
+static const char *const kEoB1IntroFilesWdExitDOS[5] = {
+ "WTRDP3.CMP",
+ "ORB.COL",
+ "ORB.CMP",
+ "TUNNEL.CMP",
+ "ZOOMTUNL.COL"
+};
+
+static const StringListProvider kEoB1IntroFilesWdExitDOSProvider = { ARRAYSIZE(kEoB1IntroFilesWdExitDOS), kEoB1IntroFilesWdExitDOS };
+
+static const char *const kEoB1IntroFilesTunnelDOS[2] = {
+ "AVALANCH.CMP",
+ "ZOOMTUNL.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesTunnelDOSProvider = { ARRAYSIZE(kEoB1IntroFilesTunnelDOS), kEoB1IntroFilesTunnelDOS };
+
+static const byte kEoB1IntroOpeningFrmDelayDOS[5] = {
+ 0x8C, 0x32, 0x64, 0x32, 0x8C
+};
+
+static const ByteProvider kEoB1IntroOpeningFrmDelayDOSProvider = { ARRAYSIZE(kEoB1IntroOpeningFrmDelayDOS), kEoB1IntroOpeningFrmDelayDOS };
+
+static const byte kEoB1IntroWdEncodeXDOS[31] = {
+ 0x00, 0x18, 0x02, 0x04, 0x1A, 0x05, 0x10, 0x06,
+ 0x10, 0x07, 0x11, 0x04, 0x13, 0x05, 0x06, 0x13,
+ 0x09, 0x14, 0x0B, 0x0D, 0x16, 0x0D, 0x16, 0x0E,
+ 0x1A, 0x0E, 0x17, 0x0F, 0x1B, 0x0F, 0x17
+};
+
+static const ByteProvider kEoB1IntroWdEncodeXDOSProvider = { ARRAYSIZE(kEoB1IntroWdEncodeXDOS), kEoB1IntroWdEncodeXDOS };
+
+static const byte kEoB1IntroWdEncodeYDOS[31] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01
+};
+
+static const ByteProvider kEoB1IntroWdEncodeYDOSProvider = { ARRAYSIZE(kEoB1IntroWdEncodeYDOS), kEoB1IntroWdEncodeYDOS };
+
+static const byte kEoB1IntroWdEncodeWHDOS[31] = {
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+static const ByteProvider kEoB1IntroWdEncodeWHDOSProvider = { ARRAYSIZE(kEoB1IntroWdEncodeWHDOS), kEoB1IntroWdEncodeWHDOS };
+
+static const uint16 kEoB1IntroWdDsXDOS[31] = {
+ 0x0120, 0x0120, 0x0120, 0x0130, 0x0130, 0x00B2, 0x00B2, 0x00BC,
+ 0x00BC, 0x00AE, 0x00AE, 0x0125, 0x0125, 0x0125, 0x0101, 0x0101,
+ 0x00E9, 0x00E9, 0x00E9, 0x00AB, 0x00AB, 0x00CC, 0x00CC, 0x00F0,
+ 0x00F0, 0x010C, 0x010C, 0x00E0, 0x00E0, 0x00BA, 0x00BA
+};
+
+static const Uint16Provider kEoB1IntroWdDsXDOSProvider = { ARRAYSIZE(kEoB1IntroWdDsXDOS), kEoB1IntroWdDsXDOS };
+
+static const byte kEoB1IntroWdDsYDOS[31] = {
+ 0x28, 0x28, 0x28, 0x38, 0x38, 0x26, 0x26, 0x1D,
+ 0x1D, 0x34, 0x34, 0x50, 0x50, 0x50, 0x50, 0x50,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x2A, 0x2A, 0x66,
+ 0x66, 0x67, 0x67, 0x1C, 0x1C, 0x44, 0x44
+};
+
+static const ByteProvider kEoB1IntroWdDsYDOSProvider = { ARRAYSIZE(kEoB1IntroWdDsYDOS), kEoB1IntroWdDsYDOS };
+
+static const byte kEoB1IntroTvlX1DOS[6] = {
+ 0x00, 0x08, 0x10, 0x00, 0x0F, 0x00
+};
+
+static const ByteProvider kEoB1IntroTvlX1DOSProvider = { ARRAYSIZE(kEoB1IntroTvlX1DOS), kEoB1IntroTvlX1DOS };
+
+static const byte kEoB1IntroTvlY1DOS[6] = {
+ 0x00, 0x00, 0x00, 0x30, 0x36, 0x86
+};
+
+static const ByteProvider kEoB1IntroTvlY1DOSProvider = { ARRAYSIZE(kEoB1IntroTvlY1DOS), kEoB1IntroTvlY1DOS };
+
+static const byte kEoB1IntroTvlX2DOS[6] = {
+ 0x10, 0x10, 0x0F, 0x0C, 0x0B, 0x0B
+};
+
+static const ByteProvider kEoB1IntroTvlX2DOSProvider = { ARRAYSIZE(kEoB1IntroTvlX2DOS), kEoB1IntroTvlX2DOS };
+
+static const byte kEoB1IntroTvlY2DOS[6] = {
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x61
+};
+
+static const ByteProvider kEoB1IntroTvlY2DOSProvider = { ARRAYSIZE(kEoB1IntroTvlY2DOS), kEoB1IntroTvlY2DOS };
+
+static const byte kEoB1IntroTvlWDOS[6] = {
+ 0x08, 0x08, 0x0B, 0x0F, 0x12, 0x12
+};
+
+static const ByteProvider kEoB1IntroTvlWDOSProvider = { ARRAYSIZE(kEoB1IntroTvlWDOS), kEoB1IntroTvlWDOS };
+
+static const byte kEoB1IntroTvlHDOS[6] = {
+ 0x1A, 0x30, 0x36, 0x45, 0x50, 0x28
+};
+
+static const ByteProvider kEoB1IntroTvlHDOSProvider = { ARRAYSIZE(kEoB1IntroTvlHDOS), kEoB1IntroTvlHDOS };
+
+static const byte kEoB1DoorShapeDefsDOS[96] = {
+ 0x00, 0x00, 0x0A, 0x48, 0x11, 0x98, 0x07, 0x2F,
+ 0x19, 0x48, 0x04, 0x1D, 0x0A, 0x00, 0x0A, 0x48,
+ 0x1D, 0x48, 0x07, 0x2F, 0x19, 0x68, 0x04, 0x1D,
+ 0x14, 0x00, 0x06, 0x48, 0x24, 0x48, 0x04, 0x2F,
+ 0x1E, 0x78, 0x03, 0x1D, 0x1A, 0x00, 0x0C, 0x48,
+ 0x00, 0x90, 0x07, 0x29, 0x21, 0x78, 0x04, 0x1B,
+ 0x00, 0xBC, 0x0A, 0x0C, 0x0A, 0xBC, 0x06, 0x08,
+ 0x0A, 0xC4, 0x04, 0x02, 0x07, 0x4A, 0x09, 0x37,
+ 0x00, 0x4A, 0x07, 0x25, 0x07, 0xA0, 0x05, 0x17,
+ 0x07, 0x82, 0x09, 0x1C, 0x00, 0x70, 0x07, 0x13,
+ 0x0C, 0xA0, 0x05, 0x0B, 0x10, 0x48, 0x09, 0x4B,
+ 0x18, 0x98, 0x07, 0x2E, 0x1F, 0x98, 0x04, 0x1D
+};
+
+static const ByteProvider kEoB1DoorShapeDefsDOSProvider = { ARRAYSIZE(kEoB1DoorShapeDefsDOS), kEoB1DoorShapeDefsDOS };
+
+static const byte kEoB1DoorSwitchShapeDefsDOS[96] = {
+ 0x25, 0x78, 0x01, 0x07, 0x25, 0x88, 0x01, 0x03,
+ 0x25, 0x90, 0x01, 0x01, 0x25, 0x78, 0x01, 0x07,
+ 0x25, 0x88, 0x01, 0x03, 0x25, 0x90, 0x01, 0x01,
+ 0x26, 0x78, 0x01, 0x0B, 0x26, 0x88, 0x01, 0x06,
+ 0x26, 0x90, 0x01, 0x04, 0x27, 0x78, 0x01, 0x0E,
+ 0x27, 0x88, 0x01, 0x08, 0x25, 0x90, 0x01, 0x01,
+ 0x25, 0x78, 0x01, 0x07, 0x25, 0x88, 0x01, 0x03,
+ 0x25, 0x90, 0x01, 0x01, 0x25, 0x98, 0x01, 0x0B,
+ 0x25, 0xA8, 0x01, 0x06, 0x25, 0xB0, 0x01, 0x04,
+ 0x25, 0x98, 0x01, 0x0B, 0x25, 0xA8, 0x01, 0x05,
+ 0x25, 0xB0, 0x01, 0x04, 0x26, 0x98, 0x01, 0x0A,
+ 0x26, 0xA8, 0x01, 0x04, 0x25, 0x90, 0x01, 0x01
+};
+
+static const ByteProvider kEoB1DoorSwitchShapeDefsDOSProvider = { ARRAYSIZE(kEoB1DoorSwitchShapeDefsDOS), kEoB1DoorSwitchShapeDefsDOS };
+
+static const byte kEoB1DoorSwitchCoordsDOS[48] = {
+ 0x82, 0x24, 0x74, 0x27, 0x00, 0x00, 0x82, 0x24,
+ 0x74, 0x27, 0x00, 0x00, 0x5B, 0x36, 0x5A, 0x33,
+ 0x5A, 0x2D, 0x88, 0x26, 0x74, 0x29, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x24,
+ 0x73, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x2B, 0x74, 0x2B, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1DoorSwitchCoordsDOSProvider = { ARRAYSIZE(kEoB1DoorSwitchCoordsDOS), kEoB1DoorSwitchCoordsDOS };
+
+static const byte kEoB1MonsterPropertiesDOS[594] = {
+ 0x07, 0x12, 0xFF, 0x01, 0x01, 0x04, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x02, 0x4B,
+ 0x02, 0xFF, 0x00, 0x07, 0x11, 0x02, 0x01, 0x01,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x78, 0x00,
+ 0x01, 0x38, 0x39, 0x00, 0xFF, 0x00, 0x05, 0x11,
+ 0x01, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x0C, 0x04, 0x00, 0x00,
+ 0x00, 0x41, 0x00, 0x00, 0x42, 0x43, 0x00, 0x02,
+ 0x00, 0x08, 0x0F, 0x02, 0x01, 0x01, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x49,
+ 0x4A, 0x00, 0x03, 0x00, 0x04, 0x10, 0x02, 0x02,
+ 0x01, 0x04, 0x01, 0x01, 0x04, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0xAF,
+ 0x00, 0x02, 0x36, 0x37, 0x04, 0xFF, 0x14, 0x05,
+ 0x11, 0x03, 0x01, 0x01, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x00,
+ 0x00, 0x00, 0x41, 0x00, 0x00, 0x2F, 0x30, 0x00,
+ 0xFF, 0x00, 0x06, 0x13, 0x02, 0x01, 0x01, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x12, 0x02, 0x00, 0x00, 0x00, 0x8A, 0x02, 0x02,
+ 0x31, 0x26, 0x00, 0xFF, 0x00, 0x03, 0x0C, 0x07,
+ 0x01, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0xDA, 0x02, 0x00, 0x2D, 0x2E, 0x00, 0xFF, 0x00,
+ 0x05, 0x07, 0x0A, 0x01, 0x01, 0x08, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x04,
+ 0x00, 0x00, 0x00, 0xDC, 0x05, 0x00, 0x40, 0x41,
+ 0x00, 0x07, 0x00, 0x04, 0x0F, 0x06, 0x02, 0x01,
+ 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x03,
+ 0x01, 0x27, 0x28, 0x00, 0xFF, 0x00, 0x05, 0x0D,
+ 0x06, 0x03, 0x01, 0x08, 0x00, 0x01, 0x04, 0x00,
+ 0x01, 0x04, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00,
+ 0x00, 0x78, 0x05, 0x02, 0x25, 0x24, 0x00, 0xFF,
+ 0x00, 0x04, 0x0D, 0x05, 0x02, 0x01, 0x04, 0x00,
+ 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xE2, 0x04, 0x00, 0x3E,
+ 0x3F, 0x00, 0xFF, 0x00, 0x04, 0x0F, 0x04, 0x01,
+ 0x01, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x8A,
+ 0x02, 0x00, 0x2B, 0x2C, 0x00, 0xFF, 0x3C, 0xFF,
+ 0x07, 0x0A, 0x01, 0x03, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
+ 0x00, 0x00, 0x10, 0x27, 0x02, 0x44, 0x45, 0x00,
+ 0xFF, 0x64, 0xFF, 0x07, 0x09, 0x01, 0x03, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x42, 0x03, 0x00, 0x00, 0x00, 0xD0, 0x07, 0x00,
+ 0x1F, 0xFF, 0x08, 0xFF, 0x00, 0x03, 0x0D, 0x07,
+ 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00,
+ 0x88, 0x13, 0x02, 0x29, 0x2A, 0x02, 0xFF, 0x3C,
+ 0x05, 0x0D, 0x07, 0x01, 0x01, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02,
+ 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x34, 0x35,
+ 0x02, 0xFF, 0x00, 0x05, 0x0B, 0x08, 0x01, 0x05,
+ 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1F,
+ 0x00, 0x3A, 0x3B, 0xFF, 0xFF, 0x5A, 0x02, 0x0F,
+ 0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00,
+ 0x00, 0x0E, 0x01, 0x02, 0x3C, 0x3D, 0x00, 0xFF,
+ 0x00, 0xFE, 0x0D, 0x08, 0x01, 0x06, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x02, 0x00, 0x00, 0x00, 0xA0, 0x0F, 0x02, 0x48,
+ 0x47, 0x00, 0xFF, 0x32, 0x04, 0x0D, 0x07, 0x01,
+ 0x01, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xCF,
+ 0x03, 0x01, 0x33, 0x32, 0x00, 0xFF, 0x28, 0x00,
+ 0x05, 0x23, 0x01, 0x01, 0x64, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00,
+ 0x00, 0x00, 0xB0, 0x36, 0x02, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x64
+};
+
+static const ByteProvider kEoB1MonsterPropertiesDOSProvider = { ARRAYSIZE(kEoB1MonsterPropertiesDOS), kEoB1MonsterPropertiesDOS };
+
+static const byte kEoB1EnemyMageSpellListDOS[10] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x05,
+ 0x06, 0x00
+};
+
+static const ByteProvider kEoB1EnemyMageSpellListDOSProvider = { ARRAYSIZE(kEoB1EnemyMageSpellListDOS), kEoB1EnemyMageSpellListDOS };
+
+static const byte kEoB1EnemyMageSfxDOS[10] = {
+ 0x00, 0x55, 0x55, 0x55, 0x55, 0x62, 0x62, 0x1F,
+ 0x62, 0x02
+};
+
+static const ByteProvider kEoB1EnemyMageSfxDOSProvider = { ARRAYSIZE(kEoB1EnemyMageSfxDOS), kEoB1EnemyMageSfxDOS };
+
+static const byte kEoB1BeholderSpellListDOS[4] = {
+ 0x02, 0x0A, 0x0B, 0x62
+};
+
+static const ByteProvider kEoB1BeholderSpellListDOSProvider = { ARRAYSIZE(kEoB1BeholderSpellListDOS), kEoB1BeholderSpellListDOS };
+
+static const byte kEoB1BeholderSfxDOS[4] = {
+ 0x62, 0x53, 0x40, 0x00
+};
+
+static const ByteProvider kEoB1BeholderSfxDOSProvider = { ARRAYSIZE(kEoB1BeholderSfxDOS), kEoB1BeholderSfxDOS };
+
+static const byte kEoB1CgaMappingDefaultDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingDefaultDOSProvider = { ARRAYSIZE(kEoB1CgaMappingDefaultDOS), kEoB1CgaMappingDefaultDOS };
+
+static const byte kEoB1CgaMappingAltDOS[32] = {
+ 0x00, 0x02, 0x03, 0x01, 0x01, 0x03, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0x00, 0x00, 0x02, 0x01, 0x03,
+ 0x00, 0x02, 0x01, 0x00, 0x01, 0x03, 0x02, 0x02,
+ 0x00, 0x03, 0x02, 0x00, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingAltDOSProvider = { ARRAYSIZE(kEoB1CgaMappingAltDOS), kEoB1CgaMappingAltDOS };
+
+static const byte kEoB1CgaMappingInvDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingInvDOSProvider = { ARRAYSIZE(kEoB1CgaMappingInvDOS), kEoB1CgaMappingInvDOS };
+
+static const byte kEoB1CgaMappingItemsLDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingItemsLDOSProvider = { ARRAYSIZE(kEoB1CgaMappingItemsLDOS), kEoB1CgaMappingItemsLDOS };
+
+static const byte kEoB1CgaMappingItemsSDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x03, 0x02,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x03, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingItemsSDOSProvider = { ARRAYSIZE(kEoB1CgaMappingItemsSDOS), kEoB1CgaMappingItemsSDOS };
+
+static const byte kEoB1CgaMappingThrownDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x01, 0x02,
+ 0x02, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x01, 0x02,
+ 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingThrownDOSProvider = { ARRAYSIZE(kEoB1CgaMappingThrownDOS), kEoB1CgaMappingThrownDOS };
+
+static const byte kEoB1CgaMappingIconsDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x03, 0x02, 0x03, 0x01,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x03, 0x02, 0x03, 0x01,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x02, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingIconsDOSProvider = { ARRAYSIZE(kEoB1CgaMappingIconsDOS), kEoB1CgaMappingIconsDOS };
+
+static const byte kEoB1CgaMappingDecoDOS[32] = {
+ 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02,
+ 0x02, 0x03, 0x02, 0x02, 0x00, 0x01, 0x03, 0x03,
+ 0x00, 0x01, 0x02, 0x03, 0x00, 0x03, 0x02, 0x02,
+ 0x00, 0x03, 0x02, 0x03, 0x00, 0x01, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingDecoDOSProvider = { ARRAYSIZE(kEoB1CgaMappingDecoDOS), kEoB1CgaMappingDecoDOS };
+
+static const byte kEoB1CgaLevelMappingIndexDOS[12] = {
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x03, 0x03, 0x04
+};
+
+static const ByteProvider kEoB1CgaLevelMappingIndexDOSProvider = { ARRAYSIZE(kEoB1CgaLevelMappingIndexDOS), kEoB1CgaLevelMappingIndexDOS };
+
+static const byte kEoB1CgaMappingLevel0DOS[32] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x03, 0x03,
+ 0x02, 0x03, 0x02, 0x02, 0x00, 0x03, 0x03, 0x03,
+ 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x03,
+ 0x02, 0x03, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel0DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel0DOS), kEoB1CgaMappingLevel0DOS };
+
+static const byte kEoB1CgaMappingLevel1DOS[32] = {
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x02,
+ 0x03, 0x01, 0x02, 0x00, 0x00, 0x02, 0x03, 0x03,
+ 0x00, 0x01, 0x01, 0x03, 0x00, 0x03, 0x01, 0x02,
+ 0x03, 0x01, 0x02, 0x01, 0x00, 0x02, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel1DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel1DOS), kEoB1CgaMappingLevel1DOS };
+
+static const byte kEoB1CgaMappingLevel2DOS[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x03, 0x03,
+ 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x03, 0x02,
+ 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel2DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel2DOS), kEoB1CgaMappingLevel2DOS };
+
+static const byte kEoB1CgaMappingLevel3DOS[32] = {
+ 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x02, 0x03, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x01, 0x01, 0x01, 0x03, 0x01, 0x02, 0x03,
+ 0x00, 0x03, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel3DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel3DOS), kEoB1CgaMappingLevel3DOS };
+
+static const byte kEoB1CgaMappingLevel4DOS[32] = {
+ 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03,
+ 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x01, 0x03,
+ 0x00, 0x02, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel4DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel4DOS), kEoB1CgaMappingLevel4DOS };
+
+static const byte kEoB1NpcShpDataDOS[76] = {
+ 0x00, 0x00, 0x06, 0x40, 0x06, 0x00, 0x07, 0x48,
+ 0x0D, 0x00, 0x06, 0x30, 0x13, 0x00, 0x05, 0x38,
+ 0x18, 0x00, 0x05, 0x38, 0x1D, 0x00, 0x05, 0x38,
+ 0x22, 0x00, 0x06, 0x48, 0x00, 0x48, 0x06, 0x56,
+ 0x06, 0x48, 0x05, 0x40, 0x0B, 0x48, 0x05, 0x40,
+ 0x10, 0x48, 0x05, 0x30, 0x06, 0x88, 0x03, 0x18,
+ 0x09, 0x88, 0x03, 0x18, 0x0C, 0x88, 0x03, 0x18,
+ 0x0F, 0x88, 0x03, 0x18, 0x12, 0x88, 0x03, 0x18,
+ 0x15, 0x88, 0x03, 0x18, 0x18, 0x48, 0x06, 0x58,
+ 0x1E, 0x48, 0x0A, 0x48
+};
+
+static const ByteProvider kEoB1NpcShpDataDOSProvider = { ARRAYSIZE(kEoB1NpcShpDataDOS), kEoB1NpcShpDataDOS };
+
+static const byte kEoB1NpcSubShpIndex1DOS[6] = {
+ 0x09, 0x08, 0x08, 0x09, 0x09, 0x0A
+};
+
+static const ByteProvider kEoB1NpcSubShpIndex1DOSProvider = { ARRAYSIZE(kEoB1NpcSubShpIndex1DOS), kEoB1NpcSubShpIndex1DOS };
+
+static const byte kEoB1NpcSubShpIndex2DOS[6] = {
+ 0x0D, 0x0B, 0x0C, 0x0E, 0x0F, 0x10
+};
+
+static const ByteProvider kEoB1NpcSubShpIndex2DOSProvider = { ARRAYSIZE(kEoB1NpcSubShpIndex2DOS), kEoB1NpcSubShpIndex2DOS };
+
+static const byte kEoB1NpcSubShpYDOS[6] = {
+ 0x34, 0x31, 0x31, 0x34, 0x34, 0x45
+};
+
+static const ByteProvider kEoB1NpcSubShpYDOSProvider = { ARRAYSIZE(kEoB1NpcSubShpYDOS), kEoB1NpcSubShpYDOS };
+
+static const char *const kEoB1EnchantedStringDOS[1] = {
+ "%s +%d"
+};
+
+static const StringListProvider kEoB1EnchantedStringDOSProvider = { ARRAYSIZE(kEoB1EnchantedStringDOS), kEoB1EnchantedStringDOS };
+
+static const byte kEoB1SpellLevelsMageDOS[26] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05,
+ 0x05, 0x00
+};
+
+static const ByteProvider kEoB1SpellLevelsMageDOSProvider = { ARRAYSIZE(kEoB1SpellLevelsMageDOS), kEoB1SpellLevelsMageDOS };
+
+static const byte kEoB1SpellLevelsClericDOS[25] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x01,
+ 0x00
+};
+
+static const ByteProvider kEoB1SpellLevelsClericDOSProvider = { ARRAYSIZE(kEoB1SpellLevelsClericDOS), kEoB1SpellLevelsClericDOS };
+
+static const byte kEoB1NumSpellsClericDOS[50] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03,
+ 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x00,
+ 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x03, 0x03,
+ 0x02, 0x01, 0x00, 0x03, 0x03, 0x03, 0x02, 0x00,
+ 0x04, 0x04, 0x03, 0x02, 0x01, 0x04, 0x04, 0x03,
+ 0x03, 0x02
+};
+
+static const ByteProvider kEoB1NumSpellsClericDOSProvider = { ARRAYSIZE(kEoB1NumSpellsClericDOS), kEoB1NumSpellsClericDOS };
+
+static const byte kEoB1NumSpellsWisAdjDOS[40] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00,
+ 0x00, 0x02, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02,
+ 0x01, 0x01, 0x00, 0x03, 0x02, 0x01, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1NumSpellsWisAdjDOSProvider = { ARRAYSIZE(kEoB1NumSpellsWisAdjDOS), kEoB1NumSpellsWisAdjDOS };
+
+static const byte kEoB1NumSpellsPalDOS[60] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x02,
+ 0x02, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1NumSpellsPalDOSProvider = { ARRAYSIZE(kEoB1NumSpellsPalDOS), kEoB1NumSpellsPalDOS };
+
+static const byte kEoB1NumSpellsMageDOS[55] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03,
+ 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00,
+ 0x00, 0x04, 0x02, 0x02, 0x00, 0x00, 0x04, 0x03,
+ 0x02, 0x01, 0x00, 0x04, 0x03, 0x03, 0x02, 0x00,
+ 0x04, 0x03, 0x03, 0x02, 0x01, 0x04, 0x04, 0x03,
+ 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1NumSpellsMageDOSProvider = { ARRAYSIZE(kEoB1NumSpellsMageDOS), kEoB1NumSpellsMageDOS };
+
+static const uint32 kEoB1ExperienceTable0DOS[12] = {
+ 0x00000000, 0x000007D0, 0x00000FA0, 0x00001F40, 0x00003E80, 0x00007D00, 0x0000FA00, 0x0001E848,
+ 0x0003D090, 0x0007A120, 0x000B71B0, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable0DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable0DOS), kEoB1ExperienceTable0DOS };
+
+static const uint32 kEoB1ExperienceTable1DOS[12] = {
+ 0x00000000, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x0000EA60, 0x00015F90,
+ 0x00020F58, 0x0003D090, 0x0005B8D8, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable1DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable1DOS), kEoB1ExperienceTable1DOS };
+
+static const uint32 kEoB1ExperienceTable2DOS[11] = {
+ 0x00000000, 0x000005DC, 0x00000BB8, 0x00001770, 0x000032C8, 0x00006B6C, 0x0000D6D8, 0x0001ADB0,
+ 0x00036EE8, 0x0006DDD0, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable2DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable2DOS), kEoB1ExperienceTable2DOS };
+
+static const uint32 kEoB1ExperienceTable3DOS[12] = {
+ 0x00000000, 0x000004E2, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x00011170,
+ 0x0001ADB0, 0x00027100, 0x00035B60, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable3DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable3DOS), kEoB1ExperienceTable3DOS };
+
+static const uint32 kEoB1ExperienceTable4DOS[12] = {
+ 0x00000000, 0x000008CA, 0x00001194, 0x00002328, 0x00004650, 0x00008CA0, 0x000124F8, 0x000249F0,
+ 0x000493E0, 0x000927C0, 0x000DBBA0, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable4DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable4DOS), kEoB1ExperienceTable4DOS };
+
+static const byte kEoB1ExpObjectTblIndexDOS[9] = {
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01,
+ 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTblIndexDOSProvider = { ARRAYSIZE(kEoB1ExpObjectTblIndexDOS), kEoB1ExpObjectTblIndexDOS };
+
+static const byte kEoB1ExpObjectShpStartDOS[4] = {
+ 0x07, 0x0C, 0x0F, 0x12
+};
+
+static const ByteProvider kEoB1ExpObjectShpStartDOSProvider = { ARRAYSIZE(kEoB1ExpObjectShpStartDOS), kEoB1ExpObjectShpStartDOS };
+
+static const byte kEoB1ExpObjectTbl1DOS[13] = {
+ 0x0F, 0x05, 0x0F, 0x05, 0x06, 0x05, 0x06, 0x08,
+ 0x06, 0x08, 0x06, 0x08, 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTbl1DOSProvider = { ARRAYSIZE(kEoB1ExpObjectTbl1DOS), kEoB1ExpObjectTbl1DOS };
+
+static const byte kEoB1ExpObjectTbl2DOS[10] = {
+ 0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x0B, 0x0A,
+ 0x0B, 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTbl2DOSProvider = { ARRAYSIZE(kEoB1ExpObjectTbl2DOS), kEoB1ExpObjectTbl2DOS };
+
+static const byte kEoB1ExpObjectTbl3DOS[11] = {
+ 0x05, 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x0B,
+ 0x03, 0x0B, 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTbl3DOSProvider = { ARRAYSIZE(kEoB1ExpObjectTbl3DOS), kEoB1ExpObjectTbl3DOS };
+
+static const byte kEoB1ExpObjectYDOS[4] = {
+ 0x77, 0x67, 0x4F, 0x3F
+};
+
+static const ByteProvider kEoB1ExpObjectYDOSProvider = { ARRAYSIZE(kEoB1ExpObjectYDOS), kEoB1ExpObjectYDOS };
+
+static const byte kEoB1SparkDefStepsDOS[8] = {
+ 0x40, 0x90, 0xE4, 0xB9, 0x6E, 0x1B, 0x06, 0x01
+};
+
+static const ByteProvider kEoB1SparkDefStepsDOSProvider = { ARRAYSIZE(kEoB1SparkDefStepsDOS), kEoB1SparkDefStepsDOS };
+
+static const byte kEoB1SparkDefSubStepsDOS[4] = {
+ 0xC0, 0x30, 0x0C, 0x03
+};
+
+static const ByteProvider kEoB1SparkDefSubStepsDOSProvider = { ARRAYSIZE(kEoB1SparkDefSubStepsDOS), kEoB1SparkDefSubStepsDOS };
+
+static const byte kEoB1SparkDefShiftDOS[4] = {
+ 0x06, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1SparkDefShiftDOSProvider = { ARRAYSIZE(kEoB1SparkDefShiftDOS), kEoB1SparkDefShiftDOS };
+
+static const byte kEoB1SparkDefAddDOS[8] = {
+ 0x08, 0x06, 0x1C, 0x14, 0x0D, 0x18, 0x0D, 0x0F
+};
+
+static const ByteProvider kEoB1SparkDefAddDOSProvider = { ARRAYSIZE(kEoB1SparkDefAddDOS), kEoB1SparkDefAddDOS };
+
+static const byte kEoB1SparkDefXDOS[6] = {
+ 0x17, 0x20, 0x17, 0x20, 0x17, 0x20
+};
+
+static const ByteProvider kEoB1SparkDefXDOSProvider = { ARRAYSIZE(kEoB1SparkDefXDOS), kEoB1SparkDefXDOS };
+
+static const byte kEoB1SparkDefYDOS[6] = {
+ 0x02, 0x02, 0x34, 0x34, 0x66, 0x66
+};
+
+static const ByteProvider kEoB1SparkDefYDOSProvider = { ARRAYSIZE(kEoB1SparkDefYDOS), kEoB1SparkDefYDOS };
+
+static const uint32 kEoB1SparkOfFlags1DOS[11] = {
+ 0x40000000, 0x95000000, 0xEA550000, 0xBFAA5400, 0x6AFFA954, 0x15AAFEA9, 0x0055ABFE, 0x000056AB,
+ 0x00000156, 0x00000001, 0x00000000
+};
+
+static const Uint32Provider kEoB1SparkOfFlags1DOSProvider = { ARRAYSIZE(kEoB1SparkOfFlags1DOS), kEoB1SparkOfFlags1DOS };
+
+static const uint32 kEoB1SparkOfFlags2DOS[16] = {
+ 0xC0000000, 0x30000000, 0x0C000000, 0x03000000, 0x00C00000, 0x00300000, 0x000C0000, 0x00030000,
+ 0x0000C000, 0x00003000, 0x00000C00, 0x00000300, 0x000000C0, 0x00000030, 0x0000000C, 0x00000003
+};
+
+static const Uint32Provider kEoB1SparkOfFlags2DOSProvider = { ARRAYSIZE(kEoB1SparkOfFlags2DOS), kEoB1SparkOfFlags2DOS };
+
+static const byte kEoB1SparkOfShiftDOS[16] = {
+ 0x1E, 0x1C, 0x1A, 0x18, 0x16, 0x14, 0x12, 0x10,
+ 0x0E, 0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1SparkOfShiftDOSProvider = { ARRAYSIZE(kEoB1SparkOfShiftDOS), kEoB1SparkOfShiftDOS };
+
+static const byte kEoB1SparkOfXDOS[16] = {
+ 0x50, 0x70, 0x30, 0x68, 0x20, 0x60, 0x38, 0x78,
+ 0x80, 0x48, 0x58, 0x28, 0x60, 0x40, 0x70, 0x48
+};
+
+static const ByteProvider kEoB1SparkOfXDOSProvider = { ARRAYSIZE(kEoB1SparkOfXDOS), kEoB1SparkOfXDOS };
+
+static const byte kEoB1SparkOfYDOS[16] = {
+ 0x31, 0x2B, 0x48, 0x17, 0x16, 0x48, 0x35, 0x1B,
+ 0x43, 0x2E, 0x24, 0x28, 0x38, 0x1C, 0x16, 0x44
+};
+
+static const ByteProvider kEoB1SparkOfYDOSProvider = { ARRAYSIZE(kEoB1SparkOfYDOS), kEoB1SparkOfYDOS };
+
+static const byte kEoB1SpellPropertiesDOS[1007] = {
+ 0x4D, 0x2C, 0x2E, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x4E, 0x2C, 0x2E, 0x21, 0x01,
+ 0x0B, 0x0F, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x86, 0x0F, 0xF3, 0x0E, 0x5C, 0x00, 0x54, 0x2C,
+ 0x2E, 0x21, 0x00, 0x99, 0x0F, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
+ 0x01, 0x62, 0x2C, 0x2E, 0x21, 0x08, 0x69, 0x10,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x10,
+ 0xF3, 0x0E, 0x5F, 0x00, 0x6F, 0x2C, 0x2E, 0x21,
+ 0x00, 0xD2, 0x10, 0xF3, 0x0E, 0xF2, 0x10, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7D, 0x2C, 0x2E, 0x21, 0x04, 0x22,
+ 0x11, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x76,
+ 0x11, 0xF3, 0x0E, 0x5C, 0x00, 0x84, 0x2C, 0x2E,
+ 0x21, 0x02, 0x97, 0x11, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x33, 0x12, 0xF3, 0x0E, 0x58, 0x00,
+ 0x93, 0x2C, 0x2E, 0x21, 0x01, 0x7F, 0x12, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x12, 0xF3,
+ 0x0E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x2C,
+ 0x2E, 0x21, 0x00, 0xC2, 0x12, 0xF3, 0x0E, 0xE3,
+ 0x12, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x01, 0xB2, 0x2C, 0x2E, 0x21, 0x00, 0x15, 0x13,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0xC1, 0x2C, 0x2E, 0x21,
+ 0x01, 0x1A, 0x13, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0xCE,
+ 0x2C, 0x2E, 0x21, 0x00, 0xFD, 0x13, 0xF3, 0x0E,
+ 0x1E, 0x14, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x62, 0x01, 0xD7, 0x2C, 0x2E, 0x21, 0x00, 0x4A,
+ 0x14, 0xF3, 0x0E, 0x6B, 0x14, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x63, 0x01, 0xE3, 0x2C, 0x2E,
+ 0x21, 0x08, 0x97, 0x14, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0xF9, 0x14, 0xF3, 0x0E, 0x64, 0x00,
+ 0xE9, 0x2C, 0x2E, 0x21, 0x00, 0x0F, 0x15, 0xF3,
+ 0x0E, 0x30, 0x15, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x65, 0x01, 0xF5, 0x2C, 0x2E, 0x21, 0x08,
+ 0xD0, 0x15, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0xA1, 0x12, 0xF3, 0x0E, 0x5E, 0x00, 0x0D, 0x2D,
+ 0x2E, 0x21, 0x00, 0x09, 0x16, 0xF3, 0x0E, 0x2A,
+ 0x16, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F,
+ 0x01, 0x1C, 0x2D, 0x2E, 0x21, 0x02, 0x56, 0x16,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x16,
+ 0xF3, 0x0E, 0x66, 0x00, 0x2B, 0x2D, 0x2E, 0x21,
+ 0x00, 0x02, 0x17, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x01, 0x30,
+ 0x2D, 0x2E, 0x21, 0x00, 0xB7, 0x17, 0xF3, 0x0E,
+ 0xD8, 0x17, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x59, 0x01, 0x3A, 0x2D, 0x2E, 0x21, 0x01, 0x65,
+ 0x18, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x5D, 0x00, 0x44, 0x2D, 0x2E,
+ 0x21, 0x00, 0xD3, 0x18, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x4E, 0x2D, 0x2E, 0x21, 0x00, 0xD8, 0x18, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x76, 0x01, 0x5B, 0x2D, 0x2E, 0x21, 0x00,
+ 0x0F, 0x1A, 0xF3, 0x0E, 0x30, 0x1A, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x65, 0x01, 0x68, 0x2D,
+ 0x2E, 0x21, 0x08, 0xD0, 0x1A, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x13, 0x1B, 0xF3, 0x0E, 0x5B,
+ 0x00, 0x6E, 0x2D, 0x2E, 0x21, 0x01, 0x20, 0x1B,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x68, 0x00, 0x80, 0x2D, 0x2E, 0x21,
+ 0x00, 0x43, 0x1B, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x01, 0x93,
+ 0x2D, 0x2E, 0x21, 0x08, 0x69, 0x10, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0xAE, 0x10, 0xF3, 0x0E,
+ 0x5F, 0x00, 0xA0, 0x2D, 0x2E, 0x21, 0x01, 0x5A,
+ 0x1B, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x8D,
+ 0x1B, 0xF3, 0x0E, 0x6E, 0x00, 0xB5, 0x2D, 0x2E,
+ 0x21, 0x01, 0xA3, 0x1B, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x45, 0x1C, 0xF3, 0x0E, 0x5B, 0x00,
+ 0xB9, 0x2D, 0x2E, 0x21, 0x02, 0x38, 0x1D, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x33, 0x12, 0xF3,
+ 0x0E, 0x63, 0x00, 0xC5, 0x2D, 0x2E, 0x21, 0x00,
+ 0x0F, 0x15, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x65, 0x01, 0xD1, 0x2D,
+ 0x2E, 0x21, 0x01, 0x75, 0x1C, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0xD2, 0x1C, 0xF3, 0x0E, 0x6F,
+ 0x00, 0xDD, 0x2D, 0x2E, 0x21, 0x08, 0xC0, 0x1D,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x70, 0x00, 0xE9, 0x2D, 0x2E, 0x21,
+ 0x01, 0x1A, 0x13, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0xF6,
+ 0x2D, 0x2E, 0x21, 0x04, 0xDF, 0x1D, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x1D, 0x1E, 0xF3, 0x0E,
+ 0x71, 0x00, 0x07, 0x2E, 0x2E, 0x21, 0x08, 0x3E,
+ 0x1E, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x6C,
+ 0x1E, 0xF3, 0x0E, 0x5B, 0x00, 0x0E, 0x2E, 0x2E,
+ 0x21, 0x08, 0x7E, 0x1E, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00,
+ 0x1F, 0x2E, 0x2E, 0x21, 0x01, 0xCC, 0x1E, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x69, 0x00, 0x33, 0x2E, 0x2E, 0x21, 0x00,
+ 0xF3, 0x1E, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x48, 0x2E,
+ 0x2E, 0x21, 0x01, 0x0B, 0x1F, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73,
+ 0x00, 0x5A, 0x2E, 0x2E, 0x21, 0x08, 0x33, 0x1F,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x1F,
+ 0xF3, 0x0E, 0x6E, 0x00, 0x7A, 0x2E, 0x2E, 0x21,
+ 0x04, 0xC8, 0x1F, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x94,
+ 0x2E, 0x2E, 0x21, 0x01, 0xD2, 0x1F, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0xA9, 0x2E, 0x2E, 0x21, 0x00, 0xF9,
+ 0x1F, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x6C, 0x01, 0xBF, 0x2E, 0x2E,
+ 0x21, 0x00, 0x11, 0x20, 0xF3, 0x0E, 0x32, 0x20,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x62, 0x01,
+ 0xCC, 0x2E, 0x2E, 0x21, 0x01, 0x50, 0x20, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x75, 0x00, 0xD7, 0x2E, 0x2E, 0x21, 0x01,
+ 0xBC, 0x21, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xE4, 0x2E,
+ 0x2E, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A,
+ 0x20, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x75,
+ 0x00, 0xE5, 0x2E, 0x2E, 0x21, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xA8, 0x20, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x75, 0x00, 0xE6, 0x2E, 0x2E, 0x21,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x21, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00
+};
+
+static const ByteProvider kEoB1SpellPropertiesDOSProvider = { ARRAYSIZE(kEoB1SpellPropertiesDOS), kEoB1SpellPropertiesDOS };
+
+static const byte kEoB1MagicFlightPropsDOS[96] = {
+ 0x04, 0xFF, 0x41, 0x09, 0x0A, 0xFF, 0x04, 0x05,
+ 0x0D, 0xFF, 0x7A, 0x06, 0x0E, 0xFF, 0x0C, 0x05,
+ 0x10, 0xFF, 0x4A, 0x0A, 0x12, 0x06, 0x38, 0x07,
+ 0x15, 0x06, 0x7A, 0x08, 0x19, 0xFF, 0x4A, 0x0A,
+ 0x2F, 0xFF, 0x4B, 0x06, 0x32, 0xFF, 0x09, 0x07,
+ 0x33, 0xFF, 0x09, 0x0A, 0x34, 0xFF, 0x09, 0x0A,
+ 0x01, 0x01, 0x00, 0x00, 0x03, 0xFD, 0x02, 0xFE,
+ 0x01, 0xFF, 0x00, 0x00, 0x98, 0x00, 0x18, 0x00,
+ 0x78, 0x00, 0x38, 0x00, 0x58, 0x00, 0x40, 0x40,
+ 0x38, 0x38, 0x38, 0x38, 0xE0, 0x20, 0x01, 0xFF,
+ 0x0F, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x09, 0x00,
+ 0x02, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1MagicFlightPropsDOSProvider = { ARRAYSIZE(kEoB1MagicFlightPropsDOS), kEoB1MagicFlightPropsDOS };
+
+static const byte kEoB1TurnUndeadEffectDOS[140] = {
+ 0x0A, 0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x0A,
+ 0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x0D, 0x0A, 0x07,
+ 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x14, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x14,
+ 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0x00, 0x63, 0x63, 0x14, 0x13,
+ 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10,
+ 0x0D, 0x0A, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00,
+ 0x63, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D,
+ 0x0A, 0x07, 0x07, 0x04, 0x04, 0x00, 0x63, 0x63,
+ 0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D, 0x0A,
+ 0x0A, 0x07, 0x07, 0x04
+};
+
+static const ByteProvider kEoB1TurnUndeadEffectDOSProvider = { ARRAYSIZE(kEoB1TurnUndeadEffectDOS), kEoB1TurnUndeadEffectDOS };
+
+static const byte kEoB1BurningHandsDestDOS[8] = {
+ 0x02, 0x03, 0x00, 0x02, 0x00, 0x01, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1BurningHandsDestDOSProvider = { ARRAYSIZE(kEoB1BurningHandsDestDOS), kEoB1BurningHandsDestDOS };
+
+static const byte kEoB1ConeOfColdDest1DOS[7] = {
+ 0xE0, 0xC0, 0xC1, 0xBF, 0xA0, 0x9F, 0xA1
+};
+
+static const ByteProvider kEoB1ConeOfColdDest1DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest1DOS), kEoB1ConeOfColdDest1DOS };
+
+static const byte kEoB1ConeOfColdDest2DOS[7] = {
+ 0x01, 0x02, 0xE2, 0x22, 0x03, 0xE3, 0x23
+};
+
+static const ByteProvider kEoB1ConeOfColdDest2DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest2DOS), kEoB1ConeOfColdDest2DOS };
+
+static const byte kEoB1ConeOfColdDest3DOS[7] = {
+ 0x20, 0x40, 0x3F, 0x41, 0x60, 0x5F, 0x61
+};
+
+static const ByteProvider kEoB1ConeOfColdDest3DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest3DOS), kEoB1ConeOfColdDest3DOS };
+
+static const byte kEoB1ConeOfColdDest4DOS[7] = {
+ 0xFF, 0xFE, 0x1E, 0xDE, 0xFD, 0x1D, 0xDD
+};
+
+static const ByteProvider kEoB1ConeOfColdDest4DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest4DOS), kEoB1ConeOfColdDest4DOS };
+
+static const byte kEoB1ConeOfColdGfxTblDOS[8] = {
+ 0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1ConeOfColdGfxTblDOSProvider = { ARRAYSIZE(kEoB1ConeOfColdGfxTblDOS), kEoB1ConeOfColdGfxTblDOS };
+
+static const byte kEoB1DscDoorShapeIndexDOS[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03
+};
+
+static const ByteProvider kEoB1DscDoorShapeIndexDOSProvider = { ARRAYSIZE(kEoB1DscDoorShapeIndexDOS), kEoB1DscDoorShapeIndexDOS };
+
+static const byte kEoB1WllFlagPresetDOS[25] = {
+ 0x07, 0x00, 0x40, 0xA8, 0x88, 0x88, 0x88, 0x9F,
+ 0xA8, 0x88, 0x88, 0x88, 0x9F, 0xAA, 0x8A, 0x8A,
+ 0x8A, 0x9F, 0xAA, 0x8A, 0x8A, 0x8A, 0x9F, 0x03,
+ 0x03
+};
+
+static const ByteProvider kEoB1WllFlagPresetDOSProvider = { ARRAYSIZE(kEoB1WllFlagPresetDOS), kEoB1WllFlagPresetDOS };
+
+static const uint16 kEoB1DscShapeCoordsDOS[180] = {
+ 0xFF91, 0xFFC1, 0xFFA1, 0xFFC1, 0xFF75, 0xFFC5, 0xFF8B, 0xFFC5,
+ 0xFF88, 0xFFC3, 0xFFB4, 0xFFC1, 0xFFC4, 0xFFC1, 0xFFA1, 0xFFC5,
+ 0xFFB6, 0xFFC5, 0xFFB0, 0xFFC3, 0xFFD5, 0xFFC1, 0xFFE5, 0xFFC1,
+ 0xFFCB, 0xFFC5, 0xFFE1, 0xFFC5, 0xFFD8, 0xFFC3, 0xFFF8, 0xFFC1,
+ 0x0008, 0xFFC1, 0xFFF6, 0xFFC5, 0x000A, 0xFFC5, 0x0000, 0xFFC3,
+ 0x001B, 0xFFC1, 0x002B, 0xFFC1, 0x001F, 0xFFC5, 0x0035, 0xFFC5,
+ 0x0028, 0xFFC3, 0x003C, 0xFFC1, 0x004C, 0xFFC1, 0x004A, 0xFFC5,
+ 0x005F, 0xFFC5, 0x0050, 0xFFC3, 0x005F, 0xFFC1, 0x006F, 0xFFC1,
+ 0x0075, 0xFFC5, 0x008B, 0xFFC5, 0x0078, 0xFFC3, 0xFF8A, 0xFFCB,
+ 0xFFA4, 0xFFCB, 0xFF68, 0xFFD3, 0xFF88, 0xFFD3, 0xFF8A, 0xFFCE,
+ 0xFFBE, 0xFFCB, 0xFFD8, 0xFFCB, 0xFFAC, 0xFFD3, 0xFFCD, 0xFFD3,
+ 0xFFC5, 0xFFCE, 0xFFF3, 0xFFCB, 0x000D, 0xFFCB, 0xFFF0, 0xFFD3,
+ 0x0010, 0xFFD3, 0x0000, 0xFFCE, 0x0028, 0xFFCB, 0x0042, 0xFFCB,
+ 0x0033, 0xFFD3, 0x0054, 0xFFD3, 0x003B, 0xFFCE, 0x005C, 0xFFCB,
+ 0x0076, 0xFFCB, 0x0078, 0xFFD3, 0x0098, 0xFFD3, 0x0076, 0xFFCE,
+ 0xFF92, 0xFFDD, 0xFFBD, 0xFFDD, 0xFF74, 0xFFEA, 0xFFAD, 0xFFEA,
+ 0xFF9E, 0xFFE2, 0xFFEA, 0xFFDD, 0x0016, 0xFFDD, 0xFFE5, 0xFFEA,
+ 0x001B, 0xFFEA, 0x0000, 0xFFE2, 0x0043, 0xFFDD, 0x006E, 0xFFDD,
+ 0x0053, 0xFFEA, 0x008C, 0xFFEA, 0x0062, 0xFFE2, 0xFF80, 0xFFFC,
+ 0x0080, 0xFFFC, 0xFF80, 0xFFBE, 0x0080, 0xFFBE, 0x0080, 0x0000,
+ 0xFFDA, 0xFFFC, 0x0026, 0xFFFC, 0xFFDA, 0xFFBE, 0x0026, 0xFFBE,
+ 0x0000, 0x0000, 0xFF80, 0xFFFC, 0x0080, 0xFFFC, 0xFF80, 0xFFBE,
+ 0x0080, 0xFFBE, 0x0080, 0x0000
+};
+
+static const Uint16Provider kEoB1DscShapeCoordsDOSProvider = { ARRAYSIZE(kEoB1DscShapeCoordsDOS), kEoB1DscShapeCoordsDOS };
+
+static const byte kEoB1DscDoorScaleOffsDOS[32] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F
+};
+
+static const ByteProvider kEoB1DscDoorScaleOffsDOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleOffsDOS), kEoB1DscDoorScaleOffsDOS };
+
+static const byte kEoB1DscDoorScaleMult1DOS[4] = {
+ 0x08, 0x0C, 0x12, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult1DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult1DOS), kEoB1DscDoorScaleMult1DOS };
+
+static const byte kEoB1DscDoorScaleMult2DOS[4] = {
+ 0x00, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult2DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult2DOS), kEoB1DscDoorScaleMult2DOS };
+
+static const byte kEoB1DscDoorScaleMult3DOS[4] = {
+ 0x04, 0x06, 0x09, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult3DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult3DOS), kEoB1DscDoorScaleMult3DOS };
+
+static const byte kEoB1DscDoorScaleMult4DOS[4] = {
+ 0x00, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult4DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult4DOS), kEoB1DscDoorScaleMult4DOS };
+
+static const byte kEoB1DscDoorScaleMult5DOS[4] = {
+ 0x07, 0x0B, 0x0E, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult5DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult5DOS), kEoB1DscDoorScaleMult5DOS };
+
+static const byte kEoB1DscDoorScaleMult6DOS[4] = {
+ 0x00, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult6DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult6DOS), kEoB1DscDoorScaleMult6DOS };
+
+static const byte kEoB1DscDoorXEDOS[32] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F
+};
+
+static const ByteProvider kEoB1DscDoorXEDOSProvider = { ARRAYSIZE(kEoB1DscDoorXEDOS), kEoB1DscDoorXEDOS };
+
+static const byte kEoB1DscDoorY1DOS[4] = {
+ 0x3A, 0x47, 0x56, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY1DOSProvider = { ARRAYSIZE(kEoB1DscDoorY1DOS), kEoB1DscDoorY1DOS };
+
+static const byte kEoB1DscDoorY3DOS[4] = {
+ 0x20, 0x20, 0x18, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY3DOSProvider = { ARRAYSIZE(kEoB1DscDoorY3DOS), kEoB1DscDoorY3DOS };
+
+static const byte kEoB1DscDoorY4DOS[4] = {
+ 0x1E, 0x18, 0x10, 0x30
+};
+
+static const ByteProvider kEoB1DscDoorY4DOSProvider = { ARRAYSIZE(kEoB1DscDoorY4DOS), kEoB1DscDoorY4DOS };
+
+static const byte kEoB1DscDoorY5DOS[4] = {
+ 0x30, 0x34, 0x3B, 0x3A
+};
+
+static const ByteProvider kEoB1DscDoorY5DOSProvider = { ARRAYSIZE(kEoB1DscDoorY5DOS), kEoB1DscDoorY5DOS };
+
+static const byte kEoB1DscDoorY6DOS[4] = {
+ 0x3A, 0x45, 0x5A, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY6DOSProvider = { ARRAYSIZE(kEoB1DscDoorY6DOS), kEoB1DscDoorY6DOS };
+
+static const byte kEoB1DscDoorY7DOS[4] = {
+ 0x3B, 0x47, 0x58, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY7DOSProvider = { ARRAYSIZE(kEoB1DscDoorY7DOS), kEoB1DscDoorY7DOS };
+
+static const uint16 kEoB1DscDoorCoordsExtDOS[36] = {
+ 0x0000, 0x0000, 0xFFE8, 0x0010, 0x0020, 0x0040, 0x0048, 0x0068,
+ 0x0070, 0x0090, 0x00A0, 0x00C8, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFE8, 0x0030, 0x0038, 0x0078, 0x0080, 0x00C8, 0x0000, 0x0000,
+ 0xFFA8, 0x0020, 0x0028, 0x0088, 0x0090, 0x0108, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kEoB1DscDoorCoordsExtDOSProvider = { ARRAYSIZE(kEoB1DscDoorCoordsExtDOS), kEoB1DscDoorCoordsExtDOS };
+
+static const byte kEoB1DscDoorFrameY1DOS[32] = {
+ 0x20, 0x18, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x20, 0x18, 0x00, 0x1E, 0x18, 0x10, 0x00,
+ 0x3A, 0x48, 0x60, 0x78, 0x3A, 0x46, 0x56, 0x00,
+ 0x78, 0x78, 0x78, 0x78, 0x1F, 0x18, 0x0F, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorFrameY1DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameY1DOS), kEoB1DscDoorFrameY1DOS };
+
+static const byte kEoB1DscDoorFrameY2DOS[32] = {
+ 0x20, 0x18, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x20, 0x18, 0x00, 0x1E, 0x18, 0x10, 0x00,
+ 0x3A, 0x48, 0x60, 0x78, 0x3A, 0x46, 0x56, 0x00,
+ 0x78, 0x78, 0x78, 0x78, 0x1F, 0x18, 0x0F, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorFrameY2DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameY2DOS), kEoB1DscDoorFrameY2DOS };
+
+static const byte kEoB1DscDoorFrameIndex1DOS[12] = {
+ 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x08, 0x08,
+ 0x08, 0x0C, 0x0C, 0x1C
+};
+
+static const ByteProvider kEoB1DscDoorFrameIndex1DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameIndex1DOS), kEoB1DscDoorFrameIndex1DOS };
+
+static const byte kEoB1DscDoorFrameIndex2DOS[12] = {
+ 0x10, 0x10, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10,
+ 0x10, 0x14, 0x14, 0x18
+};
+
+static const ByteProvider kEoB1DscDoorFrameIndex2DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameIndex2DOS), kEoB1DscDoorFrameIndex2DOS };
+
+static const byte kEoB1DscItemPosIndexDOS[16] = {
+ 0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x03, 0x01,
+ 0x03, 0x02, 0x01, 0x00, 0x01, 0x03, 0x00, 0x02
+};
+
+static const ByteProvider kEoB1DscItemPosIndexDOSProvider = { ARRAYSIZE(kEoB1DscItemPosIndexDOS), kEoB1DscItemPosIndexDOS };
+
+static const uint16 kEoB1DscItemShpXDOS[18] = {
+ 0xFFC8, 0xFFF8, 0x0028, 0x0058, 0x0088, 0x00B8, 0x00E8, 0xFFB8,
+ 0x0008, 0x0058, 0x00A8, 0x00F8, 0xFFD8, 0x0058, 0x00D8, 0xFFA8,
+ 0x0058, 0x0108
+};
+
+static const Uint16Provider kEoB1DscItemShpXDOSProvider = { ARRAYSIZE(kEoB1DscItemShpXDOS), kEoB1DscItemShpXDOS };
+
+static const byte kEoB1DscItemScaleIndexDOS[18] = {
+ 0xFF, 0xFF, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF,
+ 0x25, 0x00
+};
+
+static const ByteProvider kEoB1DscItemScaleIndexDOSProvider = { ARRAYSIZE(kEoB1DscItemScaleIndexDOS), kEoB1DscItemScaleIndexDOS };
+
+static const byte kEoB1DscItemTileIndexDOS[18] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x09, 0xFF, 0x0B,
+ 0x0C, 0x0D
+};
+
+static const ByteProvider kEoB1DscItemTileIndexDOSProvider = { ARRAYSIZE(kEoB1DscItemTileIndexDOS), kEoB1DscItemTileIndexDOS };
+
+static const byte kEoB1DscItemShapeMapDOS[90] = {
+ 0x00, 0x00, 0x00, 0x04, 0x01, 0x02, 0x03, 0x04,
+ 0x05, 0x06, 0x07, 0x07, 0x12, 0x06, 0x0F, 0x12,
+ 0x14, 0x17, 0x13, 0x11, 0x15, 0x0D, 0x09, 0x09,
+ 0x16, 0x1F, 0x0C, 0x23, 0x0C, 0x0C, 0x0C, 0x0B,
+ 0x0A, 0x1C, 0x1C, 0x1A, 0x1B, 0x21, 0x1D, 0x1D,
+ 0x22, 0x22, 0x22, 0x00, 0x08, 0x00, 0x25, 0x18,
+ 0x16, 0x17, 0x16, 0x17, 0x16, 0x17, 0x19, 0x23,
+ 0x10, 0x1E, 0x24, 0x18, 0x1C, 0x20, 0x12, 0x21,
+ 0x1E, 0x23, 0x1C, 0x00, 0x20, 0x11, 0x11, 0x0D,
+ 0x1F, 0x09, 0x09, 0x15, 0x15, 0x0F, 0x05, 0x0C,
+ 0x1E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B,
+ 0x1B, 0x00
+};
+
+static const ByteProvider kEoB1DscItemShapeMapDOSProvider = { ARRAYSIZE(kEoB1DscItemShapeMapDOS), kEoB1DscItemShapeMapDOS };
+
+static const byte kEoB1DscTelptrShpCoordsDOS[156] = {
+ 0x0C, 0x07, 0x1A, 0x01, 0x3E, 0x03, 0x0C, 0x1A,
+ 0x2A, 0x13, 0x40, 0x18, 0x02, 0x2D, 0x16, 0x25,
+ 0x28, 0x32, 0x36, 0x27, 0x0A, 0x3E, 0x16, 0x49,
+ 0x3E, 0x44, 0x06, 0x06, 0x2A, 0x04, 0x37, 0x0A,
+ 0x04, 0x1B, 0x1A, 0x16, 0x37, 0x1D, 0x0E, 0x2A,
+ 0x1B, 0x35, 0x2E, 0x28, 0x42, 0x30, 0x06, 0x47,
+ 0x06, 0x47, 0x2D, 0x4C, 0x0A, 0x04, 0x14, 0x00,
+ 0x2E, 0x01, 0x0C, 0x10, 0x1F, 0x10, 0x2F, 0x10,
+ 0x12, 0x18, 0x28, 0x1D, 0x01, 0x21, 0x08, 0x2A,
+ 0x11, 0x32, 0x2F, 0x2E, 0x1F, 0x25, 0x02, 0x02,
+ 0x01, 0x11, 0x01, 0x2F, 0x08, 0x1E, 0x11, 0x0E,
+ 0x11, 0x26, 0x1C, 0x01, 0x1E, 0x19, 0x1F, 0x33,
+ 0x24, 0x11, 0x26, 0x05, 0x28, 0x2B, 0x2F, 0x22,
+ 0x00, 0x13, 0x05, 0x01, 0x06, 0x08, 0x09, 0x0C,
+ 0x04, 0x1A, 0x08, 0x1F, 0x12, 0x05, 0x12, 0x15,
+ 0x16, 0x10, 0x1A, 0x08, 0x1A, 0x1D, 0x0A, 0x00,
+ 0x0A, 0x00, 0x00, 0x09, 0x00, 0x1E, 0x04, 0x11,
+ 0x08, 0x16, 0x08, 0x06, 0x10, 0x00, 0x11, 0x0D,
+ 0x12, 0x20, 0x15, 0x02, 0x14, 0x09, 0x16, 0x1B,
+ 0x1A, 0x14, 0x1A, 0x14
+};
+
+static const ByteProvider kEoB1DscTelptrShpCoordsDOSProvider = { ARRAYSIZE(kEoB1DscTelptrShpCoordsDOS), kEoB1DscTelptrShpCoordsDOS };
+
+static const byte kEoB1PortalSeqDataDOS[126] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04,
+ 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02,
+ 0x02, 0x03, 0x01, 0x04, 0x00, 0x02, 0x01, 0x03,
+ 0x02, 0x04, 0x03, 0x02, 0x04, 0x03, 0x03, 0x04,
+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x04, 0x04, 0x04, 0x05, 0x04, 0x06, 0x03, 0x07,
+ 0x02, 0x08, 0x02, 0x08, 0x01, 0x09, 0x01, 0x09,
+ 0x01, 0x09, 0x00, 0x0A, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB1PortalSeqDataDOSProvider = { ARRAYSIZE(kEoB1PortalSeqDataDOS), kEoB1PortalSeqDataDOS };
+
+static const byte kEoB1DscMonsterFrmOffsTbl1DOS[32] = {
+ 0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
+ 0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
+ 0xFC, 0xFD, 0xFF, 0x02, 0x02, 0xFC, 0xFD, 0xFF,
+ 0xFF, 0x02, 0xFC, 0xFD, 0xFD, 0xFF, 0x02, 0xFC
+};
+
+static const ByteProvider kEoB1DscMonsterFrmOffsTbl1DOSProvider = { ARRAYSIZE(kEoB1DscMonsterFrmOffsTbl1DOS), kEoB1DscMonsterFrmOffsTbl1DOS };
+
+static const byte kEoB1DscMonsterFrmOffsTbl2DOS[32] = {
+ 0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
+ 0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
+ 0x04, 0xFD, 0x01, 0x02, 0x02, 0x04, 0xFD, 0x01,
+ 0x01, 0x02, 0x04, 0xFD, 0xFD, 0x01, 0x02, 0x04
+};
+
+static const ByteProvider kEoB1DscMonsterFrmOffsTbl2DOSProvider = { ARRAYSIZE(kEoB1DscMonsterFrmOffsTbl2DOS), kEoB1DscMonsterFrmOffsTbl2DOS };
+
+static const uint16 kEoB1InvSlotXDOS[27] = {
+ 0x00E6, 0x0116, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
+ 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
+ 0x00E1, 0x00E0, 0x00E1, 0x012A, 0x011F, 0x0115, 0x012C, 0x012C,
+ 0x012C, 0x00E4, 0x00F0
+};
+
+static const Uint16Provider kEoB1InvSlotXDOSProvider = { ARRAYSIZE(kEoB1InvSlotXDOS), kEoB1InvSlotXDOS };
+
+static const byte kEoB1InvSlotYDOS[27] = {
+ 0x74, 0x74, 0x28, 0x28, 0x3A, 0x3A, 0x4C, 0x4C,
+ 0x5E, 0x5E, 0x70, 0x70, 0x82, 0x82, 0x94, 0x94,
+ 0x38, 0x4C, 0x60, 0x37, 0x4B, 0x89, 0x5E, 0x70,
+ 0x82, 0x88, 0x88
+};
+
+static const ByteProvider kEoB1InvSlotYDOSProvider = { ARRAYSIZE(kEoB1InvSlotYDOS), kEoB1InvSlotYDOS };
+
+static const uint16 kEoB1SlotValidationFlagsDOS[27] = {
+ 0x0008, 0x0008, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0x0001, 0x0002, 0x0004, 0x0020, 0x0040, 0x0010, 0xFFFF, 0x0080,
+ 0x0080, 0x0100, 0x0100
+};
+
+static const Uint16Provider kEoB1SlotValidationFlagsDOSProvider = { ARRAYSIZE(kEoB1SlotValidationFlagsDOS), kEoB1SlotValidationFlagsDOS };
+
+static const byte kEoB1ProjectileWeaponTypesDOS[8] = {
+ 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12
+};
+
+static const ByteProvider kEoB1ProjectileWeaponTypesDOSProvider = { ARRAYSIZE(kEoB1ProjectileWeaponTypesDOS), kEoB1ProjectileWeaponTypesDOS };
+
+static const byte kEoB1WandTypesDOS[7] = {
+ 0x00, 0x12, 0x18, 0x28, 0x0D, 0xFF, 0x04
+};
+
+static const ByteProvider kEoB1WandTypesDOSProvider = { ARRAYSIZE(kEoB1WandTypesDOS), kEoB1WandTypesDOS };
+
+static const byte kEoB1DrawObjPosIndexDOS[20] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x03,
+ 0x01, 0x04, 0x02, 0x03, 0x00, 0x01, 0x04, 0x01,
+ 0x03, 0x00, 0x02, 0x04
+};
+
+static const ByteProvider kEoB1DrawObjPosIndexDOSProvider = { ARRAYSIZE(kEoB1DrawObjPosIndexDOS), kEoB1DrawObjPosIndexDOS };
+
+static const byte kEoB1FlightObjFlipIndexDOS[16] = {
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1FlightObjFlipIndexDOSProvider = { ARRAYSIZE(kEoB1FlightObjFlipIndexDOS), kEoB1FlightObjFlipIndexDOS };
+
+static const byte kEoB1FlightObjShpMapDOS[88] = {
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0x03, 0xFF, 0x05, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB1FlightObjShpMapDOSProvider = { ARRAYSIZE(kEoB1FlightObjShpMapDOS), kEoB1FlightObjShpMapDOS };
+
+static const byte kEoB1FlightObjSclIndexDOS[72] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03,
+ 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB1FlightObjSclIndexDOSProvider = { ARRAYSIZE(kEoB1FlightObjSclIndexDOS), kEoB1FlightObjSclIndexDOS };
+
+static const byte kEoB1DscShapeIndexDOS[36] = {
+ 0x01, 0x01, 0x04, 0x0A, 0x04, 0x08, 0x04, 0x01,
+ 0x04, 0xF8, 0x04, 0xF6, 0x00, 0x00, 0x03, 0x09,
+ 0x03, 0x07, 0x03, 0x01, 0x03, 0xF9, 0x03, 0xF7,
+ 0x02, 0x06, 0x02, 0x01, 0x02, 0xFA, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0xFB
+};
+
+static const ByteProvider kEoB1DscShapeIndexDOSProvider = { ARRAYSIZE(kEoB1DscShapeIndexDOS), kEoB1DscShapeIndexDOS };
+
+static const uint16 kEoB1DscXDOS[18] = {
+ 0xFF70, 0xFFA0, 0xFFD0, 0x0000, 0x0030, 0x0060, 0x0090, 0xFF60,
+ 0xFFB0, 0x0000, 0x0050, 0x00A0, 0xFF80, 0x0000, 0x0080, 0x0000,
+ 0x0000, 0x0000
+};
+
+static const Uint16Provider kEoB1DscXDOSProvider = { ARRAYSIZE(kEoB1DscXDOS), kEoB1DscXDOS };
+
+static const byte kEoB1DscTileIndexDOS[18] = {
+ 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
+ 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
+ 0x11, 0x10
+};
+
+static const ByteProvider kEoB1DscTileIndexDOSProvider = { ARRAYSIZE(kEoB1DscTileIndexDOS), kEoB1DscTileIndexDOS };
+
+static const byte kEoB1DscUnk2DOS[23] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12
+};
+
+static const ByteProvider kEoB1DscUnk2DOSProvider = { ARRAYSIZE(kEoB1DscUnk2DOS), kEoB1DscUnk2DOS };
+
+static const byte kEoB1DscDimData1DOS[324] = {
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
+ 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
+ 0xD8, 0xD8, 0xD8, 0xFE, 0xD7, 0x06, 0xD8, 0xD8,
+ 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xD8, 0xFD, 0xD7, 0x13, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
+ 0xD8, 0xF0, 0xD7, 0x14, 0xD8, 0xED, 0x10, 0xD8,
+ 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
+ 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFD, 0xD7,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
+ 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8
+};
+
+static const ByteProvider kEoB1DscDimData1DOSProvider = { ARRAYSIZE(kEoB1DscDimData1DOS), kEoB1DscDimData1DOS };
+
+static const byte kEoB1DscDimData2DOS[648] = {
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
+ 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
+ 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
+ 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
+ 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
+ 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
+};
+
+static const ByteProvider kEoB1DscDimData2DOSProvider = { ARRAYSIZE(kEoB1DscDimData2DOS), kEoB1DscDimData2DOS };
+
+static const byte kEoB1DscBlockMapDOS[12] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kEoB1DscBlockMapDOSProvider = { ARRAYSIZE(kEoB1DscBlockMapDOS), kEoB1DscBlockMapDOS };
+
+static const byte kEoB1DscDimMapDOS[18] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x03
+};
+
+static const ByteProvider kEoB1DscDimMapDOSProvider = { ARRAYSIZE(kEoB1DscDimMapDOS), kEoB1DscDimMapDOS };
+
+static const byte kEoB1DscBlockIndexDOS[72] = {
+ 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
+ 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
+ 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
+ 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
+ 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
+ 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
+ 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
+ 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
+ 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
+};
+
+static const ByteProvider kEoB1DscBlockIndexDOSProvider = { ARRAYSIZE(kEoB1DscBlockIndexDOS), kEoB1DscBlockIndexDOS };
+
+static const byte kEoB1ClassModifierFlagsDOS[15] = {
+ 0x01, 0x01, 0x05, 0x02, 0x04, 0x08, 0x05, 0x09,
+ 0x03, 0x0B, 0x0A, 0x0C, 0x07, 0x05, 0x06
+};
+
+static const ByteProvider kEoB1ClassModifierFlagsDOSProvider = { ARRAYSIZE(kEoB1ClassModifierFlagsDOS), kEoB1ClassModifierFlagsDOS };
+
+static const byte kEoB1MonsterStepTable01DOS[4] = {
+ 0xE0, 0x01, 0x20, 0xFF
+};
+
+static const ByteProvider kEoB1MonsterStepTable01DOSProvider = { ARRAYSIZE(kEoB1MonsterStepTable01DOS), kEoB1MonsterStepTable01DOS };
+
+static const byte kEoB1MonsterStepTable2DOS[8] = {
+ 0x07, 0xFA, 0x05, 0xFC, 0x03, 0xFE, 0x01, 0x00
+};
+
+static const ByteProvider kEoB1MonsterStepTable2DOSProvider = { ARRAYSIZE(kEoB1MonsterStepTable2DOS), kEoB1MonsterStepTable2DOS };
+
+static const byte kEoB1MonsterStepTable3DOS[8] = {
+ 0xF9, 0x06, 0xFB, 0x04, 0xFD, 0x02, 0xFF, 0x00
+};
+
+static const ByteProvider kEoB1MonsterStepTable3DOSProvider = { ARRAYSIZE(kEoB1MonsterStepTable3DOS), kEoB1MonsterStepTable3DOS };
+
+static const byte kEoB1MonsterCloseAttPosTable1DOS[4] = {
+ 0x00, 0x01, 0x03, 0x02
+};
+
+static const ByteProvider kEoB1MonsterCloseAttPosTable1DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttPosTable1DOS), kEoB1MonsterCloseAttPosTable1DOS };
+
+static const byte kEoB1MonsterCloseAttPosTable21DOS[8] = {
+ 0x00, 0x01, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1MonsterCloseAttPosTable21DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttPosTable21DOS), kEoB1MonsterCloseAttPosTable21DOS };
+
+static const byte kEoB1MonsterCloseAttChkTable1DOS[16] = {
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00
+};
+
+static const ByteProvider kEoB1MonsterCloseAttChkTable1DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttChkTable1DOS), kEoB1MonsterCloseAttChkTable1DOS };
+
+static const byte kEoB1MonsterCloseAttChkTable2DOS[16] = {
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1MonsterCloseAttChkTable2DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttChkTable2DOS), kEoB1MonsterCloseAttChkTable2DOS };
+
+static const byte kEoB1MonsterCloseAttDstTable1DOS[16] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kEoB1MonsterCloseAttDstTable1DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttDstTable1DOS), kEoB1MonsterCloseAttDstTable1DOS };
+
+static const byte kEoB1MonsterCloseAttDstTable2DOS[48] = {
+ 0x01, 0x00, 0x03, 0x02, 0x05, 0x04, 0x00, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x05, 0x03, 0x01, 0x04,
+ 0x02, 0x00, 0x01, 0x03, 0x05, 0x00, 0x02, 0x04,
+ 0x04, 0x05, 0x02, 0x03, 0x00, 0x01, 0x05, 0x04,
+ 0x03, 0x02, 0x01, 0x00, 0x00, 0x02, 0x04, 0x01,
+ 0x03, 0x05, 0x04, 0x02, 0x00, 0x05, 0x03, 0x01
+};
+
+static const ByteProvider kEoB1MonsterCloseAttDstTable2DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttDstTable2DOS), kEoB1MonsterCloseAttDstTable2DOS };
+
+static const byte kEoB1MonsterProximityTableDOS[32] = {
+ 0x02, 0x03, 0x00, 0x01, 0x03, 0x02, 0x01, 0x00,
+ 0x00, 0x02, 0x01, 0x03, 0x02, 0x00, 0x03, 0x01,
+ 0x01, 0x00, 0x03, 0x02, 0x00, 0x01, 0x02, 0x03,
+ 0x03, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1MonsterProximityTableDOSProvider = { ARRAYSIZE(kEoB1MonsterProximityTableDOS), kEoB1MonsterProximityTableDOS };
+
+static const byte kEoB1FindBlockMonstersTableDOS[64] = {
+ 0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
+ 0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
+ 0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
+ 0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
+ 0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
+ 0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
+ 0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00
+};
+
+static const ByteProvider kEoB1FindBlockMonstersTableDOSProvider = { ARRAYSIZE(kEoB1FindBlockMonstersTableDOS), kEoB1FindBlockMonstersTableDOS };
+
+static const byte kEoB1MonsterDirChangeTableDOS[48] = {
+ 0xFF, 0x06, 0x02, 0xFF, 0x04, 0x05, 0x03, 0xFF,
+ 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00,
+ 0xC0, 0xFF, 0xA0, 0xFF, 0x02, 0x00, 0x03, 0x00,
+ 0x40, 0x00, 0x60, 0x00, 0xFE, 0xFF, 0xFD, 0xFF
+};
+
+static const ByteProvider kEoB1MonsterDirChangeTableDOSProvider = { ARRAYSIZE(kEoB1MonsterDirChangeTableDOS), kEoB1MonsterDirChangeTableDOS };
+
+static const uint16 kEoB1EncodeMonsterDefsDOS[168] = {
+ 0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0028, 0x000C, 0x0038,
+ 0x0013, 0x0028, 0x000C, 0x0038, 0x001F, 0x0000, 0x0007, 0x0060,
+ 0x0000, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060,
+ 0x000E, 0x0060, 0x0005, 0x0038, 0x0007, 0x0000, 0x0007, 0x0028,
+ 0x000E, 0x0000, 0x0007, 0x0028, 0x0013, 0x0060, 0x0005, 0x0038,
+ 0x0018, 0x0060, 0x0005, 0x0038, 0x001D, 0x0060, 0x0005, 0x0038,
+ 0x000E, 0x0098, 0x0003, 0x0020, 0x0011, 0x00A0, 0x0004, 0x0018,
+ 0x0015, 0x00A0, 0x0004, 0x0018, 0x0019, 0x0098, 0x0003, 0x0020,
+ 0x001C, 0x0098, 0x0003, 0x0020, 0x001F, 0x0098, 0x0003, 0x0020,
+ 0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0000, 0x0007, 0x0060,
+ 0x000E, 0x0000, 0x0007, 0x0060, 0x0015, 0x0000, 0x0007, 0x0060,
+ 0x001C, 0x0000, 0x0007, 0x0060, 0x0000, 0x0060, 0x0007, 0x0060,
+ 0x0007, 0x0060, 0x0005, 0x0038, 0x000C, 0x0060, 0x0005, 0x0038,
+ 0x0011, 0x0060, 0x0005, 0x0038, 0x0016, 0x0060, 0x0005, 0x0038,
+ 0x001B, 0x0060, 0x0005, 0x0038, 0x0020, 0x0060, 0x0005, 0x0038,
+ 0x0007, 0x0098, 0x0003, 0x0020, 0x000A, 0x0098, 0x0003, 0x0020,
+ 0x000D, 0x0098, 0x0003, 0x0020, 0x0010, 0x0098, 0x0003, 0x0020,
+ 0x0013, 0x0098, 0x0003, 0x0020, 0x0016, 0x0098, 0x0003, 0x0020,
+ 0x0000, 0x0000, 0x000A, 0x0058, 0x000A, 0x0000, 0x000A, 0x0058,
+ 0x0014, 0x0000, 0x000A, 0x0058, 0x001E, 0x0000, 0x000A, 0x0058,
+ 0x0000, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058
+};
+
+static const Uint16Provider kEoB1EncodeMonsterDefsDOSProvider = { ARRAYSIZE(kEoB1EncodeMonsterDefsDOS), kEoB1EncodeMonsterDefsDOS };
+
+static const EoBCharacter kEoB1NpcPresetsDOS[9] = {
+ { 0x00, 0x01, "Anya",
+ 18, 18, 59, 59, 5, 5, 11, 11, 14, 14, 16, 16, 9, 9,
+ 45, 45, 10, 0, 1, 0, 2, -1, 100, { 4, 0, 0 },
+ { 0x00001F40, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Beohram",
+ 17, 17, 0, 0, 9, 9, 15, 15, 13, 13, 18, 18, 17, 17,
+ 55, 55, 10, 0, 0, 0, 0, -2, 100, { 7, 0, 0 },
+ { 0x000130B0, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Kirath",
+ 11, 11, 0, 0, 17, 17, 13, 13, 18, 18, 8, 8, 12, 12,
+ 20, 20, 10, 0, 4, 3, 4, -3, 100, { 7, 0, 0 },
+ { 0x00011170, 0x00000000, 0x00000000 }, 0x00B3126B,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Ileria",
+ 10, 10, 0, 0, 12, 12, 9, 9, 15, 15, 17, 17, 17, 17,
+ 52, 52, 10, 0, 4, 4, 0, -4, 100, { 6, 0, 0 },
+ { 0x00004E20, 0x00000000, 0x00000000 }, 0xFFFFFFFF,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Tyrra",
+ 16, 16, 0, 0, 14, 14, 16, 16, 18, 18, 17, 17, 7, 7,
+ 45, 45, 10, 0, 1, 1, 2, -5, 100, { 6, 0, 0 },
+ { 0x0000CF08, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Tod Uphill",
+ 17, 17, 0, 0, 11, 11, 14, 14, 19, 19, 18, 18, 16, 16,
+ 32, 32, 10, 0, 10, 5, 5, -6, 100, { 5, 0, 0 },
+ { 0x00002D3F, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Taghor",
+ 17, 17, 0, 0, 11, 11, 15, 15, 15, 15, 19, 19, 9, 9,
+ 3, 45, 3, 0, 6, 0, 1, -7, 25, { 5, 0, 0 },
+ { 0x00003F6A, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0029, 0x0000, 0x002B, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Dohrum",
+ 18, 18, 29, 29, 13, 13, 11, 11, 16, 16, 17, 17, 14, 14,
+ 28, 28, 10, 0, 6, 0, 0, -8, 100, { 3, 0, 0 },
+ { 0x000013A0, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0024, 0x0000, 0x0030, 0x0037, 0x0037, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0029, 0x0000, 0x002B, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Keirgar",
+ 18, 18, 92, 92, 15, 15, 15, 15, 12, 12, 19, 19, 17, 17,
+ 3, 45, 3, 0, 6, 0, 1, -9, 25, { 5, 0, 0 },
+ { 0x00001F40, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } }
+};
+
+static const EoBCharacterProvider kEoB1NpcPresetsDOSProvider = { ARRAYSIZE(kEoB1NpcPresetsDOS), kEoB1NpcPresetsDOS };
+
diff --git a/devtools/create_kyradat/resources/eob1_dos_english.h b/devtools/create_kyradat/resources/eob1_dos_english.h
new file mode 100644
index 0000000..8a9dfeb
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob1_dos_english.h
@@ -0,0 +1,891 @@
+static const char *const kEoB1ChargenStrings1DOSEnglish[9] = {
+ "Your party is\rcomplete. Select\rthe PLAY button\ror press 'P' to\rstart the game.",
+ " ",
+ "AC\rHP\rLVL",
+ "%s\r%d\r%d\r%d\r%d\r%d",
+ "%d\r%d",
+ "%d",
+ "%d/%d",
+ "%d/%d/%d",
+ "Select the box of\rthe character you\rwish to create or\rview."
+};
+
+static const StringListProvider kEoB1ChargenStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStrings1DOSEnglish), kEoB1ChargenStrings1DOSEnglish };
+
+static const char *const kEoB1ChargenStrings2DOSEnglish[12] = {
+ "%s",
+ "%d",
+ "%s",
+ "%d",
+ "%d",
+ "%d",
+ "%s",
+ "%d",
+ "SELECT RACE:",
+ "SELECT CLASS:",
+ "SELECT ALIGNMENT:",
+ "Name:"
+};
+
+static const StringListProvider kEoB1ChargenStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStrings2DOSEnglish), kEoB1ChargenStrings2DOSEnglish };
+
+static const char *const kEoB1ChargenStatStringsDOSEnglish[12] = {
+ "STR",
+ "INT",
+ "WIS",
+ "DEX",
+ "CON",
+ "CHA",
+ "STRENGTH",
+ "INTELLIGENCE",
+ "WISDOM",
+ "DEXTERITY",
+ "CONSTITUTION",
+ "CHARISMA"
+};
+
+static const StringListProvider kEoB1ChargenStatStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStatStringsDOSEnglish), kEoB1ChargenStatStringsDOSEnglish };
+
+static const char *const kEoB1ChargenRaceSexStringsDOSEnglish[12] = {
+ "HUMAN MALE",
+ "HUMAN FEMALE",
+ "ELF MALE",
+ "ELF FEMALE",
+ "HALF-ELF MALE",
+ "HALF-ELF FEMALE",
+ "DWARF MALE",
+ "DWARF FEMALE",
+ "GNOME MALE",
+ "GNOME FEMALE",
+ "HALFLING MALE",
+ "HALFLING FEMALE"
+};
+
+static const StringListProvider kEoB1ChargenRaceSexStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenRaceSexStringsDOSEnglish), kEoB1ChargenRaceSexStringsDOSEnglish };
+
+static const char *const kEoB1ChargenClassStringsDOSEnglish[21] = {
+ "FIGHTER",
+ "RANGER",
+ "PALADIN",
+ "MAGE",
+ "CLERIC",
+ "THIEF",
+ "FIGHTER/CLERIC",
+ "FIGHTER/THIEF",
+ "FIGHTER/MAGE",
+ "FIGHTER/MAGE/THIEF",
+ "THIEF/MAGE",
+ "CLERIC/THIEF",
+ "FIGHTER/CLERIC/MAGE",
+ "RANGER/CLERIC",
+ "CLERIC/MAGE",
+ "FIGHTER",
+ "MAGE",
+ "CLERIC",
+ "THIEF",
+ "PALADIN",
+ "RANGER"
+};
+
+static const StringListProvider kEoB1ChargenClassStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenClassStringsDOSEnglish), kEoB1ChargenClassStringsDOSEnglish };
+
+static const char *const kEoB1ChargenAlignmentStringsDOSEnglish[9] = {
+ "LAWFUL GOOD",
+ "NEUTRAL GOOD",
+ "CHAOTIC GOOD",
+ "LAWFUL NEUTRAL",
+ "TRUE NEUTRAL",
+ "CHAOTIC NEUTRAL",
+ "LAWFUL EVIL",
+ "NEUTRAL EVIL",
+ "CHAOTIC EVIL"
+};
+
+static const StringListProvider kEoB1ChargenAlignmentStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenAlignmentStringsDOSEnglish), kEoB1ChargenAlignmentStringsDOSEnglish };
+
+static const char *const kEoB1ChargenEnterGameStringsDOSEnglish[1] = {
+ " Entering game.\r Please wait."
+};
+
+static const StringListProvider kEoB1ChargenEnterGameStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenEnterGameStringsDOSEnglish), kEoB1ChargenEnterGameStringsDOSEnglish };
+
+static const char *const kEoB1MainMenuStringsDOSEnglish[3] = {
+ "LOAD GAME IN PROGRESS\r",
+ "START A NEW PARTY\r",
+ "EXIT TO DOS\r"
+};
+
+static const StringListProvider kEoB1MainMenuStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MainMenuStringsDOSEnglish), kEoB1MainMenuStringsDOSEnglish };
+
+static const char *const kEoB1BonusStringsDOSEnglish[3] = {
+ "Congratulations on completing all 12 Beholder Bonuses.\r\rThe names of the character in your winning Beholder Bonus party are:\r\r",
+ "\r",
+ "\r\rPassword: %04x\r"
+};
+
+static const StringListProvider kEoB1BonusStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1BonusStringsDOSEnglish), kEoB1BonusStringsDOSEnglish };
+
+static const char *const kEoB1TurnUndeadStringDOSEnglish[1] = {
+ "\x06\x06""%s uses the power to turn undead!""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB1TurnUndeadStringDOSEnglishProvider = { ARRAYSIZE(kEoB1TurnUndeadStringDOSEnglish), kEoB1TurnUndeadStringDOSEnglish };
+
+static const char *const kEoB1Npc0StringsDOSEnglish[2] = {
+ "\r I wish you luck in your travels.",
+ "Which should be resurrected?"
+};
+
+static const StringListProvider kEoB1Npc0StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc0StringsDOSEnglish), kEoB1Npc0StringsDOSEnglish };
+
+static const char *const kEoB1Npc11StringsDOSEnglish[3] = {
+ "Tend his wounds",
+ "Talk",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc11StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc11StringsDOSEnglish), kEoB1Npc11StringsDOSEnglish };
+
+static const char *const kEoB1Npc12StringsDOSEnglish[2] = {
+ "Tend his wounds",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc12StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc12StringsDOSEnglish), kEoB1Npc12StringsDOSEnglish };
+
+static const char *const kEoB1Npc21StringsDOSEnglish[2] = {
+ "Hear proposal",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc21StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc21StringsDOSEnglish), kEoB1Npc21StringsDOSEnglish };
+
+static const char *const kEoB1Npc22StringsDOSEnglish[2] = {
+ "Help him",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc22StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc22StringsDOSEnglish), kEoB1Npc22StringsDOSEnglish };
+
+static const char *const kEoB1Npc31StringsDOSEnglish[2] = {
+ "Heal Party",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc31StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc31StringsDOSEnglish), kEoB1Npc31StringsDOSEnglish };
+
+static const char *const kEoB1Npc32StringsDOSEnglish[3] = {
+ "Heal Party",
+ "Resurrect Dead",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc32StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc32StringsDOSEnglish), kEoB1Npc32StringsDOSEnglish };
+
+static const char *const kEoB1Npc4StringsDOSEnglish[2] = {
+ "Attack",
+ "Bribe"
+};
+
+static const StringListProvider kEoB1Npc4StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc4StringsDOSEnglish), kEoB1Npc4StringsDOSEnglish };
+
+static const char *const kEoB1Npc5StringsDOSEnglish[3] = {
+ "Kill her",
+ "Hear her out",
+ "Let her go"
+};
+
+static const StringListProvider kEoB1Npc5StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc5StringsDOSEnglish), kEoB1Npc5StringsDOSEnglish };
+
+static const char *const kEoB1Npc6StringsDOSEnglish[2] = {
+ "Surrender",
+ "Attack"
+};
+
+static const StringListProvider kEoB1Npc6StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc6StringsDOSEnglish), kEoB1Npc6StringsDOSEnglish };
+
+static const char *const kEoB1Npc7StringsDOSEnglish[3] = {
+ "Free Him",
+ "Kill Him",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc7StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc7StringsDOSEnglish), kEoB1Npc7StringsDOSEnglish };
+
+static const char *const kEoB1PryDoorStringsDOSEnglish[7] = {
+ "Nobody is able to force the door.\r",
+ "The party forces the door.\r",
+ "%s forces the door!\r",
+ "The party tries to force the door and fails.\r",
+ "You can't put that item there.\r",
+ "The item is too large to fit.\r",
+ "No one is able to pry this door open.\r"
+};
+
+static const StringListProvider kEoB1PryDoorStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PryDoorStringsDOSEnglish), kEoB1PryDoorStringsDOSEnglish };
+
+static const char *const kEoB1WarningStringsDOSEnglish[3] = {
+ "You can't go that way.\r",
+ "%s isn't capable of eating food!\r",
+ "You may only eat food!\r"
+};
+
+static const StringListProvider kEoB1WarningStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1WarningStringsDOSEnglish), kEoB1WarningStringsDOSEnglish };
+
+static const char *const kEoB1ItemSuffixStringsRingsDOSEnglish[4] = {
+ "Adornment",
+ "Wizardry",
+ "Sustenance",
+ "Feather Fall"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsRingsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsRingsDOSEnglish), kEoB1ItemSuffixStringsRingsDOSEnglish };
+
+static const char *const kEoB1ItemSuffixStringsPotionsDOSEnglish[8] = {
+ "Giant Strength",
+ "Healing",
+ "Extra Healing",
+ "Poison",
+ "Vitality",
+ "Speed",
+ "Invisibility",
+ "Cure Poison"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsPotionsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsPotionsDOSEnglish), kEoB1ItemSuffixStringsPotionsDOSEnglish };
+
+static const char *const kEoB1ItemSuffixStringsWandsDOSEnglish[7] = {
+ "Stick",
+ "Lightning",
+ "Frost",
+ "Curing",
+ "Fireball",
+ "Silvias",
+ "Magic Missile"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsWandsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsWandsDOSEnglish), kEoB1ItemSuffixStringsWandsDOSEnglish };
+
+static const char *const kEoB1RipItemStringsDOSEnglish[3] = {
+ "%s has lost her ",
+ "%s has lost his ",
+ ".\r"
+};
+
+static const StringListProvider kEoB1RipItemStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1RipItemStringsDOSEnglish), kEoB1RipItemStringsDOSEnglish };
+
+static const char *const kEoB1CursedStringDOSEnglish[1] = {
+ "Cursed %s %d"
+};
+
+static const StringListProvider kEoB1CursedStringDOSEnglishProvider = { ARRAYSIZE(kEoB1CursedStringDOSEnglish), kEoB1CursedStringDOSEnglish };
+
+static const char *const kEoB1MagicObjectStringsDOSEnglish[5] = {
+ "Mage Scroll",
+ "Cleric Scroll",
+ "Ring",
+ "Potion",
+ "Wand"
+};
+
+static const StringListProvider kEoB1MagicObjectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MagicObjectStringsDOSEnglish), kEoB1MagicObjectStringsDOSEnglish };
+
+static const char *const kEoB1MagicObjectString5DOSEnglish[1] = {
+ "Stick"
+};
+
+static const StringListProvider kEoB1MagicObjectString5DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicObjectString5DOSEnglish), kEoB1MagicObjectString5DOSEnglish };
+
+static const char *const kEoB1PatternSuffixDOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB1PatternSuffixDOSEnglishProvider = { ARRAYSIZE(kEoB1PatternSuffixDOSEnglish), kEoB1PatternSuffixDOSEnglish };
+
+static const char *const kEoB1PatternGrFix1DOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB1PatternGrFix1DOSEnglishProvider = { ARRAYSIZE(kEoB1PatternGrFix1DOSEnglish), kEoB1PatternGrFix1DOSEnglish };
+
+static const char *const kEoB1PatternGrFix2DOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB1PatternGrFix2DOSEnglishProvider = { ARRAYSIZE(kEoB1PatternGrFix2DOSEnglish), kEoB1PatternGrFix2DOSEnglish };
+
+static const char *const kEoB1ValidateArmorStringDOSEnglish[1] = {
+ "%s can't wear that type of armor.\r"
+};
+
+static const StringListProvider kEoB1ValidateArmorStringDOSEnglishProvider = { ARRAYSIZE(kEoB1ValidateArmorStringDOSEnglish), kEoB1ValidateArmorStringDOSEnglish };
+
+static const char *const kEoB1ValidateNoDropStringDOSEnglish[1] = {
+ "You cant put that item there.\r"
+};
+
+static const StringListProvider kEoB1ValidateNoDropStringDOSEnglishProvider = { ARRAYSIZE(kEoB1ValidateNoDropStringDOSEnglish), kEoB1ValidateNoDropStringDOSEnglish };
+
+static const char *const kEoB1PotionStringsDOSEnglish[2] = {
+ "poisoned",
+ "%s feels %s!\r"
+};
+
+static const StringListProvider kEoB1PotionStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PotionStringsDOSEnglish), kEoB1PotionStringsDOSEnglish };
+
+static const char *const kEoB1WandStringsDOSEnglish[2] = {
+ "The wand has no apparent magical effect\r",
+ "no effect.\r"
+};
+
+static const StringListProvider kEoB1WandStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1WandStringsDOSEnglish), kEoB1WandStringsDOSEnglish };
+
+static const char *const kEoB1ItemMisuseStringsDOSEnglish[3] = {
+ " can not use this item.\r",
+ "This item automatically used when worn.\r",
+ "This item is not used in this way.\r"
+};
+
+static const StringListProvider kEoB1ItemMisuseStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemMisuseStringsDOSEnglish), kEoB1ItemMisuseStringsDOSEnglish };
+
+static const char *const kEoB1TakenStringsDOSEnglish[1] = {
+ " taken.\r"
+};
+
+static const StringListProvider kEoB1TakenStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1TakenStringsDOSEnglish), kEoB1TakenStringsDOSEnglish };
+
+static const char *const kEoB1PotionEffectStringsDOSEnglish[8] = {
+ "much stronger",
+ "better",
+ "much better",
+ "ill for a moment",
+ "no longer hungry",
+ "fast and agile",
+ "transparent",
+ "better"
+};
+
+static const StringListProvider kEoB1PotionEffectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PotionEffectStringsDOSEnglish), kEoB1PotionEffectStringsDOSEnglish };
+
+static const char *const kEoB1YesNoStringsDOSEnglish[2] = {
+ "yes",
+ "no"
+};
+
+static const StringListProvider kEoB1YesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1YesNoStringsDOSEnglish), kEoB1YesNoStringsDOSEnglish };
+
+static const char *const kEoB1MoreStringsDOSEnglish[1] = {
+ "MORE"
+};
+
+static const StringListProvider kEoB1MoreStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MoreStringsDOSEnglish), kEoB1MoreStringsDOSEnglish };
+
+static const char *const kEoB1NpcMaxStringsDOSEnglish[1] = {
+ "You may only have six characters in your party. Select the one you wish to drop."
+};
+
+static const StringListProvider kEoB1NpcMaxStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1NpcMaxStringsDOSEnglish), kEoB1NpcMaxStringsDOSEnglish };
+
+static const char *const kEoB1NpcJoinStringsDOSEnglish[1] = {
+ "%s joins the party.\r"
+};
+
+static const StringListProvider kEoB1NpcJoinStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1NpcJoinStringsDOSEnglish), kEoB1NpcJoinStringsDOSEnglish };
+
+static const char *const kEoB1CancelStringsDOSEnglish[1] = {
+ "CANCEL"
+};
+
+static const StringListProvider kEoB1CancelStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1CancelStringsDOSEnglish), kEoB1CancelStringsDOSEnglish };
+
+static const char *const kEoB1MenuStringsMainDOSEnglish[8] = {
+ "Select Option:",
+ "Rest Party",
+ "Memorize Spells",
+ "Pray for Spells",
+ "Scribe Scrolls",
+ "Preferences",
+ "Game Options",
+ "Exit"
+};
+
+static const StringListProvider kEoB1MenuStringsMainDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsMainDOSEnglish), kEoB1MenuStringsMainDOSEnglish };
+
+static const char *const kEoB1MenuStringsSaveLoadDOSEnglish[8] = {
+ "Load Game",
+ "Save Game",
+ "Drop Character",
+ "Quit Game",
+ "Game Options:",
+ "\r Game saved.",
+ "\r Save game\r failure!",
+ "\r Load game\r failure!"
+};
+
+static const StringListProvider kEoB1MenuStringsSaveLoadDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsSaveLoadDOSEnglish), kEoB1MenuStringsSaveLoadDOSEnglish };
+
+static const char *const kEoB1MenuStringsOnOffDOSEnglish[2] = {
+ "ON",
+ "OFF"
+};
+
+static const StringListProvider kEoB1MenuStringsOnOffDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsOnOffDOSEnglish), kEoB1MenuStringsOnOffDOSEnglish };
+
+static const char *const kEoB1MenuStringsSpellsDOSEnglish[17] = {
+ "\r\r Select a character\r from your party who\r would like to learn\r spells.",
+ "\r Your Paladin is \r too low a level\r for spells.",
+ "\r\r The Mage has no\r Spell Book!",
+ "\r\r\r Select a character\r from your party\r who would like to\r pray for spells.",
+ "\r You don't have\r any Cleric able\r to pray in your\r party.",
+ "\r You don't have\r any Mage able to\r learn spells.",
+ " An unconscious\r or dead Mage\r cannot memorize\r spells.",
+ " An unconscious\r or dead Cleric\r cannot pray for\r spells.",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "Clear",
+ "Spells Available:",
+ "Yes",
+ "No"
+};
+
+static const StringListProvider kEoB1MenuStringsSpellsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsSpellsDOSEnglish), kEoB1MenuStringsSpellsDOSEnglish };
+
+static const char *const kEoB1MenuStringsRestDOSEnglish[5] = {
+ "\rWill your healers\rheal the party?",
+ " Someone is still\r injured. Rest\r until healed?",
+ "Resting party.",
+ "\r All characters\r are fully\r rested.",
+ " Your party needs\r to rest to gain\r spells."
+};
+
+static const StringListProvider kEoB1MenuStringsRestDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRestDOSEnglish), kEoB1MenuStringsRestDOSEnglish };
+
+static const char *const kEoB1MenuStringsDropDOSEnglish[1] = {
+ " You cannot have\r less than four\r characters."
+};
+
+static const StringListProvider kEoB1MenuStringsDropDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDropDOSEnglish), kEoB1MenuStringsDropDOSEnglish };
+
+static const char *const kEoB1MenuStringsExitDOSEnglish[1] = {
+ " Are you sure you\r wish to exit the\r game?"
+};
+
+static const StringListProvider kEoB1MenuStringsExitDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsExitDOSEnglish), kEoB1MenuStringsExitDOSEnglish };
+
+static const char *const kEoB1MenuStringsStarveDOSEnglish[1] = {
+ " Your party is\r starving. Do you\r wish to continue\r resting?"
+};
+
+static const StringListProvider kEoB1MenuStringsStarveDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsStarveDOSEnglish), kEoB1MenuStringsStarveDOSEnglish };
+
+static const char *const kEoB1MenuStringsScribeDOSEnglish[5] = {
+ "Select the scroll(s)\ryou wish to scribe.",
+ "\r\r\r Select a Mage\r from your party\r who would like to\r scribe spells.",
+ " You don't have\r any scolls to be\r scribed.",
+ " You don't have\r any scrolls that\r this Mage needs.",
+ "\r You don't have\r any Mage able to\r scribe scrolls."
+};
+
+static const StringListProvider kEoB1MenuStringsScribeDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsScribeDOSEnglish), kEoB1MenuStringsScribeDOSEnglish };
+
+static const char *const kEoB1MenuStringsDrop2DOSEnglish[3] = {
+ " Select the\r character you\r wish to drop.",
+ " Are you sure you\r wish to SAVE the\r game?",
+ " Are you sure you\r wish to LOAD a\r saved game?"
+};
+
+static const StringListProvider kEoB1MenuStringsDrop2DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDrop2DOSEnglish), kEoB1MenuStringsDrop2DOSEnglish };
+
+static const char *const kEoB1MenuStringsHeadDOSEnglish[3] = {
+ "Camp:",
+ "Preferences:",
+ "Game Options:"
+};
+
+static const StringListProvider kEoB1MenuStringsHeadDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsHeadDOSEnglish), kEoB1MenuStringsHeadDOSEnglish };
+
+static const char *const kEoB1MenuStringsPoisonDOSEnglish[1] = {
+ "Poisoned party\rmembers will die!\rRest anyway?"
+};
+
+static const StringListProvider kEoB1MenuStringsPoisonDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsPoisonDOSEnglish), kEoB1MenuStringsPoisonDOSEnglish };
+
+static const char *const kEoB1MenuStringsMgcDOSEnglish[2] = {
+ "%-18s %1d",
+ "%d of %d Remaining. "
+};
+
+static const StringListProvider kEoB1MenuStringsMgcDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsMgcDOSEnglish), kEoB1MenuStringsMgcDOSEnglish };
+
+static const char *const kEoB1MenuStringsPrefsDOSEnglish[4] = {
+ "Tunes are %-3s",
+ "Sounds are %-3s",
+ "Bar Graphs are %-3s",
+ "Mouse is %-3s"
+};
+
+static const StringListProvider kEoB1MenuStringsPrefsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsPrefsDOSEnglish), kEoB1MenuStringsPrefsDOSEnglish };
+
+static const char *const kEoB1MenuStringsRest2DOSEnglish[4] = {
+ "%s gained %s.\r",
+ "%s memorized %s.\r",
+ "%s casts healing on %s.\r",
+ "Hours rested: %-4d"
+};
+
+static const StringListProvider kEoB1MenuStringsRest2DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRest2DOSEnglish), kEoB1MenuStringsRest2DOSEnglish };
+
+static const char *const kEoB1MenuStringsRest4DOSEnglish[1] = {
+ "\rYou can't rest here, monsters are near."
+};
+
+static const StringListProvider kEoB1MenuStringsRest4DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRest4DOSEnglish), kEoB1MenuStringsRest4DOSEnglish };
+
+static const char *const kEoB1MenuStringsDefeatDOSEnglish[1] = {
+ "All of your party has been defeated. The minions of evil will be able to carry out their plans unhindered!\r"
+};
+
+static const StringListProvider kEoB1MenuStringsDefeatDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDefeatDOSEnglish), kEoB1MenuStringsDefeatDOSEnglish };
+
+static const char *const kEoB1MenuYesNoStringsDOSEnglish[2] = {
+ "Yes",
+ "No"
+};
+
+static const StringListProvider kEoB1MenuYesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuYesNoStringsDOSEnglish), kEoB1MenuYesNoStringsDOSEnglish };
+
+static const char *const kEoB1CharGuiStringsHpDOSEnglish[2] = {
+ "HP",
+ "%3d of %-3d"
+};
+
+static const StringListProvider kEoB1CharGuiStringsHpDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsHpDOSEnglish), kEoB1CharGuiStringsHpDOSEnglish };
+
+static const char *const kEoB1CharGuiStringsWp1DOSEnglish[2] = {
+ "MISS",
+ "HACK"
+};
+
+static const StringListProvider kEoB1CharGuiStringsWp1DOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsWp1DOSEnglish), kEoB1CharGuiStringsWp1DOSEnglish };
+
+static const char *const kEoB1CharGuiStringsWrDOSEnglish[4] = {
+ "CAN'T",
+ "REACH",
+ "NO",
+ "AMMO"
+};
+
+static const StringListProvider kEoB1CharGuiStringsWrDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsWrDOSEnglish), kEoB1CharGuiStringsWrDOSEnglish };
+
+static const char *const kEoB1CharGuiStringsSt1DOSEnglish[6] = {
+ "Swapping",
+ "DEAD",
+ "UNCONSCIOUS",
+ "POISON (SLOW)",
+ "POISONED",
+ "PARALYZED"
+};
+
+static const StringListProvider kEoB1CharGuiStringsSt1DOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsSt1DOSEnglish), kEoB1CharGuiStringsSt1DOSEnglish };
+
+static const char *const kEoB1CharGuiStringsInDOSEnglish[4] = {
+ "CHARACTER INFO",
+ "ARMOR CLASS",
+ "EXP",
+ "LVL"
+};
+
+static const StringListProvider kEoB1CharGuiStringsInDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsInDOSEnglish), kEoB1CharGuiStringsInDOSEnglish };
+
+static const char *const kEoB1CharStatusStrings7DOSEnglish[1] = {
+ "%s no longer has giant strength.\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings7DOSEnglish), kEoB1CharStatusStrings7DOSEnglish };
+
+static const char *const kEoB1CharStatusStrings81DOSEnglish[1] = {
+ "%s feels the effects of poison!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings81DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings81DOSEnglish), kEoB1CharStatusStrings81DOSEnglish };
+
+static const char *const kEoB1CharStatusStrings9DOSEnglish[1] = {
+ "%s is no longer paralyzed!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings9DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings9DOSEnglish), kEoB1CharStatusStrings9DOSEnglish };
+
+static const char *const kEoB1CharStatusStrings131DOSEnglish[1] = {
+ "%s is %s!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings131DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings131DOSEnglish), kEoB1CharStatusStrings131DOSEnglish };
+
+static const char *const kEoB1LevelGainStringsDOSEnglish[1] = {
+ "\x06\x01""%s has gained a level of experience.""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB1LevelGainStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1LevelGainStringsDOSEnglish), kEoB1LevelGainStringsDOSEnglish };
+
+static const char *const kEoB1BookNumbersDOSEnglish[5] = {
+ "First",
+ "Second",
+ "Third",
+ "Fourth",
+ "Fifth"
+};
+
+static const StringListProvider kEoB1BookNumbersDOSEnglishProvider = { ARRAYSIZE(kEoB1BookNumbersDOSEnglish), kEoB1BookNumbersDOSEnglish };
+
+static const char *const kEoB1MageSpellsListDOSEnglish[26] = {
+ "",
+ "Armor",
+ "Burning Hands",
+ "Detect Magic",
+ "Magic Missile",
+ "Read Magic",
+ "Shield",
+ "Shocking Grasp",
+ "Invisibility",
+ "Knock",
+ "M's Acid Arrow",
+ "Stinking Cloud",
+ "Dispel Magic",
+ "Fireball",
+ "Flame Arrow",
+ "Haste",
+ "Hold Person",
+ "Invisibility 10'",
+ "Lightning Bolt",
+ "Vampiric Touch",
+ "Fear",
+ "Ice Storm",
+ "Stoneskin",
+ "Cloudkill",
+ "Cone of Cold",
+ "Hold Monster"
+};
+
+static const StringListProvider kEoB1MageSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB1MageSpellsListDOSEnglish), kEoB1MageSpellsListDOSEnglish };
+
+static const char *const kEoB1ClericSpellsListDOSEnglish[25] = {
+ "",
+ "Bless",
+ "Cure Light Wnds",
+ "Cause Light Wnds",
+ "Detect Magic",
+ "Protect-Evil",
+ "Aid",
+ "Flame Blade",
+ "Hold Person",
+ "Slow Poison",
+ "Create Food",
+ "Dispel Magic",
+ "Magical Vestment",
+ "Prayer",
+ "Remove Paralysis",
+ "Cure Serious",
+ "Cause Serious",
+ "Neutral-Poison",
+ "Protect-Evil 10'",
+ "Protect-Lightning",
+ "Cure Critical",
+ "Cause Critical",
+ "Flame Strike",
+ "Raise Dead",
+ "Lay on Hands"
+};
+
+static const StringListProvider kEoB1ClericSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB1ClericSpellsListDOSEnglish), kEoB1ClericSpellsListDOSEnglish };
+
+static const char *const kEoB1SpellNamesDOSEnglish[51] = {
+ "",
+ "armor",
+ "burning hands",
+ "detect magic",
+ "magic missile",
+ "shield",
+ "shocking grasp",
+ "invisibility",
+ "melf's acid arrow",
+ "stinking cloud",
+ "dispel magic",
+ "fireball",
+ "flame arrow",
+ "haste",
+ "hold person",
+ "invisibility 10' radius",
+ "lightning bolt",
+ "vampiric touch",
+ "fear",
+ "ice storm",
+ "stoneskin",
+ "cloudkill",
+ "cone of cold",
+ "hold monster",
+ "bless",
+ "cure light wounds",
+ "cause light wounds",
+ "detect magic",
+ "protection from evil",
+ "aid",
+ "flame blade",
+ "hold person",
+ "slow poison",
+ "create food",
+ "dispel magic",
+ "magical vestment",
+ "prayer",
+ "remove paralysis",
+ "cure serious wounds",
+ "cause serious wounds",
+ "neutralize poison",
+ "protection from evil 10' radius",
+ "protection from lightning",
+ "cure critical wounds",
+ "cause critical wounds",
+ "flame strike",
+ "raise dead",
+ "lay on hands",
+ "",
+ "",
+ ""
+};
+
+static const StringListProvider kEoB1SpellNamesDOSEnglishProvider = { ARRAYSIZE(kEoB1SpellNamesDOSEnglish), kEoB1SpellNamesDOSEnglish };
+
+static const char *const kEoB1MagicStrings1DOSEnglish[6] = {
+ "ABORT SPELL",
+ "ABORT SPELL",
+ "You must have a free hand for this spell.\r",
+ "You can't have two of this spell type active.\r",
+ "%s casts %s.\r",
+ "ok\r"
+};
+
+static const StringListProvider kEoB1MagicStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings1DOSEnglish), kEoB1MagicStrings1DOSEnglish };
+
+static const char *const kEoB1MagicStrings2DOSEnglish[3] = {
+ "no effect\r",
+ "%s has been disintegrated!\r",
+ "The party has been hit by a death spell!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings2DOSEnglish), kEoB1MagicStrings2DOSEnglish };
+
+static const char *const kEoB1MagicStrings3DOSEnglish[6] = {
+ "Cast spell on which character? ",
+ "\rok\r",
+ "\rSpell aborted.\r",
+ "%s's %s spell expires.\r",
+ "%s missed the monster.\r",
+ "%s must be in the front ranks to hit!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings3DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings3DOSEnglish), kEoB1MagicStrings3DOSEnglish };
+
+static const char *const kEoB1MagicStrings4DOSEnglish[1] = {
+ "no effect.\r"
+};
+
+static const StringListProvider kEoB1MagicStrings4DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings4DOSEnglish), kEoB1MagicStrings4DOSEnglish };
+
+static const char *const kEoB1MagicStrings6DOSEnglish[1] = {
+ "%s already has a high base armor class.\r"
+};
+
+static const StringListProvider kEoB1MagicStrings6DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings6DOSEnglish), kEoB1MagicStrings6DOSEnglish };
+
+static const char *const kEoB1MagicStrings7DOSEnglish[5] = {
+ "1ST",
+ "2ND",
+ "3RD",
+ "4TH",
+ "5TH"
+};
+
+static const StringListProvider kEoB1MagicStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings7DOSEnglish), kEoB1MagicStrings7DOSEnglish };
+
+static const char *const kEoB1MagicStrings8DOSEnglish[3] = {
+ "All spells on %s are dispelled.\r",
+ "The party is already blessed!\r",
+ "The aid spell fails!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings8DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings8DOSEnglish), kEoB1MagicStrings8DOSEnglish };
+
+static const byte kEoB1ManDefDOSEnglish[120] = {
+ 0x09, 0x0A, 0x02, 0x00, 0x09, 0x04, 0x03, 0x00,
+ 0x09, 0x06, 0x06, 0x00, 0x09, 0x03, 0x03, 0x00,
+ 0x09, 0x04, 0x02, 0x00, 0x09, 0x01, 0x02, 0x00,
+ 0x09, 0x05, 0x01, 0x00, 0x09, 0x09, 0x02, 0x00,
+ 0x09, 0x06, 0x02, 0x00, 0x23, 0x01, 0x05, 0x00,
+ 0x23, 0x02, 0x02, 0x00, 0x23, 0x03, 0x06, 0x00,
+ 0x23, 0x05, 0x01, 0x00, 0x23, 0x06, 0x03, 0x00,
+ 0x23, 0x07, 0x01, 0x00, 0x1A, 0x01, 0x01, 0x00,
+ 0x1A, 0x03, 0x02, 0x00, 0x1A, 0x06, 0x01, 0x00,
+ 0x24, 0x01, 0x03, 0x00, 0x24, 0x03, 0x04, 0x00,
+ 0x24, 0x03, 0x01, 0x00, 0x02, 0x04, 0x03, 0x00,
+ 0x02, 0x03, 0x03, 0x00, 0x02, 0x05, 0x03, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00,
+ 0x01, 0x04, 0x03, 0x00, 0x0C, 0x02, 0x01, 0x00,
+ 0x0C, 0x03, 0x03, 0x00, 0x0C, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1ManDefDOSEnglishProvider = { ARRAYSIZE(kEoB1ManDefDOSEnglish), kEoB1ManDefDOSEnglish };
+
+static const char *const kEoB1ManWordDOSEnglish[31] = {
+ "attacks",
+ "short",
+ "line",
+ "weapons",
+ "certain",
+ "rank",
+ "rear",
+ "can",
+ "away",
+ "dungeon",
+ "cursor",
+ "feature",
+ "information",
+ "displayed",
+ "below",
+ "around",
+ "carefree",
+ "gnomes",
+ "clerics",
+ "mystic",
+ "pummel",
+ "fitness",
+ "using",
+ "toughness",
+ "wealth",
+ "wizard",
+ "officials",
+ "hound",
+ "disturbing",
+ "flaming",
+ ""
+};
+
+static const StringListProvider kEoB1ManWordDOSEnglishProvider = { ARRAYSIZE(kEoB1ManWordDOSEnglish), kEoB1ManWordDOSEnglish };
+
+static const char *const kEoB1ManPromptDOSEnglish[1] = {
+ "\r\r\r\rOn the page with this symbol...\r\rFind line %d\rEnter word %d\r"
+};
+
+static const StringListProvider kEoB1ManPromptDOSEnglishProvider = { ARRAYSIZE(kEoB1ManPromptDOSEnglish), kEoB1ManPromptDOSEnglish };
+
+static const char *const kEoB1MonsterDistAttStringsDOSEnglish[5] = {
+ "%s is hit by a cause serious wounds spell!\r",
+ "The party is hit with a psychic mind blast!\r",
+ "paralyzed",
+ "poisoned",
+ "paralyzed"
+};
+
+static const StringListProvider kEoB1MonsterDistAttStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MonsterDistAttStringsDOSEnglish), kEoB1MonsterDistAttStringsDOSEnglish };
+
diff --git a/devtools/create_kyradat/resources/eob1_dos_german.h b/devtools/create_kyradat/resources/eob1_dos_german.h
new file mode 100644
index 0000000..09b90e3
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob1_dos_german.h
@@ -0,0 +1,889 @@
+static const char *const kEoB1ChargenStrings1DOSGerman[9] = {
+ "Ihr Team ist\rkomplett. SPIEL-\rKnopf oder 'P'\rdruecken, um zu\rbeginnen.",
+ " ",
+ "RK\rHP\rEBN",
+ "%s\r%d\r%d\r%d\r%d\r%d",
+ "%d\r%d",
+ "%d",
+ "%d/%d",
+ "%d/%d/%d",
+ "Waehle das Feld\rdes Charakters\rzum erstellen oder\ranschauen."
+};
+
+static const StringListProvider kEoB1ChargenStrings1DOSGermanProvider = { ARRAYSIZE(kEoB1ChargenStrings1DOSGerman), kEoB1ChargenStrings1DOSGerman };
+
+static const char *const kEoB1ChargenStrings2DOSGerman[12] = {
+ "%s",
+ "%d",
+ "%s",
+ "%d",
+ "%d",
+ "%d",
+ "%s",
+ "%d",
+ "WAEHLE RASSE:",
+ "WAEHLE KLASSE:",
+ "GESINNUNG WAEHLEN:",
+ "Name:"
+};
+
+static const StringListProvider kEoB1ChargenStrings2DOSGermanProvider = { ARRAYSIZE(kEoB1ChargenStrings2DOSGerman), kEoB1ChargenStrings2DOSGerman };
+
+static const char *const kEoB1ChargenStatStringsDOSGerman[12] = {
+ "STR",
+ "INT",
+ "WEI",
+ "GEW",
+ "KON",
+ "CHA",
+ "STAERKE",
+ "INTELLIGENZ",
+ "WEISHEIT",
+ "GEWANDHEIT",
+ "KONSTITUTION",
+ "CHARISMA"
+};
+
+static const StringListProvider kEoB1ChargenStatStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenStatStringsDOSGerman), kEoB1ChargenStatStringsDOSGerman };
+
+static const char *const kEoB1ChargenRaceSexStringsDOSGerman[12] = {
+ "MENSCH MAENNL.",
+ "MENSCH WEIBL.",
+ "ELF MAENNL.",
+ "ELF WEIBL.",
+ "HALB-ELF MAENNL.",
+ "HALB-ELF WEIBL.",
+ "ZWERG MAENNL.",
+ "ZWERG WEIBL.",
+ "GNOM MAENNL.",
+ "GNOM WEIBL.",
+ "HALBLING MAENNL.",
+ "HALBLING WEIBL."
+};
+
+static const StringListProvider kEoB1ChargenRaceSexStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenRaceSexStringsDOSGerman), kEoB1ChargenRaceSexStringsDOSGerman };
+
+static const char *const kEoB1ChargenClassStringsDOSGerman[21] = {
+ "KAEMPFER",
+ "WALDLAEUFER",
+ "PALADIN",
+ "MAGIER",
+ "KLERIKER",
+ "DIEB",
+ "KAEMPFER/KLERIKER",
+ "KAEMPFER/DIEB",
+ "KAEMPFER/MAGIER",
+ "KAEMPF./MAGIER/DIEB",
+ "DIEB/MAGIER",
+ "KLERIKER/DIEB",
+ "KAEMPF./KLE./MAGIER",
+ "WALDLAEUF./KLERIKER",
+ "KLERIKER/MAGIER",
+ "KAEMPFER",
+ "MAGIER",
+ "KLERIKER",
+ "DIEB",
+ "PALADIN",
+ "WALDLAEUFER"
+};
+
+static const StringListProvider kEoB1ChargenClassStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenClassStringsDOSGerman), kEoB1ChargenClassStringsDOSGerman };
+
+static const char *const kEoB1ChargenAlignmentStringsDOSGerman[9] = {
+ "RECHTSCH. GUT",
+ "NEUTRAL GUT",
+ "CHAOTISCH GUT",
+ "RECHTSCH. NEUTRAL",
+ "ABSOLUT NEUTRAL",
+ "CHAOTISCH NEUTRAL",
+ "RECHTSCH. BOESE",
+ "NEUTRAL BOESE",
+ "CHAOTISCH BOESE"
+};
+
+static const StringListProvider kEoB1ChargenAlignmentStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenAlignmentStringsDOSGerman), kEoB1ChargenAlignmentStringsDOSGerman };
+
+static const char *const kEoB1ChargenEnterGameStringsDOSGerman[1] = {
+ " Spiel startet.\r Bitte warten."
+};
+
+static const StringListProvider kEoB1ChargenEnterGameStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenEnterGameStringsDOSGerman), kEoB1ChargenEnterGameStringsDOSGerman };
+
+static const char *const kEoB1MainMenuStringsDOSGerman[3] = {
+ "ALTES SPIEL LADEN\r",
+ "NEUES TEAM AUFBAUEN\r",
+ "ENDE > DOS\r"
+};
+
+static const StringListProvider kEoB1MainMenuStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MainMenuStringsDOSGerman), kEoB1MainMenuStringsDOSGerman };
+
+static const char *const kEoB1BonusStringsDOSGerman[3] = {
+ "Herzlichen Glueckwunsch fuer das Auffinden aller 12 Beholder-Boni.\r\rDie beteiligten Charaktere des gluecklichen Teams waren:\r\r",
+ "\r",
+ "\r\rPasswort: %04x\r"
+};
+
+static const StringListProvider kEoB1BonusStringsDOSGermanProvider = { ARRAYSIZE(kEoB1BonusStringsDOSGerman), kEoB1BonusStringsDOSGerman };
+
+static const char *const kEoB1TurnUndeadStringDOSGerman[1] = {
+ "\x06\x06""%s benutzt Magie, um Untote zu vertreiben!""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB1TurnUndeadStringDOSGermanProvider = { ARRAYSIZE(kEoB1TurnUndeadStringDOSGerman), kEoB1TurnUndeadStringDOSGerman };
+
+static const char *const kEoB1Npc0StringsDOSGerman[2] = {
+ "\r Ich wuensche Euch Glueck auf Euren Reisen.",
+ "Wer soll wiedererweckt werden?"
+};
+
+static const StringListProvider kEoB1Npc0StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc0StringsDOSGerman), kEoB1Npc0StringsDOSGerman };
+
+static const char *const kEoB1Npc11StringsDOSGerman[3] = {
+ "Wunden heilen",
+ "Reden",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc11StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc11StringsDOSGerman), kEoB1Npc11StringsDOSGerman };
+
+static const char *const kEoB1Npc12StringsDOSGerman[2] = {
+ "Wunden heilen",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc12StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc12StringsDOSGerman), kEoB1Npc12StringsDOSGerman };
+
+static const char *const kEoB1Npc21StringsDOSGerman[2] = {
+ "Angebot hoeren",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc21StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc21StringsDOSGerman), kEoB1Npc21StringsDOSGerman };
+
+static const char *const kEoB1Npc22StringsDOSGerman[2] = {
+ "Helfen",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc22StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc22StringsDOSGerman), kEoB1Npc22StringsDOSGerman };
+
+static const char *const kEoB1Npc31StringsDOSGerman[2] = {
+ "Team heilen",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc31StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc31StringsDOSGerman), kEoB1Npc31StringsDOSGerman };
+
+static const char *const kEoB1Npc32StringsDOSGerman[3] = {
+ "Team heilen",
+ "Tote erwecken",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc32StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc32StringsDOSGerman), kEoB1Npc32StringsDOSGerman };
+
+static const char *const kEoB1Npc4StringsDOSGerman[2] = {
+ "Angreifen",
+ "Bestechen"
+};
+
+static const StringListProvider kEoB1Npc4StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc4StringsDOSGerman), kEoB1Npc4StringsDOSGerman };
+
+static const char *const kEoB1Npc5StringsDOSGerman[3] = {
+ "toeten",
+ "anhoeren",
+ "gehen lassen"
+};
+
+static const StringListProvider kEoB1Npc5StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc5StringsDOSGerman), kEoB1Npc5StringsDOSGerman };
+
+static const char *const kEoB1Npc6StringsDOSGerman[2] = {
+ "Ergeben",
+ "Angreifen"
+};
+
+static const StringListProvider kEoB1Npc6StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc6StringsDOSGerman), kEoB1Npc6StringsDOSGerman };
+
+static const char *const kEoB1Npc7StringsDOSGerman[3] = {
+ "befreien",
+ "toeten",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc7StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc7StringsDOSGerman), kEoB1Npc7StringsDOSGerman };
+
+static const char *const kEoB1PryDoorStringsDOSGerman[8] = {
+ "Niemand schafft es, die Tuer aufzubrechen.\r",
+ "Das Team bricht die Tuer auf.\r",
+ "%s bricht die Tuer auf!\r",
+ "Das Team versucht die Tuer aufzubrechen, doch es schlaegt fehl.\r",
+ "Dieser Gegenstand kann hier nicht plaziert werden.\r",
+ "Dieser Gegenstand ist zu gross.\r",
+ "Niemand schafft es, die Tuer aufzubrechen.\r",
+ "\r"
+};
+
+static const StringListProvider kEoB1PryDoorStringsDOSGermanProvider = { ARRAYSIZE(kEoB1PryDoorStringsDOSGerman), kEoB1PryDoorStringsDOSGerman };
+
+static const char *const kEoB1WarningStringsDOSGerman[3] = {
+ "Hier geht es nicht weiter.\r",
+ "%s kann keine Nahrung zu sich nehmen!\r",
+ "Dies kann man nicht essen!\r"
+};
+
+static const StringListProvider kEoB1WarningStringsDOSGermanProvider = { ARRAYSIZE(kEoB1WarningStringsDOSGerman), kEoB1WarningStringsDOSGerman };
+
+static const char *const kEoB1ItemSuffixStringsRingsDOSGerman[4] = {
+ "Schmuck",
+ "Zauber",
+ "Nahrungs",
+ "Federfall"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsRingsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsRingsDOSGerman), kEoB1ItemSuffixStringsRingsDOSGerman };
+
+static const char *const kEoB1ItemSuffixStringsPotionsDOSGerman[8] = {
+ "Riesenstaerke",
+ "Heilungs",
+ "Extra Heilungs",
+ "Gift",
+ "Vitalitaets",
+ "Schnelligkeits",
+ "Unsichtbarkeits",
+ "Gift-Heilungs"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsPotionsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsPotionsDOSGerman), kEoB1ItemSuffixStringsPotionsDOSGerman };
+
+static const char *const kEoB1ItemSuffixStringsWandsDOSGerman[7] = {
+ "Stock",
+ "Blitz",
+ "Frost",
+ "Heilungs",
+ "Feuerball",
+ "Silvias",
+ "Magischer Geschoss"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsWandsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsWandsDOSGerman), kEoB1ItemSuffixStringsWandsDOSGerman };
+
+static const char *const kEoB1RipItemStringsDOSGerman[3] = {
+ "%s verlor ihre ",
+ "%s verlor seine ",
+ ".\r"
+};
+
+static const StringListProvider kEoB1RipItemStringsDOSGermanProvider = { ARRAYSIZE(kEoB1RipItemStringsDOSGerman), kEoB1RipItemStringsDOSGerman };
+
+static const char *const kEoB1CursedStringDOSGerman[1] = {
+ "Verflucht %s %d"
+};
+
+static const StringListProvider kEoB1CursedStringDOSGermanProvider = { ARRAYSIZE(kEoB1CursedStringDOSGerman), kEoB1CursedStringDOSGerman };
+
+static const char *const kEoB1MagicObjectStringsDOSGerman[5] = {
+ "Magier-Schriftrolle",
+ "Kleriker-Schriftrolle",
+ "Ring",
+ "Trank",
+ "Stab"
+};
+
+static const StringListProvider kEoB1MagicObjectStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MagicObjectStringsDOSGerman), kEoB1MagicObjectStringsDOSGerman };
+
+static const char *const kEoB1MagicObjectString5DOSGerman[1] = {
+ "Stock"
+};
+
+static const StringListProvider kEoB1MagicObjectString5DOSGermanProvider = { ARRAYSIZE(kEoB1MagicObjectString5DOSGerman), kEoB1MagicObjectString5DOSGerman };
+
+static const char *const kEoB1PatternSuffixDOSGerman[1] = {
+ "%s-%s"
+};
+
+static const StringListProvider kEoB1PatternSuffixDOSGermanProvider = { ARRAYSIZE(kEoB1PatternSuffixDOSGerman), kEoB1PatternSuffixDOSGerman };
+
+static const char *const kEoB1PatternGrFix1DOSGerman[1] = {
+ "%s-%s"
+};
+
+static const StringListProvider kEoB1PatternGrFix1DOSGermanProvider = { ARRAYSIZE(kEoB1PatternGrFix1DOSGerman), kEoB1PatternGrFix1DOSGerman };
+
+static const char *const kEoB1PatternGrFix2DOSGerman[1] = {
+ "%s-%s"
+};
+
+static const StringListProvider kEoB1PatternGrFix2DOSGermanProvider = { ARRAYSIZE(kEoB1PatternGrFix2DOSGerman), kEoB1PatternGrFix2DOSGerman };
+
+static const char *const kEoB1ValidateArmorStringDOSGerman[1] = {
+ "%s kann diese Ruestung nicht tragen.\r"
+};
+
+static const StringListProvider kEoB1ValidateArmorStringDOSGermanProvider = { ARRAYSIZE(kEoB1ValidateArmorStringDOSGerman), kEoB1ValidateArmorStringDOSGerman };
+
+static const char *const kEoB1ValidateNoDropStringDOSGerman[1] = {
+ "Das koennt Ihr hier nicht ablegen.\r"
+};
+
+static const StringListProvider kEoB1ValidateNoDropStringDOSGermanProvider = { ARRAYSIZE(kEoB1ValidateNoDropStringDOSGerman), kEoB1ValidateNoDropStringDOSGerman };
+
+static const char *const kEoB1PotionStringsDOSGerman[2] = {
+ "vergiftet",
+ "%s fuehlt sich %s!\r"
+};
+
+static const StringListProvider kEoB1PotionStringsDOSGermanProvider = { ARRAYSIZE(kEoB1PotionStringsDOSGerman), kEoB1PotionStringsDOSGerman };
+
+static const char *const kEoB1WandStringsDOSGerman[2] = {
+ "Der Stab hat keinen offensichtlichen magischen Effekt.\r",
+ "kein effekt.\r"
+};
+
+static const StringListProvider kEoB1WandStringsDOSGermanProvider = { ARRAYSIZE(kEoB1WandStringsDOSGerman), kEoB1WandStringsDOSGerman };
+
+static const char *const kEoB1ItemMisuseStringsDOSGerman[3] = {
+ " kann dies nicht benutzen.\r",
+ "Dies wird automatisch benutzt, wenn angelegt.\r",
+ "Dies wird nicht so benutzt.\r"
+};
+
+static const StringListProvider kEoB1ItemMisuseStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemMisuseStringsDOSGerman), kEoB1ItemMisuseStringsDOSGerman };
+
+static const char *const kEoB1TakenStringsDOSGerman[1] = {
+ " aufgenommen.\r"
+};
+
+static const StringListProvider kEoB1TakenStringsDOSGermanProvider = { ARRAYSIZE(kEoB1TakenStringsDOSGerman), kEoB1TakenStringsDOSGerman };
+
+static const char *const kEoB1PotionEffectStringsDOSGerman[8] = {
+ "viel staerker",
+ "besser",
+ "viel besser",
+ "einen Moment uebel",
+ "nicht laenger hungrig",
+ "schnell und agil",
+ "transparent",
+ "besser"
+};
+
+static const StringListProvider kEoB1PotionEffectStringsDOSGermanProvider = { ARRAYSIZE(kEoB1PotionEffectStringsDOSGerman), kEoB1PotionEffectStringsDOSGerman };
+
+static const char *const kEoB1YesNoStringsDOSGerman[2] = {
+ "ja",
+ "nein"
+};
+
+static const StringListProvider kEoB1YesNoStringsDOSGermanProvider = { ARRAYSIZE(kEoB1YesNoStringsDOSGerman), kEoB1YesNoStringsDOSGerman };
+
+static const char *const kEoB1MoreStringsDOSGerman[1] = {
+ "MEHR"
+};
+
+static const StringListProvider kEoB1MoreStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MoreStringsDOSGerman), kEoB1MoreStringsDOSGerman };
+
+static const char *const kEoB1NpcMaxStringsDOSGerman[1] = {
+ "Es sind nur sechs Charaktere in einem Team erlaubt. Waehlen Sie aus, welchen Sie entlassen wollen."
+};
+
+static const StringListProvider kEoB1NpcMaxStringsDOSGermanProvider = { ARRAYSIZE(kEoB1NpcMaxStringsDOSGerman), kEoB1NpcMaxStringsDOSGerman };
+
+static const char *const kEoB1NpcJoinStringsDOSGerman[1] = {
+ "%s wird in's Team aufgenommen.\r"
+};
+
+static const StringListProvider kEoB1NpcJoinStringsDOSGermanProvider = { ARRAYSIZE(kEoB1NpcJoinStringsDOSGerman), kEoB1NpcJoinStringsDOSGerman };
+
+static const char *const kEoB1CancelStringsDOSGerman[1] = {
+ "ABBRECHEN"
+};
+
+static const StringListProvider kEoB1CancelStringsDOSGermanProvider = { ARRAYSIZE(kEoB1CancelStringsDOSGerman), kEoB1CancelStringsDOSGerman };
+
+static const char *const kEoB1MenuStringsMainDOSGerman[8] = {
+ "Option Waehlen:",
+ "Ausruhen",
+ "Zauber lernen",
+ "Fuer Zauber beten",
+ "Schriftrollen",
+ "Einstellungen",
+ "Spieloptionen",
+ "Ende"
+};
+
+static const StringListProvider kEoB1MenuStringsMainDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsMainDOSGerman), kEoB1MenuStringsMainDOSGerman };
+
+static const char *const kEoB1MenuStringsSaveLoadDOSGerman[8] = {
+ "Spiel laden",
+ "Spiel speichern",
+ "Charakter entlassen",
+ "Spielende",
+ "Spieloptionen:",
+ "\r Gespeichert.",
+ "\r Speichern\r Fehler!",
+ "\r Spiel laden\r Fehler!"
+};
+
+static const StringListProvider kEoB1MenuStringsSaveLoadDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsSaveLoadDOSGerman), kEoB1MenuStringsSaveLoadDOSGerman };
+
+static const char *const kEoB1MenuStringsOnOffDOSGerman[2] = {
+ "AN",
+ "AUS"
+};
+
+static const StringListProvider kEoB1MenuStringsOnOffDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsOnOffDOSGerman), kEoB1MenuStringsOnOffDOSGerman };
+
+static const char *const kEoB1MenuStringsSpellsDOSGerman[17] = {
+ "\r\r Charakter aus dem\r Team waehlen, der\r zaubern moechte.\r ",
+ "\r Der Paladin ist \r noch zu \r unerfahren.",
+ "\r\r Der Magier hat\r kein Zauberbuch!",
+ "\r\r\r Charakter aus dem\r Team waehlen, der\r beten moechte.\r ",
+ "\r Das Team hat kei-\r nen Kleriker, der\r beten koennte.\r ",
+ "\r Das Team hat kei-\r nen Magier, der\r zaubern koennte.",
+ " Ein bewusstloser\r oder toter Magier\r kann keine Zauber\r lernen.",
+ " Ein bewusstloser\r oder toter Kleriker\r kann nicht fuer Zauber\r beten.",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "Loesch",
+ "Verfuegbare Zauber:",
+ "Ja",
+ "Nein"
+};
+
+static const StringListProvider kEoB1MenuStringsSpellsDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsSpellsDOSGerman), kEoB1MenuStringsSpellsDOSGerman };
+
+static const char *const kEoB1MenuStringsRestDOSGerman[5] = {
+ "\rWerden die Heiler\rdas Team heilen?",
+ " Jemand ist noch\r verletzt. Rasten,\r bis geheilt?",
+ "Ausruhen.",
+ "\r Alle Charaktere\r sind ganz\r ausgeruht.",
+ " Das Team muss\r fuer neue Zauber\r rasten."
+};
+
+static const StringListProvider kEoB1MenuStringsRestDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsRestDOSGerman), kEoB1MenuStringsRestDOSGerman };
+
+static const char *const kEoB1MenuStringsDropDOSGerman[1] = {
+ " Sie muessen min-\r destens vier\r Charaktere be-\r sitzen."
+};
+
+static const StringListProvider kEoB1MenuStringsDropDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsDropDOSGerman), kEoB1MenuStringsDropDOSGerman };
+
+static const char *const kEoB1MenuStringsExitDOSGerman[1] = {
Commit: 02697757ea95f40b7aafa89b5cd36c5acf78c0e5
https://github.com/scummvm/scummvm/commit/02697757ea95f40b7aafa89b5cd36c5acf78c0e5
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2014-03-02T17:00:05-08:00
Commit Message:
DISTS: Regenerate kyra.dat.
Changed paths:
dists/engine-data/kyra.dat
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 305c7e6..49fa7d6 100644
Binary files a/dists/engine-data/kyra.dat and b/dists/engine-data/kyra.dat differ
Commit: d771c4d3bbde84ca37579b1dc9e5b6f491bbd2d5
https://github.com/scummvm/scummvm/commit/d771c4d3bbde84ca37579b1dc9e5b6f491bbd2d5
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2014-03-02T17:00:05-08:00
Commit Message:
KYRA: Fix EoB 1 German rest string when monsters are nearby.
Changed paths:
devtools/create_kyradat/resources/eob1_dos_german.h
dists/engine-data/kyra.dat
diff --git a/devtools/create_kyradat/resources/eob1_dos_german.h b/devtools/create_kyradat/resources/eob1_dos_german.h
index 09b90e3..ba2e487 100644
--- a/devtools/create_kyradat/resources/eob1_dos_german.h
+++ b/devtools/create_kyradat/resources/eob1_dos_german.h
@@ -539,7 +539,11 @@ static const char *const kEoB1MenuStringsRest2DOSGerman[4] = {
static const StringListProvider kEoB1MenuStringsRest2DOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsRest2DOSGerman), kEoB1MenuStringsRest2DOSGerman };
-static const StringListProvider kEoB1MenuStringsRest4DOSGermanProvider = { 0, NULL };
+static const char *const kEoB1MenuStringsRest4DOSGerman[1] = {
+ "\rRast ist nicht moeglich, Monster sind in der Naehe."
+};
+
+static const StringListProvider kEoB1MenuStringsRest4DOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsRest4DOSGerman), kEoB1MenuStringsRest4DOSGerman };
static const char *const kEoB1MenuStringsDefeatDOSGerman[1] = {
" Dein ganzes team ist geschlagen. Die Helfer des boesen koennen ihre Plaene ungehindert erfuellen! \r"
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 49fa7d6..af87554 100644
Binary files a/dists/engine-data/kyra.dat and b/dists/engine-data/kyra.dat differ
More information about the Scummvm-git-logs
mailing list