mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 09:23:37 +00:00
- Got rid of hardcoded filename list for kyra.dat
- Synced static resource definitions between KYRA main codebase and create_kyradat - Rebuilt kyra.dat svn-id: r46047
This commit is contained in:
parent
e8c67bda4b
commit
bf5ce985a0
Binary file not shown.
@ -102,6 +102,239 @@ protected:
|
||||
enum KyraResources {
|
||||
kLoadAll = -1,
|
||||
|
||||
// This list has to match orderwise (and thus value wise) the static data list of "tools/create_kyradat/create_kyradat.h"!
|
||||
k1ForestSeq,
|
||||
k1KallakWritingSeq,
|
||||
k1KyrandiaLogoSeq,
|
||||
k1KallakMalcolmSeq,
|
||||
k1MalcolmTreeSeq,
|
||||
k1WestwoodLogoSeq,
|
||||
|
||||
k1Demo1Seq,
|
||||
k1Demo2Seq,
|
||||
k1Demo3Seq,
|
||||
k1Demo4Seq,
|
||||
|
||||
k1AmuleteAnimSeq,
|
||||
|
||||
k1OutroReunionSeq,
|
||||
|
||||
k1IntroCPSStrings,
|
||||
k1IntroCOLStrings,
|
||||
k1IntroWSAStrings,
|
||||
k1IntroStrings,
|
||||
|
||||
k1OutroHomeString,
|
||||
|
||||
k1RoomFilenames,
|
||||
k1RoomList,
|
||||
|
||||
k1CharacterImageFilenames,
|
||||
|
||||
k1ItemNames,
|
||||
k1TakenStrings,
|
||||
k1PlacedStrings,
|
||||
k1DroppedStrings,
|
||||
k1NoDropStrings,
|
||||
|
||||
k1PutDownString,
|
||||
k1WaitAmuletString,
|
||||
k1BlackJewelString,
|
||||
k1PoisonGoneString,
|
||||
k1HealingTipString,
|
||||
k1WispJewelStrings,
|
||||
k1MagicJewelStrings,
|
||||
|
||||
k1ThePoisonStrings,
|
||||
k1FluteStrings,
|
||||
|
||||
k1FlaskFullString,
|
||||
k1FullFlaskString,
|
||||
|
||||
k1VeryCleverString,
|
||||
k1NewGameString,
|
||||
|
||||
k1DefaultShapes,
|
||||
k1Healing1Shapes,
|
||||
k1Healing2Shapes,
|
||||
k1PoisonDeathShapes,
|
||||
k1FluteShapes,
|
||||
k1Winter1Shapes,
|
||||
k1Winter2Shapes,
|
||||
k1Winter3Shapes,
|
||||
k1DrinkShapes,
|
||||
k1WispShapes,
|
||||
k1MagicAnimShapes,
|
||||
k1BranStoneShapes,
|
||||
|
||||
k1SpecialPalette1,
|
||||
k1SpecialPalette2,
|
||||
k1SpecialPalette3,
|
||||
k1SpecialPalette4,
|
||||
k1SpecialPalette5,
|
||||
k1SpecialPalette6,
|
||||
k1SpecialPalette7,
|
||||
k1SpecialPalette8,
|
||||
k1SpecialPalette9,
|
||||
k1SpecialPalette10,
|
||||
k1SpecialPalette11,
|
||||
k1SpecialPalette12,
|
||||
k1SpecialPalette13,
|
||||
k1SpecialPalette14,
|
||||
k1SpecialPalette15,
|
||||
k1SpecialPalette16,
|
||||
k1SpecialPalette17,
|
||||
k1SpecialPalette18,
|
||||
k1SpecialPalette19,
|
||||
k1SpecialPalette20,
|
||||
k1SpecialPalette21,
|
||||
k1SpecialPalette22,
|
||||
k1SpecialPalette23,
|
||||
k1SpecialPalette24,
|
||||
k1SpecialPalette25,
|
||||
k1SpecialPalette26,
|
||||
k1SpecialPalette27,
|
||||
k1SpecialPalette28,
|
||||
k1SpecialPalette29,
|
||||
k1SpecialPalette30,
|
||||
k1SpecialPalette31,
|
||||
k1SpecialPalette32,
|
||||
k1SpecialPalette33,
|
||||
|
||||
k1GUIStrings,
|
||||
k1ConfigStrings,
|
||||
|
||||
k1AudioTracks,
|
||||
k1AudioTracksIntro,
|
||||
|
||||
k1CreditsStrings,
|
||||
|
||||
k1TownsSFXwdTable,
|
||||
k1TownsSFXbtTable,
|
||||
k1TownsCDATable,
|
||||
|
||||
k1PC98StoryStrings,
|
||||
k1PC98IntroSfx,
|
||||
|
||||
k1AmigaIntroSFXTable,
|
||||
k1AmigaGameSFXTable,
|
||||
|
||||
k2SeqplayPakFiles,
|
||||
k2SeqplayCredits,
|
||||
k2SeqplayCreditsSpecial,
|
||||
k2SeqplayStrings,
|
||||
k2SeqplaySfxFiles,
|
||||
k2SeqplayTlkFiles,
|
||||
k2SeqplaySeqData,
|
||||
k2SeqplayIntroTracks,
|
||||
k2SeqplayFinaleTracks,
|
||||
k2SeqplayIntroCDA,
|
||||
k2SeqplayFinaleCDA,
|
||||
k2SeqplayShapeAnimData,
|
||||
|
||||
k2IngamePakFiles,
|
||||
k2IngameSfxFiles,
|
||||
k2IngameSfxIndex,
|
||||
k2IngameTracks,
|
||||
k2IngameCDA,
|
||||
k2IngameTalkObjIndex,
|
||||
k2IngameTimJpStrings,
|
||||
k2IngameShapeAnimData,
|
||||
k2IngameTlkDemoStrings,
|
||||
|
||||
k3MainMenuStrings,
|
||||
k3MusicFiles,
|
||||
k3ScoreTable,
|
||||
k3SfxFiles,
|
||||
k3SfxMap,
|
||||
k3ItemAnimData,
|
||||
k3ItemMagicTable,
|
||||
k3ItemStringMap,
|
||||
|
||||
#ifdef ENABLE_LOL
|
||||
kLolIngamePakFiles,
|
||||
kLolCharacterDefs,
|
||||
kLolIngameSfxFiles,
|
||||
kLolIngameSfxIndex,
|
||||
kLolMusicTrackMap,
|
||||
kLolIngameGMSfxIndex,
|
||||
kLolIngameMT32SfxIndex,
|
||||
kLolIngamePcSpkSfxIndex,
|
||||
kLolSpellProperties,
|
||||
kLolGameShapeMap,
|
||||
kLolSceneItemOffs,
|
||||
kLolCharInvIndex,
|
||||
kLolCharInvDefs,
|
||||
kLolCharDefsMan,
|
||||
kLolCharDefsWoman,
|
||||
kLolCharDefsKieran,
|
||||
kLolCharDefsAkshel,
|
||||
kLolExpRequirements,
|
||||
kLolMonsterModifiers,
|
||||
kLolMonsterShiftOffsets,
|
||||
kLolMonsterDirFlags,
|
||||
kLolMonsterScaleY,
|
||||
kLolMonsterScaleX,
|
||||
kLolMonsterScaleWH,
|
||||
kLolFlyingObjectShp,
|
||||
kLolInventoryDesc,
|
||||
|
||||
kLolLevelShpList,
|
||||
kLolLevelDatList,
|
||||
kLolCompassDefs,
|
||||
kLolItemPrices,
|
||||
kLolStashSetup,
|
||||
|
||||
kLolDscUnk1,
|
||||
kLolDscShapeIndex,
|
||||
kLolDscOvlMap,
|
||||
kLolDscScaleWidthData,
|
||||
kLolDscScaleHeightData,
|
||||
kLolDscX,
|
||||
kLolDscY,
|
||||
kLolDscTileIndex,
|
||||
kLolDscUnk2,
|
||||
kLolDscDoorShapeIndex,
|
||||
kLolDscDimData1,
|
||||
kLolDscDimData2,
|
||||
kLolDscBlockMap,
|
||||
kLolDscDimMap,
|
||||
kLolDscDoor1,
|
||||
kLolDscDoorScale,
|
||||
kLolDscDoor4,
|
||||
kLolDscDoorX,
|
||||
kLolDscDoorY,
|
||||
kLolDscOvlIndex,
|
||||
kLolDscBlockIndex,
|
||||
|
||||
kLolScrollXTop,
|
||||
kLolScrollYTop,
|
||||
kLolScrollXBottom,
|
||||
kLolScrollYBottom,
|
||||
|
||||
kLolButtonDefs,
|
||||
kLolButtonList1,
|
||||
kLolButtonList2,
|
||||
kLolButtonList3,
|
||||
kLolButtonList4,
|
||||
kLolButtonList5,
|
||||
kLolButtonList6,
|
||||
kLolButtonList7,
|
||||
kLolButtonList8,
|
||||
|
||||
kLolLegendData,
|
||||
kLolMapCursorOvl,
|
||||
kLolMapStringId,
|
||||
|
||||
kLolSpellbookAnim,
|
||||
kLolSpellbookCoords,
|
||||
kLolHealShapeFrames,
|
||||
kLolLightningDefs,
|
||||
kLolFireballCoords,
|
||||
|
||||
kLolCredits,
|
||||
|
||||
kLolHistory,
|
||||
k1ForestSeq,
|
||||
k1KallakWritingSeq,
|
||||
k1KyrandiaLogoSeq,
|
||||
@ -347,7 +580,7 @@ class StaticResource {
|
||||
public:
|
||||
static const Common::String staticDataFilename() { return "KYRA.DAT"; }
|
||||
|
||||
StaticResource(KyraEngine_v1 *vm) : _vm(vm), _resList(), _fileLoader(0), _builtIn(0), _filenameTable(0) {}
|
||||
StaticResource(KyraEngine_v1 *vm) : _vm(vm), _resList(), _fileLoader(0), _builtIn(0), _dataTable(0) {}
|
||||
~StaticResource() { deinit(); }
|
||||
|
||||
bool loadStaticResourceFile();
|
||||
@ -390,27 +623,25 @@ private:
|
||||
|
||||
bool checkResList(int id, int &type, const void *&ptr, int &size);
|
||||
const void *checkForBuiltin(int id, int &type, int &size);
|
||||
const FilenameTable *searchFile(int id);
|
||||
const FileType *getFiletype(int type);
|
||||
const void *getData(int id, int requesttype, int &size);
|
||||
|
||||
bool loadLanguageTable(const char *filename, void *&ptr, int &size);
|
||||
bool loadStringTable(const char *filename, void *&ptr, int &size);
|
||||
bool loadRawData(const char *filename, void *&ptr, int &size);
|
||||
bool loadShapeTable(const char *filename, void *&ptr, int &size);
|
||||
bool loadAmigaSfxTable(const char *filename, void *&ptr, int &size);
|
||||
bool loadRoomTable(const char *filename, void *&ptr, int &size);
|
||||
bool loadHofSequenceData(const char *filename, void *&ptr, int &size);
|
||||
bool loadShapeAnimData_v1(const char *filename, void *&ptr, int &size);
|
||||
bool loadShapeAnimData_v2(const char *filename, void *&ptr, int &size);
|
||||
bool loadStringTable(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadRawData(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadShapeTable(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadAmigaSfxTable(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadRoomTable(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadHofSequenceData(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadShapeAnimData_v1(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadShapeAnimData_v2(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
#ifdef ENABLE_LOL
|
||||
bool loadCharData(const char *filename, void *&ptr, int &size);
|
||||
bool loadSpellData(const char *filename, void *&ptr, int &size);
|
||||
bool loadCompassData(const char *filename, void *&ptr, int &size);
|
||||
bool loadFlyingObjectData(const char *filename, void *&ptr, int &size);
|
||||
bool loadRawDataBe16(const char *filename, void *&ptr, int &size);
|
||||
bool loadRawDataBe32(const char *filename, void *&ptr, int &size);
|
||||
bool loadButtonDefs(const char *filename, void *&ptr, int &size);
|
||||
bool loadCharData(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadSpellData(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadCompassData(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadFlyingObjectData(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadRawDataBe16(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadRawDataBe32(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
bool loadButtonDefs(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
#endif // ENABLE_LOL
|
||||
|
||||
void freeRawData(void *&ptr, int &size);
|
||||
@ -435,24 +666,23 @@ private:
|
||||
Common::SeekableReadStream *getFile(const char *name);
|
||||
|
||||
enum ResTypes {
|
||||
kLanguageList,
|
||||
kStringList,
|
||||
kRoomList,
|
||||
kShapeList,
|
||||
kRawData,
|
||||
kAmigaSfxTable,
|
||||
kStringList = 0,
|
||||
kRawData = 1,
|
||||
kRoomList = 2,
|
||||
kShapeList = 3,
|
||||
kAmigaSfxTable = 4,
|
||||
|
||||
k2SeqData,
|
||||
k2ShpAnimDataV1,
|
||||
k2ShpAnimDataV2,
|
||||
k2SeqData = 5,
|
||||
k2ShpAnimDataV1 = 6,
|
||||
k2ShpAnimDataV2 = 7,
|
||||
|
||||
kLolCharData,
|
||||
kLolSpellData,
|
||||
kLolCompassData,
|
||||
kLolFlightShpData,
|
||||
kLolRawDataBe16,
|
||||
kLolRawDataBe32,
|
||||
kLolButtonData
|
||||
kLolCharData = 8,
|
||||
kLolSpellData = 9,
|
||||
kLolCompassData = 10,
|
||||
kLolFlightShpData = 11,
|
||||
kLolButtonData = 12,
|
||||
kLolRawDataBe16 = 13,
|
||||
kLolRawDataBe32 = 14
|
||||
};
|
||||
|
||||
struct BuiltinRes {
|
||||
@ -462,15 +692,9 @@ private:
|
||||
const void *data;
|
||||
};
|
||||
|
||||
struct FilenameTable {
|
||||
int id;
|
||||
int type;
|
||||
const char *filename;
|
||||
};
|
||||
|
||||
struct FileType {
|
||||
int type;
|
||||
typedef bool (StaticResource::*LoadFunc)(const char *filename, void *&ptr, int &size);
|
||||
typedef bool (StaticResource::*LoadFunc)(Common::SeekableReadStream &stream, void *&ptr, int &size);
|
||||
typedef void (StaticResource::*FreeFunc)(void *&ptr, int &size);
|
||||
|
||||
LoadFunc load;
|
||||
@ -488,7 +712,7 @@ private:
|
||||
|
||||
const FileType *_fileLoader;
|
||||
const BuiltinRes *_builtIn;
|
||||
const FilenameTable *_filenameTable;
|
||||
const int *_dataTable;
|
||||
};
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -42,261 +42,257 @@
|
||||
#include <map>
|
||||
|
||||
enum {
|
||||
kKyraDatVersion = 65
|
||||
kKyraDatVersion = 66
|
||||
};
|
||||
|
||||
const ExtractFilename extractFilenames[] = {
|
||||
// INTRO / OUTRO sequences
|
||||
{ k1ForestSeq, kTypeRawData, "FOREST.SEQ" },
|
||||
{ k1KallakWritingSeq, kTypeRawData, "KALLAK-WRITING.SEQ" },
|
||||
{ k1KyrandiaLogoSeq, kTypeRawData, "KYRANDIA-LOGO.SEQ" },
|
||||
{ k1KallakMalcolmSeq, kTypeRawData, "KALLAK-MALCOLM.SEQ" },
|
||||
{ k1MalcolmTreeSeq, kTypeRawData, "MALCOLM-TREE.SEQ" },
|
||||
{ k1WestwoodLogoSeq, kTypeRawData, "WESTWOOD-LOGO.SEQ" },
|
||||
{ k1Demo1Seq, kTypeRawData, "DEMO1.SEQ" },
|
||||
{ k1Demo2Seq, kTypeRawData, "DEMO2.SEQ" },
|
||||
{ k1Demo3Seq, kTypeRawData, "DEMO3.SEQ" },
|
||||
{ k1Demo4Seq, kTypeRawData, "DEMO4.SEQ" },
|
||||
{ k1OutroReunionSeq, kTypeRawData, "REUNION.SEQ" },
|
||||
{ k1ForestSeq, kTypeRawData, 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 },
|
||||
|
||||
// INTRO / OUTRO strings
|
||||
{ k1IntroCPSStrings, kTypeStringList, "INTRO-CPS.TXT" },
|
||||
{ k1IntroCOLStrings, kTypeStringList, "INTRO-COL.TXT" },
|
||||
{ k1IntroWSAStrings, kTypeStringList, "INTRO-WSA.TXT" },
|
||||
{ k1IntroStrings, kTypeLanguageList, "INTRO-STRINGS" },
|
||||
{ k1OutroHomeString, kTypeLanguageList, "HOME" },
|
||||
{ k1IntroCPSStrings, kTypeStringList, false },
|
||||
{ k1IntroCOLStrings, kTypeStringList, false },
|
||||
{ k1IntroWSAStrings, kTypeStringList, false },
|
||||
{ k1IntroStrings, kTypeStringList, true },
|
||||
{ k1OutroHomeString, kTypeStringList, true },
|
||||
|
||||
// INGAME strings
|
||||
{ k1ItemNames, kTypeLanguageList, "ITEMLIST" },
|
||||
{ k1TakenStrings, kTypeLanguageList, "TAKEN" },
|
||||
{ k1PlacedStrings, kTypeLanguageList, "PLACED" },
|
||||
{ k1DroppedStrings, kTypeLanguageList, "DROPPED" },
|
||||
{ k1NoDropStrings, kTypeLanguageList, "NODROP" },
|
||||
{ k1PutDownString, kTypeLanguageList, "PUTDOWN" },
|
||||
{ k1WaitAmuletString, kTypeLanguageList, "WAITAMUL" },
|
||||
{ k1BlackJewelString, kTypeLanguageList, "BLACKJEWEL" },
|
||||
{ k1PoisonGoneString, kTypeLanguageList, "POISONGONE" },
|
||||
{ k1HealingTipString, kTypeLanguageList, "HEALINGTIP" },
|
||||
{ k1ThePoisonStrings, kTypeLanguageList, "THEPOISON" },
|
||||
{ k1FluteStrings, kTypeLanguageList, "FLUTE" },
|
||||
{ k1WispJewelStrings, kTypeLanguageList, "WISPJEWEL" },
|
||||
{ k1MagicJewelStrings, kTypeLanguageList, "MAGICJEWEL" },
|
||||
{ k1FlaskFullString, kTypeLanguageList, "FLASKFULL" },
|
||||
{ k1FullFlaskString, kTypeLanguageList, "FULLFLASK" },
|
||||
{ k1VeryCleverString, kTypeLanguageList, "VERYCLEVER" },
|
||||
{ k1NewGameString, kTypeLanguageList, "NEWGAME" },
|
||||
{ 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 },
|
||||
|
||||
// GUI strings table
|
||||
{ k1GUIStrings, kTypeLanguageList, "GUISTRINGS" },
|
||||
{ k1ConfigStrings, kTypeLanguageList, "CONFIGSTRINGS" },
|
||||
{ k1GUIStrings, kTypeStringList, true },
|
||||
{ k1ConfigStrings, kTypeStringList, true },
|
||||
|
||||
// ROOM table/filenames
|
||||
{ k1RoomList, kTypeRoomList, "ROOM-TABLE.ROOM" },
|
||||
{ k1RoomFilenames, kTypeStringList, "ROOM-FILENAMES.TXT" },
|
||||
{ k1RoomList, kTypeRoomList, false },
|
||||
{ k1RoomFilenames, kTypeStringList, false },
|
||||
|
||||
// SHAPE tables
|
||||
{ k1DefaultShapes, kTypeShapeList, "SHAPES-DEFAULT.SHP" },
|
||||
{ k1Healing1Shapes, kTypeShapeList, "HEALING.SHP" },
|
||||
{ k1Healing2Shapes, kTypeShapeList, "HEALING2.SHP" },
|
||||
{ k1PoisonDeathShapes, kTypeShapeList, "POISONDEATH.SHP" },
|
||||
{ k1FluteShapes, kTypeShapeList, "FLUTE.SHP" },
|
||||
{ k1Winter1Shapes, kTypeShapeList, "WINTER1.SHP" },
|
||||
{ k1Winter2Shapes, kTypeShapeList, "WINTER2.SHP" },
|
||||
{ k1Winter3Shapes, kTypeShapeList, "WINTER3.SHP" },
|
||||
{ k1DrinkShapes, kTypeShapeList, "DRINK.SHP" },
|
||||
{ k1WispShapes, kTypeShapeList, "WISP.SHP" },
|
||||
{ k1MagicAnimShapes, kTypeShapeList, "MAGICANIM.SHP" },
|
||||
{ k1BranStoneShapes, kTypeShapeList, "BRANSTONE.SHP" },
|
||||
{ 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 },
|
||||
|
||||
// IMAGE filename table
|
||||
{ k1CharacterImageFilenames, kTypeStringList, "CHAR-IMAGE.TXT" },
|
||||
{ k1CharacterImageFilenames, kTypeStringList, false },
|
||||
|
||||
// AUDIO filename table
|
||||
{ k1AudioTracks, kTypeStringList, "TRACKS.TXT" },
|
||||
{ k1AudioTracksIntro, kTypeStringList, "TRACKSINT.TXT" },
|
||||
{ k1AudioTracks, kTypeStringList, false },
|
||||
{ k1AudioTracksIntro, kTypeStringList, false },
|
||||
|
||||
// AMULET anim
|
||||
{ k1AmuleteAnimSeq, kTypeRawData, "AMULETEANIM.SEQ" },
|
||||
{ k1AmuleteAnimSeq, kTypeRawData, false },
|
||||
|
||||
// PALETTE table
|
||||
{ k1SpecialPalette1, kTypeRawData, "PALTABLE1.PAL" },
|
||||
{ k1SpecialPalette2, kTypeRawData, "PALTABLE2.PAL" },
|
||||
{ k1SpecialPalette3, kTypeRawData, "PALTABLE3.PAL" },
|
||||
{ k1SpecialPalette4, kTypeRawData, "PALTABLE4.PAL" },
|
||||
{ k1SpecialPalette5, kTypeRawData, "PALTABLE5.PAL" },
|
||||
{ k1SpecialPalette6, kTypeRawData, "PALTABLE6.PAL" },
|
||||
{ k1SpecialPalette7, kTypeRawData, "PALTABLE7.PAL" },
|
||||
{ k1SpecialPalette8, kTypeRawData, "PALTABLE8.PAL" },
|
||||
{ k1SpecialPalette9, kTypeRawData, "PALTABLE9.PAL" },
|
||||
{ k1SpecialPalette10, kTypeRawData, "PALTABLE10.PAL" },
|
||||
{ k1SpecialPalette11, kTypeRawData, "PALTABLE11.PAL" },
|
||||
{ k1SpecialPalette12, kTypeRawData, "PALTABLE12.PAL" },
|
||||
{ k1SpecialPalette13, kTypeRawData, "PALTABLE13.PAL" },
|
||||
{ k1SpecialPalette14, kTypeRawData, "PALTABLE14.PAL" },
|
||||
{ k1SpecialPalette15, kTypeRawData, "PALTABLE15.PAL" },
|
||||
{ k1SpecialPalette16, kTypeRawData, "PALTABLE16.PAL" },
|
||||
{ k1SpecialPalette17, kTypeRawData, "PALTABLE17.PAL" },
|
||||
{ k1SpecialPalette18, kTypeRawData, "PALTABLE18.PAL" },
|
||||
{ k1SpecialPalette19, kTypeRawData, "PALTABLE19.PAL" },
|
||||
{ k1SpecialPalette20, kTypeRawData, "PALTABLE20.PAL" },
|
||||
{ k1SpecialPalette21, kTypeRawData, "PALTABLE21.PAL" },
|
||||
{ k1SpecialPalette22, kTypeRawData, "PALTABLE22.PAL" },
|
||||
{ k1SpecialPalette23, kTypeRawData, "PALTABLE23.PAL" },
|
||||
{ k1SpecialPalette24, kTypeRawData, "PALTABLE24.PAL" },
|
||||
{ k1SpecialPalette25, kTypeRawData, "PALTABLE25.PAL" },
|
||||
{ k1SpecialPalette26, kTypeRawData, "PALTABLE26.PAL" },
|
||||
{ k1SpecialPalette27, kTypeRawData, "PALTABLE27.PAL" },
|
||||
{ k1SpecialPalette28, kTypeRawData, "PALTABLE28.PAL" },
|
||||
{ k1SpecialPalette29, kTypeRawData, "PALTABLE29.PAL" },
|
||||
{ k1SpecialPalette30, kTypeRawData, "PALTABLE30.PAL" },
|
||||
{ k1SpecialPalette31, kTypeRawData, "PALTABLE31.PAL" },
|
||||
{ k1SpecialPalette32, kTypeRawData, "PALTABLE32.PAL" },
|
||||
{ k1SpecialPalette33, kTypeRawData, "PALTABLE33.PAL" },
|
||||
{ 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 },
|
||||
|
||||
// CREDITS (used in FM-TOWNS and AMIGA)
|
||||
{ k1CreditsStrings, kTypeRawData, "CREDITS" },
|
||||
{ k1CreditsStrings, kTypeRawData, false },
|
||||
|
||||
// FM-TOWNS specific
|
||||
{ k1TOWNSSfxWDTable, kTypeTownsWDSfxTable, "SFXWDTABLE" },
|
||||
{ k1TOWNSSfxBTTable, kTypeRawData, "SFXBTTABLE" },
|
||||
{ k1TOWNSCDATable, kTypeRawData, "CDATABLE" },
|
||||
{ k1TownsSFXwdTable, kTypeTownsWDSfxTable, false },
|
||||
{ k1TownsSFXbtTable, kTypeRawData, false },
|
||||
{ k1TownsCDATable, kTypeRawData, false },
|
||||
|
||||
// PC98 specific
|
||||
{ k1PC98StoryStrings, kTypeLanguageList, "INTROSTORY" },
|
||||
{ k1PC98IntroSfx, kTypeRawData, "INTROSFX" },
|
||||
{ k1PC98StoryStrings, kTypeStringList, true },
|
||||
{ k1PC98IntroSfx, kTypeRawData, false },
|
||||
|
||||
// AMIGA specific
|
||||
{ k1AmigaIntroSFXTable, kTypeAmigaSfxTable, "SFXINTRO" },
|
||||
{ k1AmigaGameSFXTable, kTypeAmigaSfxTable, "SFXGAME" },
|
||||
{ k1AmigaIntroSFXTable, kTypeAmigaSfxTable, false },
|
||||
{ k1AmigaGameSFXTable, kTypeAmigaSfxTable, false },
|
||||
|
||||
// HAND OF FATE
|
||||
|
||||
// Sequence Player
|
||||
{ k2SeqplayPakFiles, kTypeStringList, "S_PAKFILES.TXT" },
|
||||
{ k2SeqplayCredits, kTypeRawData, "S_CREDITS.TXT" },
|
||||
{ k2SeqplayCreditsSpecial, kTypeStringList, "S_CREDITS2.TXT" },
|
||||
{ k2SeqplayStrings, kTypeLanguageList, "S_STRINGS" },
|
||||
{ k2SeqplaySfxFiles, k2TypeSoundList, "S_SFXFILES.TXT" },
|
||||
{ k2SeqplayTlkFiles, k2TypeLangSoundList, "S_TLKFILES" },
|
||||
{ k2SeqplaySeqData, k2TypeSeqData, "S_DATA.SEQ" },
|
||||
{ k2SeqplayIntroTracks, kTypeStringList, "S_INTRO.TRA" },
|
||||
{ k2SeqplayFinaleTracks, kTypeStringList, "S_FINALE.TRA" },
|
||||
{ k2SeqplayIntroCDA, kTypeRawData, "S_INTRO.CDA" },
|
||||
{ k2SeqplayFinaleCDA, kTypeRawData, "S_FINALE.CDA" },
|
||||
{ k2SeqplayShapeAnimData, k2TypeShpDataV1, "S_DEMO.SHP" },
|
||||
{ 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 },
|
||||
|
||||
// Ingame
|
||||
{ k2IngamePakFiles, kTypeStringList, "I_PAKFILES.TXT" },
|
||||
{ k2IngameSfxFiles, k2TypeSize10StringList, "I_SFXFILES.TRA" },
|
||||
{ k2IngameSfxFilesTns, k2TypeSoundList, "I_SFXFILES.TRA" },
|
||||
{ k2IngameSfxIndex, kTypeRawData, "I_SFXINDEX.MAP" },
|
||||
{ k2IngameTracks, kTypeStringList, "I_TRACKS.TRA" },
|
||||
{ k2IngameCDA, kTypeRawData, "I_TRACKS.CDA" },
|
||||
{ k2IngameTalkObjIndex, kTypeRawData, "I_TALKOBJECTS.MAP" },
|
||||
{ k2IngameTimJpStrings, kTypeStringList, "I_TIMJPSTR.TXT" },
|
||||
{ k2IngameItemAnimData, k2TypeShpDataV2, "I_INVANIM.SHP" },
|
||||
{ k2IngameTlkDemoStrings, kTypeLanguageList, "I_TLKDEMO.TXT" },
|
||||
{ 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 },
|
||||
|
||||
|
||||
// MALCOLM'S REVENGE
|
||||
{ k3MainMenuStrings, kTypeStringList, "MAINMENU.TXT" },
|
||||
{ k3MusicFiles, k2TypeSoundList, "SCORE.TRA" },
|
||||
{ k3ScoreTable, kTypeRawData, "SCORE.MAP" },
|
||||
{ k3SfxFiles, k2TypeSfxList, "SFXFILES.TRA" },
|
||||
{ k3SfxMap, k3TypeRaw16to8, "SFXINDEX.MAP" },
|
||||
{ k3ItemAnimData, k3TypeShpData, "INVANIM.SHP" },
|
||||
{ k3ItemMagicTable, k3TypeRaw16to8, "ITEMMAGIC.MAP" },
|
||||
{ k3ItemStringMap, kTypeRawData, "ITEMSTRINGS.MAP" },
|
||||
{ k3MainMenuStrings, kTypeStringList, false },
|
||||
{ k3MusicFiles, k2TypeSoundList, false },
|
||||
{ k3ScoreTable, kTypeRawData, false },
|
||||
{ k3SfxFiles, k2TypeSfxList, false },
|
||||
{ k3SfxMap, k3TypeRaw16to8, false },
|
||||
{ k3ItemAnimData, k3TypeShpData, false },
|
||||
{ k3ItemMagicTable, k3TypeRaw16to8, false },
|
||||
{ k3ItemStringMap, kTypeRawData, false },
|
||||
|
||||
// LANDS OF LORE
|
||||
|
||||
// Demo Sequence Player
|
||||
{ kLolSeqplayIntroTracks, k2TypeSoundList, "S_INTRO.TRA" },
|
||||
|
||||
// Ingame
|
||||
{ kLolIngamePakFiles, kTypeStringList, "PAKFILES.TXT" },
|
||||
{ kLolIngamePakFiles, kTypeStringList, false },
|
||||
|
||||
{ kLolCharacterDefs, kTypeRawData, "CHARACTER.DEF" },
|
||||
{ kLolIngameSfxFiles, k2TypeSfxList, "SFXFILES.TRA" },
|
||||
{ kLolIngameSfxIndex, kTypeRawData, "SFXINDEX.MAP" },
|
||||
{ kLolMusicTrackMap, kTypeRawData, "MUSIC.MAP" },
|
||||
{ kLolGMSfxIndex, kTypeRawData, "SFX_GM.MAP" },
|
||||
{ kLolMT32SfxIndex, kTypeRawData, "SFX_MT32.MAP" },
|
||||
{ kLolPcSpkSfxIndex, kTypeRawData, "SFX_PCS.MAP" },
|
||||
{ kLolSpellProperties, kTypeRawData, "SPELLS.DEF" },
|
||||
{ kLolGameShapeMap, kTypeRawData, "GAMESHP.MAP" },
|
||||
{ kLolSceneItemOffs, kTypeRawData, "ITEMOFFS.DEF" },
|
||||
{ kLolCharInvIndex, k3TypeRaw16to8, "CHARINV.MAP" },
|
||||
{ kLolCharInvDefs, kTypeRawData, "CHARINV.DEF" },
|
||||
{ kLolCharDefsMan, kLolTypeRaw16, "CHMAN.DEF" },
|
||||
{ kLolCharDefsWoman, kLolTypeRaw16, "CHWOMAN.DEF" },
|
||||
{ kLolCharDefsKieran, kLolTypeRaw16, "CHKIERAN.DEF" },
|
||||
{ kLolCharDefsAkshel, kLolTypeRaw16, "CHAKSHEL.DEF" },
|
||||
{ kLolExpRequirements, kLolTypeRaw32, "EXPERIENCE.DEF" },
|
||||
{ kLolMonsterModifiers, kLolTypeRaw16, "MONSTMOD.DEF" },
|
||||
{ kLolMonsterLevelOffsets, kTypeRawData, "MONSTLVL.DEF" },
|
||||
{ kLolMonsterDirFlags, kTypeRawData, "MONSTDIR.DEF" },
|
||||
{ kLolMonsterScaleY, kTypeRawData, "MONSTZY.DEF" },
|
||||
{ kLolMonsterScaleX, kTypeRawData, "MONSTZX.DEF" },
|
||||
{ kLolMonsterScaleWH, kLolTypeRaw16, "MONSTSCL.DEF" },
|
||||
{ kLolFlyingItemShp, k3TypeRaw16to8, "THRWNSHP.DEF" },
|
||||
{ kLolInventoryDesc, kLolTypeRaw16, "INVDESC.DEF" },
|
||||
{ kLolLevelShpList, kTypeStringList, "SHPFILES.TXT" },
|
||||
{ kLolLevelDatList, kTypeStringList, "DATFILES.TXT" },
|
||||
{ kLolCompassDefs, k3TypeRaw16to8, "COMPASS.DEF" },
|
||||
{ kLolItemPrices, kLolTypeRaw16, "ITEMCOST.DEF" },
|
||||
{ kLolStashSetup, kTypeRawData, "MONEYSTS.DEF" },
|
||||
{ kLolCharacterDefs, kLolTypeCharData, false },
|
||||
{ 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 },
|
||||
{ kLolMonsterModifiers, kLolTypeRaw16, false },
|
||||
{ kLolMonsterShiftOffsets, kTypeRawData, false },
|
||||
{ kLolMonsterDirFlags, kTypeRawData, false },
|
||||
{ kLolMonsterScaleY, kTypeRawData, false },
|
||||
{ kLolMonsterScaleX, kTypeRawData, false },
|
||||
{ kLolMonsterScaleWH, kLolTypeRaw16, false },
|
||||
{ kLolFlyingObjectShp, kLolTypeFlightShpData, false },
|
||||
{ kLolInventoryDesc, kLolTypeRaw16, false },
|
||||
{ kLolLevelShpList, kTypeStringList, false },
|
||||
{ kLolLevelDatList, kTypeStringList, false },
|
||||
{ kLolCompassDefs, kLolTypeCompassData, false },
|
||||
{ kLolItemPrices, kLolTypeRaw16, false },
|
||||
{ kLolStashSetup, kTypeRawData, false },
|
||||
|
||||
{ kLolDscUnk1, kTypeRawData, "DSCSHPU1.DEF" },
|
||||
{ kLolDscShapeIndex1, kTypeRawData, "DSCSHPI1.DEF" },
|
||||
{ kLolDscShapeIndex2, kTypeRawData, "DSCSHPI2.DEF" },
|
||||
{ kLolDscScaleWidthData, kLolTypeRaw16, "DSCSHPW.DEF" },
|
||||
{ kLolDscScaleHeightData, kLolTypeRaw16, "DSCSHPH.DEF" },
|
||||
{ kLolDscX, kLolTypeRaw16, "DSCSHPX.DEF" },
|
||||
{ kLolDscY, kTypeRawData, "DSCSHPY.DEF" },
|
||||
{ kLolDscTileIndex, kTypeRawData, "DSCSHPT.DEF" },
|
||||
{ kLolDscUnk2, kTypeRawData, "DSCSHPU2.DEF" },
|
||||
{ kLolDscDoorShapeIndex, kTypeRawData, "DSCDOOR.DEF" },
|
||||
{ kLolDscDimData1, kTypeRawData, "DSCDIM1.DEF" },
|
||||
{ kLolDscDimData2, kTypeRawData, "DSCDIM2.DEF" },
|
||||
{ kLolDscBlockMap, kTypeRawData, "DSCBLOCK1.DEF" },
|
||||
{ kLolDscDimMap, kTypeRawData, "DSCDIM.DEF" },
|
||||
{ kLolDscDoorScale, kLolTypeRaw16, "DSCDOOR3.DEF" },
|
||||
{ kLolDscShapeOvlIndex, k3TypeRaw16to8, "DSCBLOCK2.DEF" },
|
||||
{ kLolDscBlockIndex, kTypeRawData, "DSCBLOCKX.DEF" },
|
||||
{ kLolDscDoor4, kLolTypeRaw16, "DSCDOOR4.DEF" },
|
||||
{ kLolDscDoor1, kTypeRawData, "DSCDOOR1.DEF" },
|
||||
{ kLolDscDoorX, kLolTypeRaw16, "DSCDOORX.DEF" },
|
||||
{ kLolDscDoorY, kLolTypeRaw16, "DSCDOORY.DEF" },
|
||||
{ kLolDscUnk1, kTypeRawData, false },
|
||||
{ kLolDscShapeIndex, kTypeRawData, false },
|
||||
{ kLolDscOvlMap, kTypeRawData, false },
|
||||
{ kLolDscScaleWidthData, kLolTypeRaw16, false },
|
||||
{ kLolDscScaleHeightData, kLolTypeRaw16, false },
|
||||
{ kLolDscX, kLolTypeRaw16, false },
|
||||
{ kLolDscY, kTypeRawData, false },
|
||||
{ kLolDscTileIndex, kTypeRawData, false },
|
||||
{ kLolDscUnk2, kTypeRawData, false },
|
||||
{ kLolDscDoorShapeIndex, kTypeRawData, false },
|
||||
{ kLolDscDimData1, kTypeRawData, false },
|
||||
{ kLolDscDimData2, kTypeRawData, false },
|
||||
{ kLolDscBlockMap, kTypeRawData, false },
|
||||
{ kLolDscDimMap, kTypeRawData, false },
|
||||
{ kLolDscDoorScale, kLolTypeRaw16, false },
|
||||
{ kLolDscOvlIndex, k3TypeRaw16to8, false },
|
||||
{ kLolDscBlockIndex, kTypeRawData, false },
|
||||
{ kLolDscDoor4, kLolTypeRaw16, false },
|
||||
{ kLolDscDoor1, kTypeRawData, false },
|
||||
{ kLolDscDoorX, kLolTypeRaw16, false },
|
||||
{ kLolDscDoorY, kLolTypeRaw16, false },
|
||||
|
||||
{ kLolScrollXTop, k3TypeRaw16to8, "SCROLLXT.DEF" },
|
||||
{ kLolScrollYTop, k3TypeRaw16to8, "SCROLLYT.DEF" },
|
||||
{ kLolScrollXBottom, k3TypeRaw16to8, "SCROLLXB.DEF" },
|
||||
{ kLolScrollYBottom, k3TypeRaw16to8, "SCROLLYB.DEF" },
|
||||
{ kLolScrollXTop, k3TypeRaw16to8, false },
|
||||
{ kLolScrollYTop, k3TypeRaw16to8, false },
|
||||
{ kLolScrollXBottom, k3TypeRaw16to8, false },
|
||||
{ kLolScrollYBottom, k3TypeRaw16to8, false },
|
||||
|
||||
{ kLolButtonDefs, kLolTypeButtonDef, "BUTTONS.DEF" },
|
||||
{ kLolButtonList1, kLolTypeRaw16, "BUTTON1.LST" },
|
||||
{ kLolButtonList2, kLolTypeRaw16, "BUTTON2.LST" },
|
||||
{ kLolButtonList3, kLolTypeRaw16, "BUTTON3.LST" },
|
||||
{ kLolButtonList4, kLolTypeRaw16, "BUTTON4.LST" },
|
||||
{ kLolButtonList5, kLolTypeRaw16, "BUTTON5.LST" },
|
||||
{ kLolButtonList6, kLolTypeRaw16, "BUTTON6.LST" },
|
||||
{ kLolButtonList7, kLolTypeRaw16, "BUTTON7.LST" },
|
||||
{ kLolButtonList8, kLolTypeRaw16, "BUTTON84.LST" },
|
||||
{ kLolButtonDefs, kLolTypeButtonDef, false },
|
||||
{ kLolButtonList1, kLolTypeRaw16, false },
|
||||
{ kLolButtonList2, kLolTypeRaw16, false },
|
||||
{ kLolButtonList3, kLolTypeRaw16, false },
|
||||
{ kLolButtonList4, kLolTypeRaw16, false },
|
||||
{ kLolButtonList5, kLolTypeRaw16, false },
|
||||
{ kLolButtonList6, kLolTypeRaw16, false },
|
||||
{ kLolButtonList7, kLolTypeRaw16, false },
|
||||
{ kLolButtonList8, kLolTypeRaw16, false },
|
||||
|
||||
{ kLolLegendData, kTypeRawData, "MAPLGND.DEF" },
|
||||
{ kLolMapCursorOvl, kTypeRawData, "MAPCURSOR.PAL" },
|
||||
{ kLolMapStringId, kLolTypeRaw16, "MAPSTRID.LST" },
|
||||
{ kLolLegendData, kTypeRawData, false },
|
||||
{ kLolMapCursorOvl, kTypeRawData, false },
|
||||
{ kLolMapStringId, kLolTypeRaw16, false },
|
||||
|
||||
{ kLolSpellbookAnim, k3TypeRaw16to8, "MBOOKA.DEF" },
|
||||
{ kLolSpellbookCoords, k3TypeRaw16to8, "MBOOKC.DEF" },
|
||||
{ kLolHealShapeFrames, kTypeRawData, "MHEAL.SHP" },
|
||||
{ kLolLightningDefs, kTypeRawData, "MLGHTNG.DEF" },
|
||||
{ kLolFireballCoords, kLolTypeRaw16, "MFIREBLL.DEF" },
|
||||
{ kLolSpellbookAnim, k3TypeRaw16to8, false },
|
||||
{ kLolSpellbookCoords, k3TypeRaw16to8, false },
|
||||
{ kLolHealShapeFrames, kTypeRawData, false },
|
||||
{ kLolLightningDefs, kTypeRawData, false },
|
||||
{ kLolFireballCoords, kLolTypeRaw16, false },
|
||||
|
||||
{ kLolCredits, kTypeRawData, "LOLCREDITS" },
|
||||
{ kLolCredits, kTypeRawData, false },
|
||||
|
||||
{ kLolHistory, kTypeRawData, "HISTORY.FLS" },
|
||||
{ kLolHistory, kTypeRawData, false },
|
||||
|
||||
{ -1, 0, 0 }
|
||||
};
|
||||
@ -309,59 +305,16 @@ const ExtractFilename *getFilenameDesc(const int id) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// filename processing
|
||||
|
||||
bool getFilename(char *dstFilename, const ExtractInformation *info, const int id) {
|
||||
const ExtractFilename *i = getFilenameDesc(id);
|
||||
|
||||
if (!i)
|
||||
bool isLangSpecific(const int id) {
|
||||
const ExtractFilename *desc = getFilenameDesc(id);
|
||||
if (!desc)
|
||||
return false;
|
||||
|
||||
const ExtractType *type = findExtractType(i->type);
|
||||
type->createFilename(dstFilename, info, i->filename);
|
||||
return true;
|
||||
return desc->langSpecific;
|
||||
}
|
||||
|
||||
// misc tables
|
||||
|
||||
const SpecialExtension specialTable[] = {
|
||||
{ kTalkieVersion, "CD" },
|
||||
{ kDemoVersion, "DEM" },
|
||||
{ kTalkieDemoVersion, "CD.DEM" },
|
||||
|
||||
{ -1, 0 }
|
||||
};
|
||||
|
||||
const Language languageTable[] = {
|
||||
{ EN_ANY, "ENG" },
|
||||
{ DE_DEU, "GER" },
|
||||
{ FR_FRA, "FRE" },
|
||||
{ IT_ITA, "ITA" },
|
||||
{ ES_ESP, "SPA" },
|
||||
{ JA_JPN, "JPN" },
|
||||
{ -1, 0 }
|
||||
};
|
||||
|
||||
const PlatformExtension platformTable[] = {
|
||||
{ kPlatformAmiga, "AMG" },
|
||||
{ kPlatformFMTowns, "TNS" },
|
||||
{ kPlatformPC98, "98" },
|
||||
|
||||
{ -1, 0 }
|
||||
};
|
||||
|
||||
// index generation
|
||||
|
||||
struct IndexTable {
|
||||
int type;
|
||||
int value;
|
||||
|
||||
bool operator==(int t) const {
|
||||
return (type == t);
|
||||
}
|
||||
};
|
||||
|
||||
const IndexTable iGameTable[] = {
|
||||
const TypeTable gameTable[] = {
|
||||
{ kKyra1, 0 },
|
||||
{ kKyra2, 1 },
|
||||
{ kKyra3, 2 },
|
||||
@ -370,10 +323,10 @@ const IndexTable iGameTable[] = {
|
||||
};
|
||||
|
||||
byte getGameID(int game) {
|
||||
return std::find(iGameTable, iGameTable + ARRAYSIZE(iGameTable) - 1, game)->value;
|
||||
return std::find(gameTable, gameTable + ARRAYSIZE(gameTable), game)->value;
|
||||
}
|
||||
|
||||
/*const IndexTable iLanguageTable[] = {
|
||||
const TypeTable languageTable[] = {
|
||||
{ EN_ANY, 0 },
|
||||
{ FR_FRA, 1 },
|
||||
{ DE_DEU, 2 },
|
||||
@ -384,10 +337,10 @@ byte getGameID(int game) {
|
||||
};
|
||||
|
||||
byte getLanguageID(int lang) {
|
||||
return std::find(iLanguageTable, iLanguageTable + ARRAYSIZE(iLanguageTable) - 1, lang)->value;
|
||||
}*/
|
||||
return std::find(languageTable, languageTable + ARRAYSIZE(languageTable), lang)->value;
|
||||
}
|
||||
|
||||
const IndexTable iPlatformTable[] = {
|
||||
const TypeTable platformTable[] = {
|
||||
{ kPlatformPC, 0 },
|
||||
{ kPlatformAmiga, 1 },
|
||||
{ kPlatformFMTowns, 2 },
|
||||
@ -397,10 +350,10 @@ const IndexTable iPlatformTable[] = {
|
||||
};
|
||||
|
||||
byte getPlatformID(int platform) {
|
||||
return std::find(iPlatformTable, iPlatformTable + ARRAYSIZE(iPlatformTable) - 1, platform)->value;
|
||||
return std::find(platformTable, platformTable + ARRAYSIZE(platformTable), platform)->value;
|
||||
}
|
||||
|
||||
const IndexTable iSpecialTable[] = {
|
||||
const TypeTable specialTable[] = {
|
||||
{ kNoSpecial, 0 },
|
||||
{ kTalkieVersion, 1 },
|
||||
{ kDemoVersion, 2 },
|
||||
@ -409,9 +362,27 @@ const IndexTable iSpecialTable[] = {
|
||||
};
|
||||
|
||||
byte getSpecialID(int special) {
|
||||
return std::find(iSpecialTable, iSpecialTable + ARRAYSIZE(iSpecialTable) - 1, special)->value;
|
||||
return std::find(specialTable, specialTable + ARRAYSIZE(specialTable), special)->value;
|
||||
}
|
||||
|
||||
// filename processing
|
||||
|
||||
bool getFilename(char *dstFilename, const ExtractInformation *info, const int id) {
|
||||
const ExtractFilename *i = getFilenameDesc(id);
|
||||
|
||||
if (!i)
|
||||
return false;
|
||||
|
||||
// GAME, PLATFORM, SPECIAL, TYPE, ID[, LANG]
|
||||
if (i->langSpecific)
|
||||
sprintf(dstFilename, "%01X%01X%01X%02X%03X%01X", getGameID(info->game), getPlatformID(info->platform), getSpecialID(info->special), getTypeID(i->type), id, getLanguageID(info->lang));
|
||||
else
|
||||
sprintf(dstFilename, "%01X%01X%01X%02X%03X", getGameID(info->game), getPlatformID(info->platform), getSpecialID(info->special), getTypeID(i->type), id);
|
||||
return true;
|
||||
}
|
||||
|
||||
// index generation
|
||||
|
||||
typedef uint16 GameDef;
|
||||
|
||||
GameDef createGameDef(const ExtractInformation *eI) {
|
||||
@ -910,12 +881,12 @@ const char *getIdString(const int id) {
|
||||
return "k1GUIStrings";
|
||||
case k1ConfigStrings:
|
||||
return "k1ConfigStrings";
|
||||
case k1TOWNSSfxWDTable:
|
||||
return "k1TOWNSSfxWDTable";
|
||||
case k1TOWNSSfxBTTable:
|
||||
return "k1TOWNSSfxBTTable";
|
||||
case k1TOWNSCDATable:
|
||||
return "k1TOWNSCDATable";
|
||||
case k1TownsSFXwdTable:
|
||||
return "k1TownsSFXwdTable";
|
||||
case k1TownsSFXbtTable:
|
||||
return "k1TownsSFXbtTable";
|
||||
case k1TownsCDATable:
|
||||
return "k1TownsCDATable";
|
||||
case k1PC98StoryStrings:
|
||||
return "k1PC98StoryStrings";
|
||||
case k1PC98IntroSfx:
|
||||
@ -954,8 +925,6 @@ const char *getIdString(const int id) {
|
||||
return "k2IngamePakFiles";
|
||||
case k2IngameSfxFiles:
|
||||
return "k2IngameSfxFiles";
|
||||
case k2IngameSfxFilesTns:
|
||||
return "k2IngameSfxFilesTns";
|
||||
case k2IngameSfxIndex:
|
||||
return "k2IngameSfxIndex";
|
||||
case k2IngameTracks:
|
||||
@ -966,8 +935,8 @@ const char *getIdString(const int id) {
|
||||
return "k2IngameTalkObjIndex";
|
||||
case k2IngameTimJpStrings:
|
||||
return "k2IngameTimJpStrings";
|
||||
case k2IngameItemAnimData:
|
||||
return "k2IngameItemAnimData";
|
||||
case k2IngameShapeAnimData:
|
||||
return "k2IngameShapeAnimData";
|
||||
case k2IngameTlkDemoStrings:
|
||||
return "k2IngameTlkDemoStrings";
|
||||
case k3MainMenuStrings:
|
||||
@ -986,8 +955,6 @@ const char *getIdString(const int id) {
|
||||
return "k3ItemMagicTable";
|
||||
case k3ItemStringMap:
|
||||
return "k3ItemStringMap";
|
||||
case kLolSeqplayIntroTracks:
|
||||
return "kLolSeqplayIntroTracks";
|
||||
case kLolIngamePakFiles:
|
||||
return "kLolIngamePakFiles";
|
||||
case kLolCharacterDefs:
|
||||
@ -998,12 +965,12 @@ const char *getIdString(const int id) {
|
||||
return "kLolIngameSfxIndex";
|
||||
case kLolMusicTrackMap:
|
||||
return "kLolMusicTrackMap";
|
||||
case kLolGMSfxIndex:
|
||||
return "kLolGMSfxIndex";
|
||||
case kLolMT32SfxIndex:
|
||||
return "kLolMT32SfxIndex";
|
||||
case kLolPcSpkSfxIndex:
|
||||
return "kLolPcSpkSfxIndex";
|
||||
case kLolIngameGMSfxIndex:
|
||||
return "kLolIngameGMSfxIndex";
|
||||
case kLolIngameMT32SfxIndex:
|
||||
return "kLolIngameMT32SfxIndex";
|
||||
case kLolIngamePcSpkSfxIndex:
|
||||
return "kLolIngamePcSpkSfxIndex";
|
||||
case kLolSpellProperties:
|
||||
return "kLolSpellProperties";
|
||||
case kLolGameShapeMap:
|
||||
@ -1026,8 +993,8 @@ const char *getIdString(const int id) {
|
||||
return "kLolExpRequirements";
|
||||
case kLolMonsterModifiers:
|
||||
return "kLolMonsterModifiers";
|
||||
case kLolMonsterLevelOffsets:
|
||||
return "kLolMonsterLevelOffsets";
|
||||
case kLolMonsterShiftOffsets:
|
||||
return "kLolMonsterShiftOffsets";
|
||||
case kLolMonsterDirFlags:
|
||||
return "kLolMonsterDirFlags";
|
||||
case kLolMonsterScaleY:
|
||||
@ -1036,8 +1003,8 @@ const char *getIdString(const int id) {
|
||||
return "kLolMonsterScaleX";
|
||||
case kLolMonsterScaleWH:
|
||||
return "kLolMonsterScaleWH";
|
||||
case kLolFlyingItemShp:
|
||||
return "kLolFlyingItemShp";
|
||||
case kLolFlyingObjectShp:
|
||||
return "kLolFlyingObjectShp";
|
||||
case kLolInventoryDesc:
|
||||
return "kLolInventoryDesc";
|
||||
case kLolLevelShpList:
|
||||
@ -1052,10 +1019,10 @@ const char *getIdString(const int id) {
|
||||
return "kLolStashSetup";
|
||||
case kLolDscUnk1:
|
||||
return "kLolDscUnk1";
|
||||
case kLolDscShapeIndex1:
|
||||
return "kLolDscShapeIndex1";
|
||||
case kLolDscShapeIndex2:
|
||||
return "kLolDscShapeIndex2";
|
||||
case kLolDscShapeIndex:
|
||||
return "kLolDscShapeIndex";
|
||||
case kLolDscOvlMap:
|
||||
return "kLolDscOvlMap";
|
||||
case kLolDscScaleWidthData:
|
||||
return "kLolDscScaleWidthData";
|
||||
case kLolDscScaleHeightData:
|
||||
@ -1078,8 +1045,8 @@ const char *getIdString(const int id) {
|
||||
return "kLolDscBlockMap";
|
||||
case kLolDscDimMap:
|
||||
return "kLolDscDimMap";
|
||||
case kLolDscShapeOvlIndex:
|
||||
return "kLolDscShapeOvlIndex";
|
||||
case kLolDscOvlIndex:
|
||||
return "kLolDscOvlIndex";
|
||||
case kLolDscBlockIndex:
|
||||
return "kLolDscBlockIndex";
|
||||
case kLolDscDoor1:
|
||||
@ -1183,25 +1150,25 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
|
||||
const ExtractFilename *fDesc = getFilenameDesc(id);
|
||||
|
||||
if (!fDesc) {
|
||||
fprintf(stderr, "ERROR: couldn't find file description for id %d\n", id);
|
||||
fprintf(stderr, "ERROR: couldn't find file description for id %d/%s\n", id, getIdString(id));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isLangSpecific(fDesc->type))
|
||||
if (fDesc->langSpecific)
|
||||
extractInfo.lang = i->second.desc.lang;
|
||||
else
|
||||
extractInfo.lang = UNK_LANG;
|
||||
|
||||
filename[0] = 0;
|
||||
if (!getFilename(filename, &extractInfo, id)) {
|
||||
fprintf(stderr, "ERROR: couldn't get filename for id %d\n", 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\n", id);
|
||||
fprintf(stderr, "ERROR: couldn't find type description for id %d/%s (%d)\n", id, getIdString(id), fDesc->type);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1210,7 +1177,7 @@ bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
|
||||
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\n", id);
|
||||
fprintf(stderr, "ERROR: couldn't extract id %d/%s\n", id, getIdString(id));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1368,11 +1335,7 @@ bool getExtractionData(const Game *g, Search &search, ExtractMap &map) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const ExtractFilename *fDesc = getFilenameDesc(*entry);
|
||||
if (!fDesc)
|
||||
continue;
|
||||
|
||||
if (isLangSpecific(fDesc->type)) {
|
||||
if (isLangSpecific(*entry)) {
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
if (g->lang[i] == -1)
|
||||
continue;
|
||||
|
@ -25,20 +25,7 @@
|
||||
|
||||
#include "util.h"
|
||||
|
||||
struct Language {
|
||||
int lang;
|
||||
const char *ext;
|
||||
};
|
||||
|
||||
extern const Language languageTable[];
|
||||
|
||||
struct PlatformExtension {
|
||||
int platform;
|
||||
const char *ext;
|
||||
};
|
||||
|
||||
extern const PlatformExtension platformTable[];
|
||||
|
||||
// This list has to match orderwise (and thus value wise) the static data list of "engines/kyra/resource.h"!
|
||||
enum kExtractID {
|
||||
k1ForestSeq = 0,
|
||||
k1KallakWritingSeq,
|
||||
@ -68,9 +55,6 @@ enum kExtractID {
|
||||
|
||||
k1CharacterImageFilenames,
|
||||
|
||||
k1AudioTracks,
|
||||
k1AudioTracksIntro,
|
||||
|
||||
k1ItemNames,
|
||||
k1TakenStrings,
|
||||
k1PlacedStrings,
|
||||
@ -144,23 +128,28 @@ enum kExtractID {
|
||||
k1GUIStrings,
|
||||
k1ConfigStrings,
|
||||
|
||||
k1TOWNSSfxWDTable,
|
||||
k1TOWNSSfxBTTable,
|
||||
k1TOWNSCDATable,
|
||||
k1AudioTracks,
|
||||
k1AudioTracksIntro,
|
||||
|
||||
k1CreditsStrings,
|
||||
|
||||
k1TownsSFXwdTable,
|
||||
k1TownsSFXbtTable,
|
||||
k1TownsCDATable,
|
||||
|
||||
k1PC98StoryStrings,
|
||||
k1PC98IntroSfx,
|
||||
k1CreditsStrings,
|
||||
|
||||
k1AmigaIntroSFXTable,
|
||||
k1AmigaGameSFXTable,
|
||||
|
||||
k2SeqplayPakFiles,
|
||||
k2SeqplayCredits,
|
||||
k2SeqplayCreditsSpecial,
|
||||
k2SeqplayStrings,
|
||||
k2SeqplaySfxFiles,
|
||||
k2SeqplayTlkFiles,
|
||||
k2SeqplaySeqData,
|
||||
k2SeqplayCredits,
|
||||
k2SeqplayCreditsSpecial,
|
||||
k2SeqplayIntroTracks,
|
||||
k2SeqplayFinaleTracks,
|
||||
k2SeqplayIntroCDA,
|
||||
@ -169,13 +158,12 @@ enum kExtractID {
|
||||
|
||||
k2IngamePakFiles,
|
||||
k2IngameSfxFiles,
|
||||
k2IngameSfxFilesTns,
|
||||
k2IngameSfxIndex,
|
||||
k2IngameTracks,
|
||||
k2IngameCDA,
|
||||
k2IngameTalkObjIndex,
|
||||
k2IngameTimJpStrings,
|
||||
k2IngameItemAnimData,
|
||||
k2IngameShapeAnimData,
|
||||
k2IngameTlkDemoStrings,
|
||||
|
||||
k3MainMenuStrings,
|
||||
@ -187,17 +175,14 @@ enum kExtractID {
|
||||
k3ItemMagicTable,
|
||||
k3ItemStringMap,
|
||||
|
||||
kLolSeqplayIntroTracks,
|
||||
|
||||
kLolIngamePakFiles,
|
||||
|
||||
kLolCharacterDefs,
|
||||
kLolIngameSfxFiles,
|
||||
kLolIngameSfxIndex,
|
||||
kLolMusicTrackMap,
|
||||
kLolGMSfxIndex,
|
||||
kLolMT32SfxIndex,
|
||||
kLolPcSpkSfxIndex,
|
||||
kLolIngameGMSfxIndex,
|
||||
kLolIngameMT32SfxIndex,
|
||||
kLolIngamePcSpkSfxIndex,
|
||||
kLolSpellProperties,
|
||||
kLolGameShapeMap,
|
||||
kLolSceneItemOffs,
|
||||
@ -209,12 +194,12 @@ enum kExtractID {
|
||||
kLolCharDefsAkshel,
|
||||
kLolExpRequirements,
|
||||
kLolMonsterModifiers,
|
||||
kLolMonsterLevelOffsets,
|
||||
kLolMonsterShiftOffsets,
|
||||
kLolMonsterDirFlags,
|
||||
kLolMonsterScaleY,
|
||||
kLolMonsterScaleX,
|
||||
kLolMonsterScaleWH,
|
||||
kLolFlyingItemShp,
|
||||
kLolFlyingObjectShp,
|
||||
kLolInventoryDesc,
|
||||
|
||||
kLolLevelShpList,
|
||||
@ -224,8 +209,8 @@ enum kExtractID {
|
||||
kLolStashSetup,
|
||||
|
||||
kLolDscUnk1,
|
||||
kLolDscShapeIndex1,
|
||||
kLolDscShapeIndex2,
|
||||
kLolDscShapeIndex,
|
||||
kLolDscOvlMap,
|
||||
kLolDscScaleWidthData,
|
||||
kLolDscScaleHeightData,
|
||||
kLolDscX,
|
||||
@ -237,13 +222,13 @@ enum kExtractID {
|
||||
kLolDscDimData2,
|
||||
kLolDscBlockMap,
|
||||
kLolDscDimMap,
|
||||
kLolDscShapeOvlIndex,
|
||||
kLolDscBlockIndex,
|
||||
kLolDscDoor1,
|
||||
kLolDscDoorScale,
|
||||
kLolDscDoor4,
|
||||
kLolDscDoorX,
|
||||
kLolDscDoorY,
|
||||
kLolDscOvlIndex,
|
||||
kLolDscBlockIndex,
|
||||
|
||||
kLolScrollXTop,
|
||||
kLolScrollYTop,
|
||||
@ -280,7 +265,7 @@ enum kExtractID {
|
||||
struct ExtractFilename {
|
||||
int id;
|
||||
int type;
|
||||
const char *filename;
|
||||
bool langSpecific;
|
||||
};
|
||||
|
||||
enum kSpecial {
|
||||
@ -290,18 +275,11 @@ enum kSpecial {
|
||||
kTalkieDemoVersion
|
||||
};
|
||||
|
||||
struct SpecialExtension {
|
||||
int special;
|
||||
const char *ext;
|
||||
};
|
||||
|
||||
extern const SpecialExtension specialTable[];
|
||||
|
||||
enum kGame {
|
||||
kKyra1 = 0,
|
||||
kKyra2 = 1,
|
||||
kKyra3 = 2,
|
||||
kLol = 4
|
||||
kKyra2,
|
||||
kKyra3,
|
||||
kLol
|
||||
};
|
||||
|
||||
struct Game {
|
||||
@ -319,4 +297,13 @@ extern const Game * const gameDescs[];
|
||||
|
||||
const int *getNeedList(const Game *g);
|
||||
|
||||
struct TypeTable {
|
||||
int type;
|
||||
int value;
|
||||
|
||||
bool operator==(int t) const {
|
||||
return (type == t);
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -23,13 +23,10 @@
|
||||
|
||||
#include "extract.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace {
|
||||
|
||||
// Filename creation
|
||||
|
||||
void createFilename(char *dstFilename, const ExtractInformation *info, const char *filename);
|
||||
void createLangFilename(char *dstFilename, const ExtractInformation *info, const char *filename);
|
||||
|
||||
// Extraction function prototypes
|
||||
|
||||
bool extractRaw(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
|
||||
@ -55,82 +52,62 @@ bool extractLolButtonDefs(PAKFile &out, const ExtractInformation *info, const by
|
||||
// Extraction type table
|
||||
|
||||
const ExtractType extractTypeTable[] = {
|
||||
{ kTypeLanguageList, extractStrings, createLangFilename },
|
||||
{ kTypeStringList, extractStrings, createFilename },
|
||||
{ kTypeRoomList, extractRooms, createFilename },
|
||||
{ kTypeShapeList, extractShapes, createFilename },
|
||||
{ kTypeRawData, extractRaw, createFilename },
|
||||
{ kTypeAmigaSfxTable, extractAmigaSfx, createFilename },
|
||||
{ kTypeTownsWDSfxTable, extractWdSfx, createFilename },
|
||||
{ kTypeStringList, extractStrings },
|
||||
{ kTypeRoomList, extractRooms },
|
||||
{ kTypeShapeList, extractShapes },
|
||||
{ kTypeRawData, extractRaw },
|
||||
{ kTypeAmigaSfxTable, extractAmigaSfx },
|
||||
{ kTypeTownsWDSfxTable, extractWdSfx },
|
||||
|
||||
{ k2TypeSeqData, extractHofSeqData, createFilename },
|
||||
{ k2TypeShpDataV1, extractHofShapeAnimDataV1, createFilename },
|
||||
{ k2TypeShpDataV2, extractHofShapeAnimDataV2, createFilename },
|
||||
{ k2TypeSoundList, extractStringsWoSuffix, createFilename },
|
||||
{ k2TypeLangSoundList, extractStringsWoSuffix, createLangFilename },
|
||||
{ k2TypeSize10StringList, extractStrings10, createFilename },
|
||||
{ k2TypeSfxList, extractPaddedStrings, createFilename },
|
||||
{ k3TypeRaw16to8, extractRaw16to8, createFilename },
|
||||
{ k3TypeShpData, extractMrShapeAnimData, createFilename },
|
||||
{ k2TypeSeqData, extractHofSeqData },
|
||||
{ k2TypeShpDataV1, extractHofShapeAnimDataV1 },
|
||||
{ k2TypeShpDataV2, extractHofShapeAnimDataV2 },
|
||||
{ k2TypeSoundList, extractStringsWoSuffix },
|
||||
{ k2TypeLangSoundList, extractStringsWoSuffix },
|
||||
{ k2TypeSize10StringList, extractStrings10 },
|
||||
{ k2TypeSfxList, extractPaddedStrings },
|
||||
{ k3TypeRaw16to8, extractRaw16to8 },
|
||||
{ k3TypeShpData, extractMrShapeAnimData },
|
||||
|
||||
{ kLolTypeRaw16, extractRaw16, createFilename },
|
||||
{ kLolTypeRaw32, extractRaw32, createFilename },
|
||||
{ kLolTypeButtonDef, extractLolButtonDefs, createFilename },
|
||||
{ kLolTypeCharData, extractRaw },
|
||||
{ kLolTypeSpellData, extractRaw },
|
||||
{ kLolTypeCompassData, extractRaw16to8 },
|
||||
{ kLolTypeFlightShpData, extractRaw16to8 },
|
||||
{ kLolTypeRaw16, extractRaw16 },
|
||||
{ kLolTypeRaw32, extractRaw32 },
|
||||
{ kLolTypeButtonDef, extractLolButtonDefs },
|
||||
|
||||
{ -1, 0, 0}
|
||||
{ -1, 0 }
|
||||
};
|
||||
|
||||
void createFilename(char *dstFilename, const ExtractInformation *info, const char *filename) {
|
||||
strcpy(dstFilename, filename);
|
||||
|
||||
static const char *gidExtensions[] = { "", ".K2", ".K3", 0, ".LOL" };
|
||||
strcat(dstFilename, gidExtensions[info->game]);
|
||||
|
||||
for (const SpecialExtension *specialE = specialTable; specialE->special != -1; ++specialE) {
|
||||
if (specialE->special == info->special) {
|
||||
strcat(dstFilename, ".");
|
||||
strcat(dstFilename, specialE->ext);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (const PlatformExtension *platformE = platformTable; platformE->platform != -1; ++platformE) {
|
||||
if (platformE->platform == info->platform) {
|
||||
strcat(dstFilename, ".");
|
||||
strcat(dstFilename, platformE->ext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createLangFilename(char *dstFilename, const ExtractInformation *info, const char *filename) {
|
||||
strcpy(dstFilename, filename);
|
||||
|
||||
for (const Language *langE = languageTable; langE->lang != -1; ++langE) {
|
||||
if (langE->lang == info->lang) {
|
||||
strcat(dstFilename, ".");
|
||||
strcat(dstFilename, langE->ext);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const char *gidExtensions[] = { "", ".K2", ".K3", 0, ".LOL" };
|
||||
strcat(dstFilename, gidExtensions[info->game]);
|
||||
|
||||
for (const SpecialExtension *specialE = specialTable; specialE->special != -1; ++specialE) {
|
||||
if (specialE->special == info->special) {
|
||||
strcat(dstFilename, ".");
|
||||
strcat(dstFilename, specialE->ext);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (const PlatformExtension *platformE = platformTable; platformE->platform != -1; ++platformE) {
|
||||
if (platformE->platform == info->platform) {
|
||||
strcat(dstFilename, ".");
|
||||
strcat(dstFilename, platformE->ext);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 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 },
|
||||
{ kTypeAmigaSfxTable, 4 },
|
||||
{ kTypeTownsWDSfxTable, 1 },
|
||||
{ k2TypeSeqData, 5 },
|
||||
{ k2TypeShpDataV1, 6 },
|
||||
{ k2TypeShpDataV2, 7 },
|
||||
{ k2TypeSoundList, 0 },
|
||||
{ k2TypeLangSoundList, 0 },
|
||||
{ k2TypeSize10StringList, 0 },
|
||||
{ k2TypeSfxList, 0 },
|
||||
{ k3TypeRaw16to8, 1 },
|
||||
{ k3TypeShpData, 7 },
|
||||
{ kLolTypeRaw16, 15 },
|
||||
{ kLolTypeRaw32, 16 },
|
||||
{ kLolTypeButtonDef, 14 },
|
||||
{ kLolTypeCharData, 10 },
|
||||
{ kLolTypeSpellData, 11 },
|
||||
{ kLolTypeCompassData, 12 },
|
||||
{ kLolTypeFlightShpData, 13 },
|
||||
{ -1, 0 }
|
||||
};
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
@ -144,15 +121,9 @@ const ExtractType *findExtractType(const int type) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// TODO: Get rid of this....
|
||||
bool isLangSpecific(const int type) {
|
||||
const ExtractType *ext = findExtractType(type);
|
||||
if (!ext)
|
||||
return false;
|
||||
|
||||
return (ext->createFilename == createLangFilename);
|
||||
byte getTypeID(int type) {
|
||||
return std::find(typeTable, typeTable + ARRAYSIZE(typeTable), type)->value;
|
||||
}
|
||||
|
||||
// Extractor implementation
|
||||
|
||||
namespace {
|
||||
@ -179,6 +150,10 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
|
||||
} else if (info->platform == kPlatformPC) {
|
||||
if (id == k2IngamePakFiles)
|
||||
fmtPatch = 4;
|
||||
|
||||
// HACK
|
||||
if (id == k2SeqplayIntroTracks && info->game == kLol)
|
||||
return extractStringsWoSuffix(out, info, data, size, filename, id);
|
||||
}
|
||||
|
||||
uint32 entries = 0;
|
||||
@ -332,6 +307,10 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
|
||||
}
|
||||
|
||||
bool extractStrings10(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
|
||||
// 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;
|
||||
|
||||
|
@ -28,8 +28,7 @@
|
||||
#include "util.h"
|
||||
|
||||
enum kExtractType {
|
||||
kTypeLanguageList = 0,
|
||||
kTypeStringList,
|
||||
kTypeStringList = 0,
|
||||
kTypeRoomList,
|
||||
kTypeShapeList,
|
||||
kTypeRawData,
|
||||
@ -49,7 +48,11 @@ enum kExtractType {
|
||||
|
||||
kLolTypeRaw16,
|
||||
kLolTypeRaw32,
|
||||
kLolTypeButtonDef
|
||||
kLolTypeButtonDef,
|
||||
kLolTypeCharData,
|
||||
kLolTypeSpellData,
|
||||
kLolTypeCompassData,
|
||||
kLolTypeFlightShpData
|
||||
};
|
||||
|
||||
struct ExtractInformation {
|
||||
@ -62,11 +65,10 @@ struct ExtractInformation {
|
||||
struct ExtractType {
|
||||
int type;
|
||||
bool (*extract)(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
|
||||
void (*createFilename)(char *dstFilename, const ExtractInformation *info, const char *filename);
|
||||
};
|
||||
|
||||
const ExtractType *findExtractType(const int type);
|
||||
bool isLangSpecific(const int type);
|
||||
byte getTypeID(int type);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -405,9 +405,9 @@ const int kyra1TownsNeed[] = {
|
||||
k1NewGameString,
|
||||
k1ConfigStrings,
|
||||
|
||||
k1TOWNSSfxWDTable,
|
||||
k1TOWNSSfxBTTable,
|
||||
k1TOWNSCDATable,
|
||||
k1TownsSFXwdTable,
|
||||
k1TownsSFXbtTable,
|
||||
k1TownsCDATable,
|
||||
k1AudioTracks,
|
||||
k1CreditsStrings,
|
||||
-1
|
||||
@ -571,7 +571,7 @@ const int kyra2CDNeed[] = {
|
||||
k2IngameSfxIndex,
|
||||
k2IngameTracks,
|
||||
k2IngameTalkObjIndex,
|
||||
k2IngameItemAnimData,
|
||||
k2IngameShapeAnimData,
|
||||
-1
|
||||
};
|
||||
|
||||
@ -589,7 +589,7 @@ const int kyra2CDDemoNeed[] = {
|
||||
k2IngameSfxIndex,
|
||||
k2IngameTracks,
|
||||
k2IngameTalkObjIndex,
|
||||
k2IngameItemAnimData,
|
||||
k2IngameShapeAnimData,
|
||||
k2IngameTlkDemoStrings,
|
||||
-1
|
||||
};
|
||||
@ -606,7 +606,7 @@ const int kyra2FloppyNeed[] = {
|
||||
k2IngameSfxIndex,
|
||||
k2IngameTracks,
|
||||
k2IngameTalkObjIndex,
|
||||
k2IngameItemAnimData,
|
||||
k2IngameShapeAnimData,
|
||||
-1
|
||||
};
|
||||
|
||||
@ -618,12 +618,12 @@ const int kyra2TownsNeed[] = {
|
||||
k2SeqplayIntroCDA,
|
||||
k2SeqplayFinaleCDA,
|
||||
k2IngamePakFiles,
|
||||
k2IngameSfxFilesTns,
|
||||
k2IngameSfxFiles,
|
||||
k2IngameSfxIndex,
|
||||
k2IngameCDA,
|
||||
k2IngameTalkObjIndex,
|
||||
k2IngameTimJpStrings,
|
||||
k2IngameItemAnimData,
|
||||
k2IngameShapeAnimData,
|
||||
-1
|
||||
};
|
||||
|
||||
@ -655,9 +655,9 @@ const int lolFloppyNeed[] = {
|
||||
kLolIngameSfxFiles,
|
||||
kLolIngameSfxIndex,
|
||||
kLolMusicTrackMap,
|
||||
kLolGMSfxIndex,
|
||||
kLolMT32SfxIndex,
|
||||
kLolPcSpkSfxIndex,
|
||||
kLolIngameGMSfxIndex,
|
||||
kLolIngameMT32SfxIndex,
|
||||
kLolIngamePcSpkSfxIndex,
|
||||
kLolSpellProperties,
|
||||
kLolGameShapeMap,
|
||||
kLolSceneItemOffs,
|
||||
@ -669,12 +669,12 @@ const int lolFloppyNeed[] = {
|
||||
kLolCharDefsAkshel,
|
||||
kLolExpRequirements,
|
||||
kLolMonsterModifiers,
|
||||
kLolMonsterLevelOffsets,
|
||||
kLolMonsterShiftOffsets,
|
||||
kLolMonsterDirFlags,
|
||||
kLolMonsterScaleY,
|
||||
kLolMonsterScaleX,
|
||||
kLolMonsterScaleWH,
|
||||
kLolFlyingItemShp,
|
||||
kLolFlyingObjectShp,
|
||||
kLolInventoryDesc,
|
||||
|
||||
kLolLevelShpList,
|
||||
@ -682,8 +682,8 @@ const int lolFloppyNeed[] = {
|
||||
kLolCompassDefs,
|
||||
kLolStashSetup,
|
||||
kLolDscUnk1,
|
||||
kLolDscShapeIndex1,
|
||||
kLolDscShapeIndex2,
|
||||
kLolDscShapeIndex,
|
||||
kLolDscOvlMap,
|
||||
kLolDscScaleWidthData,
|
||||
kLolDscScaleHeightData,
|
||||
kLolDscX,
|
||||
@ -695,7 +695,7 @@ const int lolFloppyNeed[] = {
|
||||
kLolDscDimData2,
|
||||
kLolDscBlockMap,
|
||||
kLolDscDimMap,
|
||||
kLolDscShapeOvlIndex,
|
||||
kLolDscOvlIndex,
|
||||
kLolDscBlockIndex,
|
||||
kLolDscDoor1,
|
||||
kLolDscDoorScale,
|
||||
@ -749,12 +749,12 @@ const int lolPC98Need[] = {
|
||||
kLolCharDefsAkshel,
|
||||
kLolExpRequirements,
|
||||
kLolMonsterModifiers,
|
||||
kLolMonsterLevelOffsets,
|
||||
kLolMonsterShiftOffsets,
|
||||
kLolMonsterDirFlags,
|
||||
kLolMonsterScaleY,
|
||||
kLolMonsterScaleX,
|
||||
kLolMonsterScaleWH,
|
||||
kLolFlyingItemShp,
|
||||
kLolFlyingObjectShp,
|
||||
kLolInventoryDesc,
|
||||
|
||||
kLolLevelShpList,
|
||||
@ -762,8 +762,8 @@ const int lolPC98Need[] = {
|
||||
kLolCompassDefs,
|
||||
kLolStashSetup,
|
||||
kLolDscUnk1,
|
||||
kLolDscShapeIndex1,
|
||||
kLolDscShapeIndex2,
|
||||
kLolDscShapeIndex,
|
||||
kLolDscOvlMap,
|
||||
kLolDscScaleWidthData,
|
||||
kLolDscScaleHeightData,
|
||||
kLolDscX,
|
||||
@ -775,7 +775,7 @@ const int lolPC98Need[] = {
|
||||
kLolDscDimData2,
|
||||
kLolDscBlockMap,
|
||||
kLolDscDimMap,
|
||||
kLolDscShapeOvlIndex,
|
||||
kLolDscOvlIndex,
|
||||
kLolDscBlockIndex,
|
||||
kLolDscDoor1,
|
||||
kLolDscDoorScale,
|
||||
@ -819,9 +819,9 @@ const int lolCDNeed[] = {
|
||||
kLolIngameSfxFiles,
|
||||
kLolIngameSfxIndex,
|
||||
kLolMusicTrackMap,
|
||||
kLolGMSfxIndex,
|
||||
kLolMT32SfxIndex,
|
||||
kLolPcSpkSfxIndex,
|
||||
kLolIngameGMSfxIndex,
|
||||
kLolIngameMT32SfxIndex,
|
||||
kLolIngamePcSpkSfxIndex,
|
||||
kLolSpellProperties,
|
||||
kLolGameShapeMap,
|
||||
kLolSceneItemOffs,
|
||||
@ -833,12 +833,12 @@ const int lolCDNeed[] = {
|
||||
kLolCharDefsAkshel,
|
||||
kLolExpRequirements,
|
||||
kLolMonsterModifiers,
|
||||
kLolMonsterLevelOffsets,
|
||||
kLolMonsterShiftOffsets,
|
||||
kLolMonsterDirFlags,
|
||||
kLolMonsterScaleY,
|
||||
kLolMonsterScaleX,
|
||||
kLolMonsterScaleWH,
|
||||
kLolFlyingItemShp,
|
||||
kLolFlyingObjectShp,
|
||||
kLolInventoryDesc,
|
||||
|
||||
kLolLevelShpList,
|
||||
@ -847,8 +847,8 @@ const int lolCDNeed[] = {
|
||||
kLolItemPrices,
|
||||
kLolStashSetup,
|
||||
kLolDscUnk1,
|
||||
kLolDscShapeIndex1,
|
||||
kLolDscShapeIndex2,
|
||||
kLolDscShapeIndex,
|
||||
kLolDscOvlMap,
|
||||
kLolDscScaleWidthData,
|
||||
kLolDscScaleHeightData,
|
||||
kLolDscX,
|
||||
@ -860,7 +860,7 @@ const int lolCDNeed[] = {
|
||||
kLolDscDimData2,
|
||||
kLolDscBlockMap,
|
||||
kLolDscDimMap,
|
||||
kLolDscShapeOvlIndex,
|
||||
kLolDscOvlIndex,
|
||||
kLolDscBlockIndex,
|
||||
kLolDscDoor1,
|
||||
kLolDscDoorScale,
|
||||
@ -901,7 +901,7 @@ const int lolDemoNeed[] = {
|
||||
k2SeqplayStrings,
|
||||
k2SeqplaySeqData,
|
||||
k2SeqplaySfxFiles,
|
||||
kLolSeqplayIntroTracks,
|
||||
k2SeqplayIntroTracks,
|
||||
-1
|
||||
};
|
||||
|
||||
|
@ -965,19 +965,19 @@ const ExtractEntrySearchData k1ConfigStringsProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData k1TOWNSSfxWDTableProvider[] = {
|
||||
const ExtractEntrySearchData k1TownsSFXwdTableProvider[] = {
|
||||
{ UNK_LANG, kPlatformFMTowns, { 0x00012608, 0x006717A1, { { 0x34, 0xDD, 0x2D, 0xA5, 0x14, 0x05, 0xEE, 0x2F, 0x93, 0x7C, 0x78, 0x4D, 0xCA, 0x13, 0xED, 0x93 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData k1TOWNSSfxBTTableProvider[] = {
|
||||
const ExtractEntrySearchData k1TownsSFXbtTableProvider[] = {
|
||||
{ UNK_LANG, kPlatformFMTowns, { 0x00000100, 0x00007FFE, { { 0xEF, 0x3D, 0x9F, 0x31, 0xE7, 0x19, 0x1E, 0x4F, 0xF3, 0x66, 0x42, 0xC8, 0x0D, 0x89, 0x96, 0x20 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData k1TOWNSCDATableProvider[] = {
|
||||
const ExtractEntrySearchData k1TownsCDATableProvider[] = {
|
||||
{ UNK_LANG, kPlatformFMTowns, { 0x000002C4, 0x0000C5ED, { { 0x76, 0x86, 0x77, 0xF9, 0x85, 0x23, 0x32, 0x56, 0x3C, 0x06, 0x03, 0xCF, 0x0C, 0x49, 0x94, 0xB5 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
@ -1142,13 +1142,8 @@ const ExtractEntrySearchData k2IngamePakFilesProvider[] = {
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData k2IngameSfxFilesProvider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData k2IngameSfxFilesTnsProvider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000967, 0x0002101A, { { 0x09, 0xC7, 0xB7, 0x2A, 0x76, 0xF1, 0x4B, 0x87, 0xC5, 0x83, 0xFF, 0xF3, 0xDB, 0x3C, 0x66, 0x60 } } } },
|
||||
{ UNK_LANG, kPlatformPC, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
|
||||
{ UNK_LANG, kPlatformFMTowns, { 0x00000967, 0x0002101A, { { 0x09, 0xC7, 0xB7, 0x2A, 0x76, 0xF1, 0x4B, 0x87, 0xC5, 0x83, 0xFF, 0xF3, 0xDB, 0x3C, 0x66, 0x60 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
@ -1190,7 +1185,7 @@ const ExtractEntrySearchData k2IngameTimJpStringsProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData k2IngameItemAnimDataProvider[] = {
|
||||
const ExtractEntrySearchData k2IngameShapeAnimDataProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000348, 0x0001AAEB, { { 0x67, 0xD1, 0x03, 0xBF, 0x4B, 0xEC, 0x80, 0x26, 0x5D, 0x1D, 0x0E, 0x5B, 0xF1, 0xE8, 0x4C, 0x64 } } } }, // CD
|
||||
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000348, 0x00002473, { { 0xBC, 0x18, 0x51, 0xFA, 0x51, 0x1D, 0x24, 0x7D, 0x44, 0xD0, 0xE2, 0x38, 0x31, 0x33, 0x3B, 0x56 } } } }, // floppy + FM-TOWNS
|
||||
@ -1254,12 +1249,6 @@ const ExtractEntrySearchData k3ItemStringMapProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolSeqplayIntroTracksProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x0000001A, 0x0000096C, { { 0xC2, 0xBD, 0x2C, 0x65, 0xD3, 0xFE, 0xF1, 0x6A, 0xE7, 0x34, 0x18, 0x0C, 0x86, 0x95, 0x66, 0x35 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolIngamePakFilesProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000088, 0x0000224F, { { 0xDA, 0x24, 0x18, 0xA3, 0xEF, 0x16, 0x70, 0x8F, 0xA8, 0xC2, 0x2E, 0xC2, 0xED, 0x39, 0x03, 0xD1 } } } },
|
||||
{ UNK_LANG, kPlatformPC98, { 0x00000084, 0x00002125, { { 0x7A, 0x89, 0xE2, 0x36, 0xEC, 0x6F, 0x52, 0x2B, 0xEF, 0xBA, 0x3D, 0x28, 0x54, 0xDA, 0xFB, 0x72 } } } },
|
||||
@ -1295,19 +1284,19 @@ const ExtractEntrySearchData kLolMusicTrackMapProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolGMSfxIndexProvider[] = {
|
||||
const ExtractEntrySearchData kLolIngameGMSfxIndexProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x000000FA, 0x00006281, { { 0x25, 0x89, 0xB0, 0x3B, 0x12, 0x09, 0x02, 0xF6, 0xFE, 0x76, 0xD5, 0xC9, 0x5B, 0x88, 0xAC, 0xAA } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolMT32SfxIndexProvider[] = {
|
||||
const ExtractEntrySearchData kLolIngameMT32SfxIndexProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x000000FA, 0x00006579, { { 0x16, 0x40, 0x1C, 0x09, 0x69, 0xA9, 0x0D, 0x6D, 0x4B, 0x0C, 0x99, 0xF0, 0x40, 0x5D, 0xBB, 0x6E } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolPcSpkSfxIndexProvider[] = {
|
||||
const ExtractEntrySearchData kLolIngamePcSpkSfxIndexProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x000000FA, 0x00005EFC, { { 0xA3, 0x5C, 0x69, 0xED, 0x13, 0xEC, 0x08, 0x0E, 0xFA, 0x72, 0x83, 0x0D, 0xD7, 0x8D, 0x9C, 0x70 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
@ -1381,7 +1370,7 @@ const ExtractEntrySearchData kLolMonsterModifiersProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolMonsterLevelOffsetsProvider[] = {
|
||||
const ExtractEntrySearchData kLolMonsterShiftOffsetsProvider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000020, 0x00000803, { { 0x30, 0x55, 0x74, 0x0D, 0xC7, 0x3B, 0xD9, 0x5C, 0x26, 0xF0, 0x4E, 0x8F, 0xE4, 0x4D, 0xCB, 0x2A } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
@ -1412,7 +1401,7 @@ const ExtractEntrySearchData kLolMonsterScaleWHProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolFlyingItemShpProvider[] = {
|
||||
const ExtractEntrySearchData kLolFlyingObjectShpProvider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000082, 0x00000252, { { 0xDE, 0x9D, 0x89, 0xAF, 0x0F, 0x50, 0x14, 0x60, 0x68, 0xAF, 0x19, 0xD8, 0x54, 0x8A, 0x36, 0x27 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
@ -1461,13 +1450,13 @@ const ExtractEntrySearchData kLolDscUnk1Provider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolDscShapeIndex1Provider[] = {
|
||||
const ExtractEntrySearchData kLolDscShapeIndexProvider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000728, { { 0x14, 0xBA, 0x6D, 0x5C, 0x7D, 0x20, 0x0D, 0x35, 0xA7, 0xB0, 0x8D, 0x2F, 0x1D, 0x2A, 0x49, 0xA4 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolDscShapeIndex2Provider[] = {
|
||||
const ExtractEntrySearchData kLolDscOvlMapProvider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000001F, { { 0x9C, 0xF2, 0xCC, 0x48, 0x42, 0xC6, 0x76, 0x83, 0xD3, 0x1A, 0x43, 0x42, 0x7F, 0xEF, 0x19, 0x0F } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
@ -1539,7 +1528,7 @@ const ExtractEntrySearchData kLolDscDimMapProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kLolDscShapeOvlIndexProvider[] = {
|
||||
const ExtractEntrySearchData kLolDscOvlIndexProvider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000028, 0x00000048, { { 0x3E, 0x8E, 0x62, 0xAF, 0xD1, 0x28, 0x39, 0x73, 0x0D, 0xD8, 0x4A, 0xA7, 0xF4, 0xD7, 0x32, 0x25 } } } },
|
||||
|
||||
EXTRACT_END_ENTRY
|
||||
@ -1816,9 +1805,9 @@ const ExtractEntry extractProviders[] = {
|
||||
{ k1SpecialPalette33, k1SpecialPalette33Provider },
|
||||
{ k1GUIStrings, k1GUIStringsProvider },
|
||||
{ k1ConfigStrings, k1ConfigStringsProvider },
|
||||
{ k1TOWNSSfxWDTable, k1TOWNSSfxWDTableProvider },
|
||||
{ k1TOWNSSfxBTTable, k1TOWNSSfxBTTableProvider },
|
||||
{ k1TOWNSCDATable, k1TOWNSCDATableProvider },
|
||||
{ k1TownsSFXwdTable, k1TownsSFXwdTableProvider },
|
||||
{ k1TownsSFXbtTable, k1TownsSFXbtTableProvider },
|
||||
{ k1TownsCDATable, k1TownsCDATableProvider },
|
||||
{ k1PC98StoryStrings, k1PC98StoryStringsProvider },
|
||||
{ k1PC98IntroSfx, k1PC98IntroSfxProvider },
|
||||
{ k1CreditsStrings, k1CreditsStringsProvider },
|
||||
@ -1838,13 +1827,12 @@ const ExtractEntry extractProviders[] = {
|
||||
{ k2SeqplayShapeAnimData, k2SeqplayShapeAnimDataProvider },
|
||||
{ k2IngamePakFiles, k2IngamePakFilesProvider },
|
||||
{ k2IngameSfxFiles, k2IngameSfxFilesProvider },
|
||||
{ k2IngameSfxFilesTns, k2IngameSfxFilesTnsProvider },
|
||||
{ k2IngameSfxIndex, k2IngameSfxIndexProvider },
|
||||
{ k2IngameTracks, k2IngameTracksProvider },
|
||||
{ k2IngameCDA, k2IngameCDAProvider },
|
||||
{ k2IngameTalkObjIndex, k2IngameTalkObjIndexProvider },
|
||||
{ k2IngameTimJpStrings, k2IngameTimJpStringsProvider },
|
||||
{ k2IngameItemAnimData, k2IngameItemAnimDataProvider },
|
||||
{ k2IngameShapeAnimData, k2IngameShapeAnimDataProvider },
|
||||
{ k2IngameTlkDemoStrings, k2IngameTlkDemoStringsProvider },
|
||||
{ k3MainMenuStrings, k3MainMenuStringsProvider },
|
||||
{ k3MusicFiles, k3MusicFilesProvider },
|
||||
@ -1854,15 +1842,14 @@ const ExtractEntry extractProviders[] = {
|
||||
{ k3ItemAnimData, k3ItemAnimDataProvider },
|
||||
{ k3ItemMagicTable, k3ItemMagicTableProvider },
|
||||
{ k3ItemStringMap, k3ItemStringMapProvider },
|
||||
{ kLolSeqplayIntroTracks, kLolSeqplayIntroTracksProvider },
|
||||
{ kLolIngamePakFiles, kLolIngamePakFilesProvider },
|
||||
{ kLolCharacterDefs, kLolCharacterDefsProvider },
|
||||
{ kLolIngameSfxFiles, kLolIngameSfxFilesProvider },
|
||||
{ kLolIngameSfxIndex, kLolIngameSfxIndexProvider },
|
||||
{ kLolMusicTrackMap, kLolMusicTrackMapProvider },
|
||||
{ kLolGMSfxIndex, kLolGMSfxIndexProvider },
|
||||
{ kLolMT32SfxIndex, kLolMT32SfxIndexProvider },
|
||||
{ kLolPcSpkSfxIndex, kLolPcSpkSfxIndexProvider },
|
||||
{ kLolIngameGMSfxIndex, kLolIngameGMSfxIndexProvider },
|
||||
{ kLolIngameMT32SfxIndex, kLolIngameMT32SfxIndexProvider },
|
||||
{ kLolIngamePcSpkSfxIndex, kLolIngamePcSpkSfxIndexProvider },
|
||||
{ kLolSpellProperties, kLolSpellPropertiesProvider },
|
||||
{ kLolGameShapeMap, kLolGameShapeMapProvider },
|
||||
{ kLolSceneItemOffs, kLolSceneItemOffsProvider },
|
||||
@ -1874,12 +1861,12 @@ const ExtractEntry extractProviders[] = {
|
||||
{ kLolCharDefsAkshel, kLolCharDefsAkshelProvider },
|
||||
{ kLolExpRequirements, kLolExpRequirementsProvider },
|
||||
{ kLolMonsterModifiers, kLolMonsterModifiersProvider },
|
||||
{ kLolMonsterLevelOffsets, kLolMonsterLevelOffsetsProvider },
|
||||
{ kLolMonsterShiftOffsets, kLolMonsterShiftOffsetsProvider },
|
||||
{ kLolMonsterDirFlags, kLolMonsterDirFlagsProvider },
|
||||
{ kLolMonsterScaleY, kLolMonsterScaleYProvider },
|
||||
{ kLolMonsterScaleX, kLolMonsterScaleXProvider },
|
||||
{ kLolMonsterScaleWH, kLolMonsterScaleWHProvider },
|
||||
{ kLolFlyingItemShp, kLolFlyingItemShpProvider },
|
||||
{ kLolFlyingObjectShp, kLolFlyingObjectShpProvider },
|
||||
{ kLolInventoryDesc, kLolInventoryDescProvider },
|
||||
{ kLolLevelShpList, kLolLevelShpListProvider },
|
||||
{ kLolLevelDatList, kLolLevelDatListProvider },
|
||||
@ -1887,8 +1874,8 @@ const ExtractEntry extractProviders[] = {
|
||||
{ kLolItemPrices, kLolItemPricesProvider },
|
||||
{ kLolStashSetup, kLolStashSetupProvider },
|
||||
{ kLolDscUnk1, kLolDscUnk1Provider },
|
||||
{ kLolDscShapeIndex1, kLolDscShapeIndex1Provider },
|
||||
{ kLolDscShapeIndex2, kLolDscShapeIndex2Provider },
|
||||
{ kLolDscShapeIndex, kLolDscShapeIndexProvider },
|
||||
{ kLolDscOvlMap, kLolDscOvlMapProvider },
|
||||
{ kLolDscScaleWidthData, kLolDscScaleWidthDataProvider },
|
||||
{ kLolDscScaleHeightData, kLolDscScaleHeightDataProvider },
|
||||
{ kLolDscX, kLolDscXProvider },
|
||||
@ -1900,7 +1887,7 @@ const ExtractEntry extractProviders[] = {
|
||||
{ kLolDscDimData2, kLolDscDimData2Provider },
|
||||
{ kLolDscBlockMap, kLolDscBlockMapProvider },
|
||||
{ kLolDscDimMap, kLolDscDimMapProvider },
|
||||
{ kLolDscShapeOvlIndex, kLolDscShapeOvlIndexProvider },
|
||||
{ kLolDscOvlIndex, kLolDscOvlIndexProvider },
|
||||
{ kLolDscBlockIndex, kLolDscBlockIndexProvider },
|
||||
{ kLolDscDoor1, kLolDscDoor1Provider },
|
||||
{ kLolDscDoorScale, kLolDscDoorScaleProvider },
|
||||
|
Loading…
x
Reference in New Issue
Block a user