Logo Search packages:      
Sourcecode: scummvm version File versions  Download package

Kyra Namespace Reference

Detailed Description

This is the namespace of the Kyra engine.

Status of this engine:

The KYRA engine supports all three Kyrandia games by Westwood. It also supports Westwood's Lands of Lore. There are various platform ports of the different games, almost all of them are fully supported. Only the Macintosh port of Kyrandia 1 makes a difference here, which lacks support for sound effects and music.

The different translations of the games are mostly supported, since every translation requires some work for kyra.dat for example, it is almost impossible to support translations, without owning them. There a currently a few reported unsupported translations:

The primary maintainer for the engine is LordHoto, although some parts are maintained by _athrxx. If you have questions about parts of the code, the following rough description might help in determining who you should ask: _athrxx is the maintainer for the Lands of Lore subengine, he also maintains most of the FM-TOWNS and PC98 specific code (especially the sound code, also some ingame code) and the Kyrandia 2 sequence player code. LordHoto is responsible for the rest of the codebase, he also worked on the graphics output for 16 color PC98 games.

Other people who worked on this engine include cyx, who initially started to work on Kyrandia 1 support, vinterstum, who did various things for Kyrandia 1 and started to work on the Kyrandia 2 sequence player code and also on the TIM script code, and eriktorbjorn, who helped out naming our AdLib player code and also contributed a work around for a music bug in the "Pool of Sorrow" scene of Kyrandia 1, which is also present in the original. All three mentioned developers are not actively working on KYRA anymore.

The engine is mostly finished code wise. A possible remaining task is proper refactoring, which might help in reducing binary size and along with it runtime memory use, but of course might lead to regressions (since the current code makes no problems on our low end ports, it is pretty minor priority though, since the benefit would be mostly nicer code). The biggest task left is the kyra.dat handling, which is currently being revised by LordHoto.

Supported games:


struct  ActiveItemAnim
struct  ActiveText
struct  ActiveWSA
class  AdLibDriver
class  AMIGAFont
struct  AmigaSfxTable
struct  Anim
class  Animator_LoK
struct  AudioDataStruct
class  AUDStream
struct  BeadState
struct  Button
class  CachedArchive
struct  Character
class  CmpVocDecoder
class  Debugger
class  Debugger_HoF
class  Debugger_LoK
class  Debugger_v2
class  DOSFont
struct  EMCData
class  EMCInterpreter
struct  EMCState
class  FileExpander
class  FileExpanderSource
class  Font
struct  FrameControl
struct  GameFlags
class  GUI
class  GUI_HoF
class  GUI_LoK
class  GUI_MR
class  GUI_v2
struct  HofSeqData
class  IFFParser
class  InstallerLoader
struct  Item
struct  ItemAnimData_v1
struct  ItemAnimData_v2
struct  KeyCodeHash
class  KyraAudioStream
class  KyraEngine_HoF
class  KyraEngine_LoK
class  KyraEngine_MR
class  KyraEngine_v1
class  KyraEngine_v2
class  MainMenu
struct  Menu
struct  MenuItem
class  MidiDriver_PCSpeaker
class  MidiOutput
class  MixedSoundDriver
class  Movie
struct  NestedSequence
class  Palette
class  PauseTimer
class  PlainArchive
class  ResArchiveLoader
class  ResLoaderInsMalcolm
class  ResLoaderPak
class  ResLoaderTlk
class  Resource
struct  Room
struct  SceneExits
class  Screen
class  Screen_HoF
class  Screen_LoK
class  Screen_LoK_16
class  Screen_MR
class  Screen_v2
struct  ScreenDim
struct  SeqLoop
class  SeqPlayer
struct  Sequence
struct  Shape
class  SJISFont
class  Sound
class  SoundAdLibPC
class  SoundAmiga
class  SoundDigital
class  SoundMidiPC
class  SoundPC98
class  SoundTowns
class  SoundTownsPC98_v2
struct  Sprite
class  Sprites
class  StaticResource
class  TextDisplayer
class  TextDisplayer_HoF
class  TextDisplayer_MR
struct  TIM
class  TimAnimator
struct  TimerEntry
class  TimerManager
class  TIMInterpreter
class  Towns_EuphonyChannel
class  Towns_EuphonyDriver
class  Towns_EuphonyFmChannel
class  Towns_EuphonyParser
class  Towns_EuphonyPcmChannel
class  Towns_EuphonyTrackQueue
class  TownsPC98_OpnChannel
class  TownsPC98_OpnChannelPCM
class  TownsPC98_OpnChannelSSG
class  TownsPC98_OpnCore
class  TownsPC98_OpnDriver
class  TownsPC98_OpnOperator
class  TownsPC98_OpnPercussionSource
class  TownsPC98_OpnSfxChannel
class  TownsPC98_OpnSquareSineSource
class  Util
class  VQAMovie
class  WSAMovie_v1
class  WSAMovie_v2
class  WSAMovieAmiga


