const int kyra1FloppyNeed[] = {
	kKallakWritingSeq,
	kMalcolmTreeSeq,
	kWestwoodLogoSeq,
	kKyrandiaLogoSeq,
	kKallakMalcolmSeq,
	kForestSeq,
	kIntroCPSStrings,
	kIntroCOLStrings,
	kIntroWSAStrings,
	kIntroStrings,
	kRoomList,
	kRoomFilenames,
	kCharacterImageFilenames,
	kDefaultShapes,
	kItemNames,
	kTakenStrings,
	kPlacedStrings,
	kDroppedStrings,
	kNoDropStrings,
	kAmuleteAnimSeq,
	kPaletteList1,
	kPaletteList2,
	kPaletteList3,
	kPaletteList4,
	kPaletteList5,
	kPaletteList6,
	kPaletteList7,
	kPaletteList8,
	kPaletteList9,
	kPaletteList10,
	kPaletteList11,
	kPaletteList12,
	kPaletteList13,
	kPaletteList14,
	kPaletteList15,
	kPaletteList16,
	kPaletteList17,
	kPaletteList18,
	kPaletteList19,
	kPaletteList20,
	kPaletteList21,
	kPaletteList22,
	kPaletteList23,
	kPaletteList24,
	kPaletteList25,
	kPaletteList26,
	kPaletteList27,
	kPaletteList28,
	kPaletteList29,
	kPaletteList30,
	kPaletteList31,
	kPaletteList32,
	kPaletteList33,
	kPutDownString,
	kWaitAmuletString,
	kBlackJewelString,
	kHealingTipString,
	kPoisonGoneString,
	kHealing1Shapes,
	kHealing2Shapes,
	kThePoisonStrings,
	kFluteStrings,
	kPoisonDeathShapes,
	kFluteShapes,
	kWinter1Shapes,
	kWinter2Shapes,
	kWinter3Shapes,
	kDrinkShapes,
	kWispShapes,
	kMagicAnimShapes,
	kBranStoneShapes,
	kWispJewelStrings,
	kMagicJewelStrings,
	kFlaskFullString,
	kFullFlaskString,
	kOutroReunionSeq,
	kOutroHomeString,
	kVeryCleverString,
	kGUIStrings,
	kNewGameString,
	kConfigStrings,
	kAudioTracks,
	kAudioTracksIntro,
	-1
};

const int kyra1CDNeed[] = {
	kKallakWritingSeq,
	kMalcolmTreeSeq,
	kWestwoodLogoSeq,
	kKyrandiaLogoSeq,
	kKallakMalcolmSeq,
	kForestSeq,
	kIntroCPSStrings,
	kIntroCOLStrings,
	kIntroWSAStrings,
	kIntroStrings,
	kRoomList,
	kRoomFilenames,
	kCharacterImageFilenames,
	kDefaultShapes,
	kItemNames,
	kTakenStrings,
	kPlacedStrings,
	kDroppedStrings,
	kNoDropStrings,
	kAmuleteAnimSeq,
	kPaletteList1,
	kPaletteList2,
	kPaletteList3,
	kPaletteList4,
	kPaletteList5,
	kPaletteList6,
	kPaletteList7,
	kPaletteList8,
	kPaletteList9,
	kPaletteList10,
	kPaletteList11,
	kPaletteList12,
	kPaletteList13,
	kPaletteList14,
	kPaletteList15,
	kPaletteList16,
	kPaletteList17,
	kPaletteList18,
	kPaletteList19,
	kPaletteList20,
	kPaletteList21,
	kPaletteList22,
	kPaletteList23,
	kPaletteList24,
	kPaletteList25,
	kPaletteList26,
	kPaletteList27,
	kPaletteList28,
	kPaletteList29,
	kPaletteList30,
	kPaletteList31,
	kPaletteList32,
	kPaletteList33,
	kPutDownString,
	kWaitAmuletString,
	kBlackJewelString,
	kHealingTipString,
	kPoisonGoneString,
	kHealing1Shapes,
	kHealing2Shapes,
	kThePoisonStrings,
	kFluteStrings,
	kPoisonDeathShapes,
	kFluteShapes,
	kWinter1Shapes,
	kWinter2Shapes,
	kWinter3Shapes,
	kDrinkShapes,
	kWispShapes,
	kMagicAnimShapes,
	kBranStoneShapes,
	kWispJewelStrings,
	kMagicJewelStrings,
	kFlaskFullString,
	kFullFlaskString,
	kOutroReunionSeq,
	kOutroHomeString,
	kVeryCleverString,
	kGUIStrings,
	kNewGameString,
	kConfigStrings,
	kAudioTracks,
	kAudioTracksIntro,
	-1
};

const int kyra1DemoNeed[] = {
	kWestwoodLogoSeq,
	kKyrandiaLogoSeq,
	kIntroCPSStrings,
	kIntroCOLStrings,
	kIntroWSAStrings,
	kIntroStrings,
	kDemo1Seq,
	kDemo2Seq,
	kDemo3Seq,
	kDemo4Seq,
	kAudioTracksIntro,
	-1
};

const int kyra1TownsEngNeed[] = {
	kKallakWritingSeq,
	kMalcolmTreeSeq,
	kWestwoodLogoSeq,
	kKyrandiaLogoSeq,
	kKallakMalcolmSeq,
	kForestSeq,
	kIntroCPSStrings,
	kIntroCOLStrings,
	kIntroWSAStrings,
	kIntroStrings,
	kRoomList,
	kRoomFilenames,
	kCharacterImageFilenames,
	kDefaultShapes,
	kItemNames,
	kTakenStrings,
	kPlacedStrings,
	kDroppedStrings,
	kNoDropStrings,
	kAmuleteAnimSeq,
	kPaletteList1,
	kPaletteList2,
	kPaletteList3,
	kPaletteList4,
	kPaletteList5,
	kPaletteList6,
	kPaletteList7,
	kPaletteList8,
	kPaletteList9,
	kPaletteList10,
	kPaletteList11,
	kPaletteList12,
	kPaletteList13,
	kPaletteList14,
	kPaletteList15,
	kPaletteList16,
	kPaletteList17,
	kPaletteList18,
	kPaletteList19,
	kPaletteList20,
	kPaletteList21,
	kPaletteList22,
	kPaletteList23,
	kPaletteList24,
	kPaletteList25,
	kPaletteList26,
	kPaletteList27,
	kPaletteList28,
	kPaletteList29,
	kPaletteList30,
	kPaletteList31,
	kPaletteList32,
	kPaletteList33,
	kPutDownString,
	kWaitAmuletString,
	kBlackJewelString,
	kHealingTipString,
	kPoisonGoneString,
	kHealing1Shapes,
	kHealing2Shapes,
	kThePoisonStrings,
	kFluteStrings,
	kPoisonDeathShapes,
	kFluteShapes,
	kWinter1Shapes,
	kWinter2Shapes,
	kWinter3Shapes,
	kDrinkShapes,
	kWispShapes,
	kMagicAnimShapes,
	kBranStoneShapes,
	kWispJewelStrings,
	kMagicJewelStrings,
	kFlaskFullString,
	kFullFlaskString,
	kOutroReunionSeq,
	kOutroHomeString,
	kVeryCleverString,
	kGUIStrings,
	kNewGameString,
	kConfigStrings,

	kKyra1TownsSFXwdTable,
	kKyra1TownsSFXbtTable,
	kKyra1TownsCDATable,
	kAudioTracks,
	kCreditsStrings,
	-1
};

const int kyra1TownsJapNeed[] = {
	kIntroStrings,
	kItemNames,
	kTakenStrings,
	kPlacedStrings,
	kDroppedStrings,
	kNoDropStrings,
	kPutDownString,
	kWaitAmuletString,
	kBlackJewelString,
	kHealingTipString,
	kPoisonGoneString,
	kThePoisonStrings,
	kFluteStrings,
	kWispJewelStrings,
	kMagicJewelStrings,
	kFlaskFullString,
	kFullFlaskString,
	kOutroHomeString,
	kVeryCleverString,
	kGUIStrings,
	kNewGameString,
	kConfigStrings,
	-1
};

const int kyra1AmigaNeed[] = {
	kKallakWritingSeq,
	kMalcolmTreeSeq,
	kWestwoodLogoSeq,
	kKyrandiaLogoSeq,
	kKallakMalcolmSeq,
	kForestSeq,
	kIntroCPSStrings,
	kIntroWSAStrings,
	kIntroCOLStrings,
	kIntroStrings,
	kRoomList,
	kRoomFilenames,
	kCharacterImageFilenames,
	kDefaultShapes,
	kItemNames,
	kTakenStrings,
	kPlacedStrings,
	kDroppedStrings,
	kNoDropStrings,
	kAmuleteAnimSeq,
	kPutDownString,
	kWaitAmuletString,
	kBlackJewelString,
	kHealingTipString,
	kPoisonGoneString,
	kHealing1Shapes,
	kHealing2Shapes,
	kThePoisonStrings,
	kFluteStrings,
	kPoisonDeathShapes,
	kFluteShapes,
	kWinter1Shapes,
	kWinter2Shapes,
	kWinter3Shapes,
	kDrinkShapes,
	kWispShapes,
	kMagicAnimShapes,
	kBranStoneShapes,
	kWispJewelStrings,
	kMagicJewelStrings,
	kFlaskFullString,
	kFullFlaskString,
	kOutroReunionSeq,
	kOutroHomeString,
	kVeryCleverString,
	kGUIStrings,
	kNewGameString,
	kConfigStrings,
	kCreditsStrings,
	-1
};