typedef Common::Functor1
< EMCState *, int > 
typedef Common::Functor1Mem
< EMCState *, int,
KyraEngine_LoK > 
typedef Common::Functor1Mem
< EMCState *, int,
KyraEngine_HoF > 
typedef Common::Functor1Mem
< EMCState *, int,
KyraEngine_MR > 
typedef int(KyraEngine_HoF::* SeqProc )(WSAMovie_v2 *, int, int, int)
typedef Common::Functor1< int,
void > 
typedef Common::Functor2
< const TIM *, const uint16
*, int > 
typedef Common::Functor2Mem
< const TIM *, const uint16
*, int, KyraEngine_HoF > 
typedef Common::Functor0< void > UpdateFunctor


enum  { GI_KYRA1 = 0, GI_KYRA2 = 1, GI_KYRA3 = 2, GI_LOL = 4 }
enum  DebugLevels {
  kDebugLevelScriptFuncs = 1 << 0, kDebugLevelScript = 1 << 1, kDebugLevelSprites = 1 << 2, kDebugLevelScreen = 1 << 3,
  kDebugLevelSound = 1 << 4, kDebugLevelAnimator = 1 << 5, kDebugLevelMain = 1 << 6, kDebugLevelGUI = 1 << 7,
  kDebugLevelSequence = 1 << 8, kDebugLevelMovie = 1 << 9, kDebugLevelTimer = 1 << 10
enum  EnvelopeState {
  s_ready, s_attacking, s_decaying, s_sustaining,
enum  KyraResources {
  kLoadAll = -1, k1ForestSeq = 1, 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, kMaxResIDs
enum  MusicDataID { kMusicIntro = 0, kMusicIngame, kMusicFinale }
enum  NestedSequences {
  kSequenceFiggle = 0, kSequenceOver1, kSequenceOver2, kSequenceForest,
  kSequenceDragon, kSequenceDarm, kSequenceLibrary2, kSequenceLibrary3,
  kSequenceMarco, kSequenceHand1a, kSequenceHand1b, kSequenceHand1c,
  kSequenceHand2, kSequenceHand3, kSequenceHand4
enum  NestedSequencesDemo {
  kSequenceDemoWharf2 = 0, kSequenceDemoDinob2, kSequenceDemoWater, kSequenceDemoBail,
enum  Sequences {
  kSequenceVirgin = 0, kSequenceWestwood, kSequenceTitle, kSequenceOverview,
  kSequenceLibrary, kSequenceHand, kSequencePoint, kSequenceZanfaun,
  kSequenceFunters, kSequenceFerb, kSequenceFish, kSequenceFheep,
  kSequenceFarmer, kSequenceFuards, kSequenceFirates, kSequenceFrash,
enum  SequencesDemo {
  kSequenceDemoVirgin = 0, kSequenceDemoWestwood, kSequenceDemoTitle, kSequenceDemoHill,
  kSequenceDemoOuthome, kSequenceDemoWharf, kSequenceDemoDinob, kSequenceDemoFisher


bool checkKyraDat (Common::SeekableReadStream *file)
int16 clip8BitSample (int16 sample)
byte getGameID (const GameFlags &flags)
byte getLanguageID (const GameFlags &flags)
byte getPlatformID (const GameFlags &flags)
byte getSpecialID (const GameFlags &flags)
Audio::SeekableAudioStreammakeAUDStream (Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse)
Audio::SeekableAudioStreammakeVOCStream (Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse)
Common::String readString (Common::SeekableReadStream &stream)


const IndexTable iGameTable []
const IndexTable iLanguageTable []
const IndexTable iPlatformTable []

Generated by  Doxygen 1.6.0   Back to index