const int kyra2CDFile1EngNeed[] = {
	k2SeqplayPakFiles,
	k2SeqplayCredits,
	k2SeqplayCreditsSpecial,
	k2SeqplayStrings,
	k2SeqplaySfxFiles,
	k2SeqplayTlkFiles,
	k2SeqplaySeqData,
	k2SeqplayIntroTracks,
	k2SeqplayFinaleTracks,
	-1
};

const int kyra2CDFile1FreNeed[] = {
	k2SeqplayStrings,
	k2SeqplayTlkFiles,
	-1
};

const int kyra2CDFile1GerNeed[] = {
	k2SeqplayStrings,
	k2SeqplayTlkFiles,
	-1
};

const int kyra2CDFile1ItaNeed[] = {
	k2SeqplayStrings,
	k2SeqplayTlkFiles,
	-1
};

const int kyra2CDFile2EngNeed[] = {
	k2IngameSfxFiles,
	k2IngameSfxIndex,
	k2IngameTracks,
	k2IngameTalkObjIndex,
	k2IngameItemAnimData,
	-1
};

const int kyra2CDFile2FreNeed[] = {
	-1
};

const int kyra2CDFile2GerNeed[] = {
	-1
};

const int kyra2FloppyFile1Need[] = {
	k2SeqplayPakFiles,
	k2SeqplayStrings,
	k2SeqplaySfxFiles,
	k2SeqplayIntroTracks,
	k2SeqplayFinaleTracks,
	k2SeqplaySeqData,
	-1
};

const int kyra2FloppyFile2Need[] = {
	k2IngamePakFiles,
	k2IngameSfxFiles,
	k2IngameSfxIndex,
	k2IngameTracks,
	k2IngameTalkObjIndex,
	k2IngameItemAnimData,
	-1
};

const int kyra2TownsFile1EngNeed[] = {
	k2SeqplayPakFiles,
	k2SeqplayStrings,
	k2SeqplaySfxFiles,
	k2SeqplaySeqData,
	k2SeqplayIntroCDA,
	k2SeqplayFinaleCDA,
	-1
};

const int kyra2TownsFile1JapNeed[] = {
	k2SeqplayStrings,
	-1
};

const int kyra2TownsFile2EngNeed[] = {
	k2IngamePakFiles,
	k2IngameSfxFilesTns,
	k2IngameSfxIndex,
	k2IngameCDA,
	k2IngameTalkObjIndex,
	k2IngameTimJpStrings,
	k2IngameItemAnimData,
	-1
};

const int kyra2TownsFile2JapNeed[] = {
	-1
};

const int kyra2DemoNeed[] = {
	k2SeqplayPakFiles,
	k2SeqplaySeqData,
	k2SeqplaySfxFiles,
	k2SeqplayIntroTracks,
	k2SeqplayShapeAnimData,
	-1
};

const int kyra2TlkDemoNeed[] = {
	k2IngameTlkDemoStrings,
	-1
};

const int kyra3Need[] = {
	k3MainMenuStrings,
	k3MusicFiles,
	k3ScoreTable,
	k3SfxFiles,
	k3SfxMap,
	k3ItemAnimData,
	k3ItemMagicTable,
	k3ItemStringMap,
	-1
};

const int lolCDFile2Need[] = {
	lolCharacterDefs,
	lolIngameSfxFiles,
	lolIngameSfxIndex,
	lolMusicTrackMap,
	lolGMSfxIndex,
	lolMT32SfxIndex,
	//lolADLSfxIndex,
	lolSpellProperties,
	lolGameShapeMap,
	lolSceneItemOffs,
	lolCharInvIndex,
	lolCharInvDefs,
	lolCharDefsMan,
	lolCharDefsWoman,
	lolCharDefsKieran,
	//lolCharDefsUnk,
	lolCharDefsAkshel,
	lolExpRequirements,
	lolMonsterModifiers,
	lolMonsterLevelOffsets,
	lolMonsterDirFlags,
	lolMonsterScaleY,
	lolMonsterScaleX,
	lolMonsterScaleWH,
	lolFlyingItemShp,
	lolInventoryDesc,

	lolLevelShpList,
	lolLevelDatList,
	lolCompassDefs,
	lolItemPrices,
	lolStashSetup,
	lolDscUnk1,
	lolDscShapeIndex1,
	lolDscShapeIndex2,
	lolDscScaleWidthData,
	lolDscScaleHeightData,
	lolDscX,
	lolDscY,
	lolDscTileIndex,
	lolDscUnk2,
	lolDscDoorShapeIndex,
	lolDscDimData1,
	lolDscDimData2,
	lolDscBlockMap,
	lolDscDimMap,
	lolDscShapeOvlIndex,
	lolDscBlockIndex,
	lolDscDoor1,
	lolDscDoorScale,
	lolDscDoor4,
	lolDscDoorX,
	lolDscDoorY,

	lolScrollXTop,
	lolScrollYTop,
	lolScrollXBottom,
	lolScrollYBottom,

	lolButtonDefs,
	lolButtonList1,
	lolButtonList1,
	lolButtonList2,
	lolButtonList3,
	lolButtonList4,
	lolButtonList5,
	lolButtonList6,
	lolButtonList7,
	lolButtonList8,

	lolLegendData,
	lolMapCursorOvl,
	lolMapStringId,
	//lolMapPal,

	-1
};

const int lolDemoNeed[] = {
	k2SeqplayPakFiles,
	k2SeqplayStrings,
	k2SeqplaySeqData,
	k2SeqplaySfxFiles,
	lolSeqplayIntroTracks,
	-1
};

const GameNeed gameNeedTable[] = {
	{ kKyra1, -1, kyra1FloppyNeed },
	{ kKyra1, kTalkieVersion, kyra1CDNeed },
	{ kKyra1, kFMTownsVersionE , kyra1TownsEngNeed },
	{ kKyra1, kFMTownsVersionJ, kyra1TownsJapNeed },
	{ kKyra1, kAmigaVersion, kyra1AmigaNeed },
	{ kKyra1, kDemoVersion, kyra1DemoNeed },

	{ kKyra2, k2FloppyFile1, kyra2FloppyFile1Need },
	{ kKyra2, k2FloppyFile2, kyra2FloppyFile2Need },
	{ kKyra2, k2CDFile1E, kyra2CDFile1EngNeed },
	{ kKyra2, k2CDFile1F, kyra2CDFile1FreNeed },
	{ kKyra2, k2CDFile1G, kyra2CDFile1GerNeed },
	{ kKyra2, k2CDFile1I, kyra2CDFile1ItaNeed }, // Italian fan translation
	{ kKyra2, k2CDFile2E, kyra2CDFile2EngNeed },
	{ kKyra2, k2CDFile2F, kyra2CDFile2FreNeed },
	{ kKyra2, k2CDFile2G, kyra2CDFile2GerNeed },
	{ kKyra2, k2TownsFile1E , kyra2TownsFile1EngNeed },
	{ kKyra2, k2TownsFile1J, kyra2TownsFile1JapNeed },
	{ kKyra2, k2TownsFile2E , kyra2TownsFile2EngNeed },
	{ kKyra2, k2TownsFile2J, kyra2TownsFile2JapNeed },
	{ kKyra2, k2DemoVersion, kyra2DemoNeed},
	{ kKyra2, k2DemoVersionTlkE, kyra2TlkDemoNeed},
	{ kKyra2, k2DemoVersionTlkF, kyra2TlkDemoNeed},
	{ kKyra2, k2DemoVersionTlkG, kyra2TlkDemoNeed},
	{ kLol, k2DemoLol, lolDemoNeed},

	{ kKyra3, -1, kyra3Need },

	{ kLol, kLolCD, lolCDFile2Need },

	{ -1, -1, 0 }
};

const SpecialExtension specialTable[] = {
	{ kTalkieVersion, "CD" },
	{ kDemoVersion, "DEM" },
	{ kFMTownsVersionE , "TNS" },
	{ kFMTownsVersionJ, "TNS" },
	{ kAmigaVersion, "AMG" },

	{ k2CDFile1E, "CD" },
	{ k2CDFile1F, "CD" },
	{ k2CDFile1G, "CD" },
	{ k2CDFile1I, "CD" },
	{ k2CDFile2E, "CD" },
	{ k2CDFile2F, "CD" },
	{ k2CDFile2G, "CD" },

	{ k2TownsFile1E, "TNS" },
	{ k2TownsFile1J, "TNS" },
	{ k2TownsFile2E, "TNS" },
	{ k2TownsFile2J, "TNS" },
	{ k2DemoVersion, "DEM" },
	{ k2DemoLol, "DEM" },

	{ kLolCD, "CD" },

	{ -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 }
};