ScummVM API documentation
Scumm Namespace Reference

Classes

class  Actor
 
class  Actor_v0
 
class  Actor_v2
 
class  Actor_v3
 
class  Actor_v7
 
class  ActorHE
 
struct  AdjustBoxResult
 
class  AI
 
class  AIEntity
 
class  AkosCostumeLoader
 
class  AkosRenderer
 
class  AntiAirUnit
 
class  AppleII_SoundFunction
 
class  BaseCostumeLoader
 
class  BaseCostumeRenderer
 
class  BaseScummFile
 
struct  BompDrawData
 
struct  BoxCoords
 
class  BridgeUnit
 
class  BundleDirCache
 
class  BundleMgr
 
struct  CameraData
 
struct  channel_data
 
class  CharsetRenderer
 
class  CharsetRendererClassic
 
class  CharsetRendererCommon
 
class  CharsetRendererMac
 
class  CharsetRendererNES
 
class  CharsetRendererPC
 
class  CharsetRendererTownsV3
 
class  CharsetRendererV2
 
class  CharsetRendererV3
 
class  ClassicCostumeLoader
 
class  ClassicCostumeRenderer
 
struct  CodeHeader
 
struct  ColorCycle
 
struct  CommandQueue
 
class  ConfirmDialog
 
struct  CostumeData
 
struct  CostumeInfo
 
class  CrawlerUnit
 
class  CreateSessionDialog
 
class  DebugInputDialog
 
class  Defender
 
class  DefenseUnit
 
class  defenseUnitCompare
 
struct  DeferredCommand
 
struct  DetectorDesc
 
struct  DetectorResult
 
class  EnergyUnit
 
struct  FilenamePattern
 
struct  FindObjectInRoom
 
struct  GameFilenamePattern
 
struct  GameSettings
 
class  Gdi
 
class  GdiHE
 
class  GdiNES
 
class  GdiV1
 
class  GdiV2
 
struct  HEAnimAuxData
 
struct  HEAnimAuxEntry
 
struct  HEAuxFileRelInfo
 
struct  HEEraseAuxEntry
 
class  HEMilesChannel
 
class  HEMixer
 
struct  HESoundModifiers
 
struct  HESpoolingMusicItem
 
struct  HookDatas
 
class  HubUnit
 
class  IContainedObject
 
struct  ImageHeader
 
struct  ImTrigger
 
class  IMuse
 
class  ImuseDigiSndMgr
 
class  IMuseDriver_Amiga
 
class  IMuseDriver_FMTowns
 
class  IMuseDriver_GMidi
 
class  IMuseDriver_Macintosh
 
class  IMuseDriver_MT32
 
class  IMuseDriver_PCSpk
 
class  IMuseInternal
 
class  Indy3IQPointsDialog
 
class  Indy3MacSnd
 
class  InfoDialog
 
class  Instrument
 
class  InstrumentInternal
 
struct  InternalGUIControl
 
class  Lobby
 
class  Localizer
 
class  LoomEgaGameOptionsWidget
 
class  LoomMonkeyMacSnd
 
class  LoomTownsDifficultyDialog
 
class  LoomVgaGameOptionsWidget
 
class  MacGameOptionsWidget
 
class  MacGui
 
class  MacGuiImpl
 
class  MacIndy3Gui
 
class  MacLoomGui
 
class  MacLowLevelPCMDriver
 
class  MacPlayerAudioStream
 
class  MacResExtractor
 
struct  MacSndResource
 
class  MacSoundDriver
 
class  MacV5Gui
 
class  MajMinCodec
 
class  MapGeneratorDialog
 
class  MI1CdGameOptionsWidget
 
struct  MilesModifiers
 
class  MineUnit
 
class  MusicEngine
 
class  NESCostumeLoader
 
class  NESCostumeRenderer
 
struct  NestedScript
 
class  Net
 
class  Node
 
struct  ObjectData
 
class  OffenseUnit
 
struct  OpcodeEntry
 
struct  PAKFile
 
struct  ParameterFader
 
struct  Part
 
class  patternInstance
 
class  patternList
 
class  PauseDialog
 
class  Player
 
class  Player_AD
 
class  Player_AppleII
 
class  Player_HE
 
class  Player_MOD
 
class  Player_NES
 
class  Player_SID
 
class  Player_Towns
 
class  Player_Towns_v1
 
class  Player_Towns_v2
 
class  Player_V1
 
class  Player_V2
 
class  Player_V2A
 
class  Player_V2Base
 
class  Player_V2CMS
 
class  Player_V3A
 
class  Player_V4A
 
class  ResExtractor
 
class  ResourceIterator
 
class  ResourceManager
 
struct  ResString
 
struct  RoomHeader
 
struct  RuScummPatcher
 
class  SampleBuffer
 
class  SampleConverter
 
struct  SaveStateMetaInfos
 
struct  ScriptSlot
 
class  ScummDebugger
 
class  ScummDialog
 
class  ScummDiskImage
 
class  ScummEngine
 
class  ScummEngine_v0
 
struct  ScummEngine_v0_Delays
 
class  ScummEngine_v2
 
class  ScummEngine_v3
 
class  ScummEngine_v3old
 
class  ScummEngine_v4
 
class  ScummEngine_v5
 
class  ScummEngine_v6
 
class  ScummEngine_v60he
 
class  ScummEngine_v70he
 
class  ScummFile
 
class  ScummGameOptionsWidget
 
class  ScummHelp
 
class  ScummMenuDialog
 
class  ScummNESFile
 
class  ScummOptionsContainerWidget
 
class  ScummPAKFile
 
class  ScummSteamFile
 
struct  SentenceTab
 
class  SessionSelectorDialog
 
class  ShieldUnit
 
class  SmushDeltaBlocksDecoder
 
class  SmushDeltaGlyphsDecoder
 
class  SmushFont
 
class  Sortie
 
class  Sound
 
class  SoundHE
 
class  SoundSE
 
struct  SteamIndexFile
 
struct  StringSlot
 
struct  StringTab
 
class  SubtitleSettingsDialog
 
struct  TimerCallbackInfo
 
class  TowerUnit
 
class  TownsScreen
 
class  Traveller
 
class  Tree
 
struct  TreeNode
 
class  V0CostumeLoader
 
class  V0CostumeRenderer
 
class  ValueDisplayDialog
 
class  VblTaskClientDriver
 
struct  VerbSlot
 
struct  VirtScreen
 
struct  VirtualMachineState
 
class  Weapon
 
class  Win32ResExtractor
 

Typedefs

typedef Common::HashMap< Common::String, DetectorDesc, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualToDescMap
 
typedef Common::HashMap< Common::String, PAKFilePAKFileHashMap
 
typedef void(* sysexfunc) (Player *, const byte *, uint16)
 
typedef Common::Functor0< void > Opcode
 
typedef uint16 ResId
 

Enumerations

enum  { V12_X_MULTIPLIER = 8, V12_Y_MULTIPLIER = 2, V12_X_SHIFT = 3, V12_Y_SHIFT = 1 }
 
enum  MoveFlags {
  MF_NEW_LEG = 1, MF_IN_LEG = 2, MF_TURN = 4, MF_LAST_LEG = 8,
  MF_FROZEN = 0x80
}
 
enum  { kOldInvalidBox = 255, kNewInvalidBox = 0 }
 
enum  ActorV0MiscFlags {
  kActorMiscFlagStrong = 0x01, kActorMiscFlagGTFriend = 0x02, kActorMiscFlagWatchedTV = 0x04, kActorMiscFlagEdsEnemy = 0x08,
  kActorMiscFlag_10 = 0x10, kActorMiscFlag_20 = 0x20, kActorMiscFlagFreeze = 0x40, kActorMiscFlagHide = 0x80
}
 
enum  AkosSequenceCodes {
  AKC_ExtendBit = 0x80, AKC_ExtendWordBit = 0x8000, AKC_CelMask = 0x0FFF, AKC_CommandMask = 0xC000,
  AKC_EmptyCel = (AKC_CommandMask | 0x0001), AKC_SetVar = (AKC_CommandMask | 0x0010), AKC_StartSound = (AKC_CommandMask | 0x0015), AKC_IfSoundInVarRunningGoTo = (AKC_CommandMask | 0x0016),
  AKC_IfNotSoundInVarRunningGoTo = (AKC_CommandMask | 0x0017), AKC_IfSoundRunningGoTo = (AKC_CommandMask | 0x0018), AKC_IfNotSoundRunningGoTo = (AKC_CommandMask | 0x0019), AKC_DrawMany = (AKC_CommandMask | 0x0020),
  AKC_CondDrawMany = (AKC_CommandMask | 0x0021), AKC_CondRelativeOffsetDrawMany = (AKC_CommandMask | 0x0022), AKC_RelativeOffsetDrawMany = (AKC_CommandMask | 0x0025), AKC_GoToState = (AKC_CommandMask | 0x0030),
  AKC_IfVarGoTo = (AKC_CommandMask | 0x0031), AKC_AddVar = (AKC_CommandMask | 0x0040), AKC_SoftSound = (AKC_CommandMask | 0x0042), AKC_SoftVarSound = (AKC_CommandMask | 0x0044),
  AKC_SetUserCondition = (AKC_CommandMask | 0x0045), AKC_SetVarToUserCondition = (AKC_CommandMask | 0x0046), AKC_SetTalkCondition = (AKC_CommandMask | 0x0047), AKC_SetVarToTalkCondition = (AKC_CommandMask | 0x0048),
  AKC_StartScript = (AKC_CommandMask | 0x0050), AKC_IncVar = (AKC_CommandMask | 0x0060), AKC_StartSound_SpecialCase = (AKC_CommandMask | 0x0061), AKC_IfVarEQJump = (AKC_CommandMask | 0x0070),
  AKC_IfVarNEJump = (AKC_CommandMask | 0x0071), AKC_IfVarLTJump = (AKC_CommandMask | 0x0072), AKC_IfVarLEJump = (AKC_CommandMask | 0x0073), AKC_IfVarGTJump = (AKC_CommandMask | 0x0074),
  AKC_IfVarGEJump = (AKC_CommandMask | 0x0075), AKC_StartAnim = (AKC_CommandMask | 0x0080), AKC_StartVarAnim = (AKC_CommandMask | 0x0081), AKC_SetVarRandom = (AKC_CommandMask | 0x0082),
  AKC_SetActorZClipping = (AKC_CommandMask | 0x0083), AKC_StartActorAnim = (AKC_CommandMask | 0x0084), AKC_SetActorVar = (AKC_CommandMask | 0x0085), AKC_HideActor = (AKC_CommandMask | 0x0086),
  AKC_SetDrawOffs = (AKC_CommandMask | 0x0087), AKC_JumpToOffsetInVar = (AKC_CommandMask | 0x0088), AKC_SoundStuff = (AKC_CommandMask | 0x0089), AKC_Flip = (AKC_CommandMask | 0x008A),
  AKC_StartActionOn = (AKC_CommandMask | 0x008B), AKC_StartScriptVar = (AKC_CommandMask | 0x008C), AKC_StartSoundVar = (AKC_CommandMask | 0x008D), AKC_DisplayAuxFrame = (AKC_CommandMask | 0x008E),
  AKC_IfVarEQDo = (AKC_CommandMask | 0x0090), AKC_IfVarNEDo = (AKC_CommandMask | 0x0091), AKC_IfVarLTDo = (AKC_CommandMask | 0x0092), AKC_IfVarLEDo = (AKC_CommandMask | 0x0093),
  AKC_IfVarGTDo = (AKC_CommandMask | 0x0094), AKC_IfVarGEDo = (AKC_CommandMask | 0x0095), AKC_EndOfIfDo = (AKC_CommandMask | 0x009F), AKC_StartActorTalkie = (AKC_CommandMask | 0x00A0),
  AKC_IfTalkingGoTo = (AKC_CommandMask | 0x00A1), AKC_IfNotTalkingGoTo = (AKC_CommandMask | 0x00A2), AKC_StartTalkieInVar = (AKC_CommandMask | 0x00A3), AKC_IfAnyTalkingGoTo = (AKC_CommandMask | 0x00A4),
  AKC_IfNotAnyTalkingGoTo = (AKC_CommandMask | 0x00A5), AKC_IfTalkingPickGoTo = (AKC_CommandMask | 0x00A6), AKC_IfNotTalkingPickGoTo = (AKC_CommandMask | 0x00A7), AKC_EndSeq = (AKC_CommandMask | 0x00FF)
}
 
enum  AkosQueuedCommands {
  AKQC_PutActorInTheVoid = 1, AKQC_StartSound = 3, AKQC_StartAnimation = 4, AKQC_SetZClipping = 5,
  AKQC_SetXYOffset = 6, AKQC_DisplayAuxFrame = 7, AKQC_StartTalkie = 8, AKQC_SoftStartSound = 9,
  AKQC_SetSoundVolume = 7, AKQC_SetSoundPan = 8, AKQC_SetSoundPriority = 9
}
 
enum  AkosAnimTypes {
  AKAT_Empty = 0x00, AKAT_KillLayer = 0x01, AKAT_LoopLayer = 0x02, AKAT_RunLayer = 0x03,
  AKAT_LayerInvisible = 0x04, AKAT_LayerVisible = 0x05, AKAT_AlwaysRun = 0x06, AKAT_UserConstant = 0x07,
  AKAT_DeltaAnim = 0x08
}
 
enum  BoxFlags {
  kBoxXFlip = 0x08, kBoxYFlip = 0x10, kBoxIgnoreScale = 0x20, kBoxPlayerOnly = 0x20,
  kBoxLocked = 0x40, kBoxInvisible = 0x80
}
 
enum  FilenameGenMethod {
  kGenDiskNum, kGenDiskNumSteam, kGenRoomNum, kGenRoomNumSteam,
  kGenHEMac, kGenHEMacNoParens, kGenHEPC, kGenHEIOS,
  kGenUnchanged
}
 
enum  GameFeatures {
  GF_DEMO = 1 << 0, GF_NEW_COSTUMES = 1 << 2, GF_USE_KEY = 1 << 4, GF_SMALL_HEADER = 1 << 5,
  GF_OLD_BUNDLE = 1 << 6, GF_16COLOR = 1 << 7, GF_OLD256 = 1 << 8, GF_AUDIOTRACKS = 1 << 9,
  GF_FEW_LOCALS = 1 << 11, GF_HE_LOCALIZED = 1 << 13, GF_HE_985 = 1 << 14, GF_16BIT_COLOR = 1 << 15,
  GF_MAC_CONTAINER = 1 << 16, GF_HE_NO_BIDI = 1 << 17, GF_ULTIMATE_TALKIE = 1 << 18, GF_HE_995 = 1 << 19,
  GF_DOUBLEFINE_PAK = 1 << 20
}
 
enum  ScummGameId {
  GID_CMI, GID_DIG, GID_FT, GID_INDY3,
  GID_INDY4, GID_LOOM, GID_MANIAC, GID_MONKEY_EGA,
  GID_MONKEY_VGA, GID_MONKEY, GID_MONKEY2, GID_PASS,
  GID_SAMNMAX, GID_TENTACLE, GID_ZAK, GID_HEGAME,
  GID_PUTTDEMO, GID_FBEAR, GID_PUTTMOON, GID_FUNPACK,
  GID_PUTTZOO, GID_FREDDI, GID_FREDDI3, GID_FREDDI4,
  GID_BIRTHDAYRED, GID_BIRTHDAYYELLOW, GID_TREASUREHUNT, GID_PUTTRACE,
  GID_FUNSHOP, GID_FOOTBALL, GID_FOOTBALL2002, GID_SOCCER,
  GID_SOCCERMLS, GID_SOCCER2004, GID_BASEBALL2001, GID_BASEBALL2003,
  GID_BASKETBALL, GID_MOONBASE, GID_PJGAMES, GID_HECUP
}
 
enum  { kMD5FileSizeLimit = 1024 * 1024 }
 
enum  HerculesDimensions { kHercWidth = 720, kHercHeight = 350 }
 
enum  { kNormalCameraMode = 1, kFollowActorCameraMode = 2, kPanningCameraMode = 3 }
 
enum  VirtScreenNumber { kMainVirtScreen = 0, kTextVirtScreen = 1, kVerbVirtScreen = 2, kBannerVirtScreen = 3 }
 
enum  {
  DUT_ANTI_AIR = 1, DUT_SHIELD = 2, DUT_MINE = 3, DUT_HUB = 4,
  DUT_TOWER = 5, DUT_BRIDGE = 6, DUT_ENERGY = 7, DUT_OFFENSE = 8,
  DUT_CRAWLER = 9
}
 
enum  { DUS_ON = 1, DUS_OFF = 2, DUS_DESTROYED = 3 }
 
enum  { TERRAIN_TYPE_GOOD = 0, TERRAIN_TYPE_SLOPE = 1, TERRAIN_TYPE_WATER = 2, MAX_MEMORY = 3 }
 
enum  {
  ITEM_BOMB = 0, ITEM_CLUSTER = 1, ITEM_REPAIR = 2, ITEM_ANTIAIR = 3,
  ITEM_BRIDGE = 4, ITEM_TOWER = 5, ITEM_GUIDED = 6, ITEM_EMP = 7,
  ITEM_SPIKE = 8, ITEM_RECLAIMER = 9, ITEM_BALLOON = 10, ITEM_MINE = 11,
  ITEM_CRAWLER = 12, ITEM_VIRUS = 13, ITEM_ENERGY = 14, ITEM_SHIELD = 15,
  ITEM_OFFENSE = 16, ITEM_HUB = 17, ITEM_TIME_EXPIRED = 18, SKIP_TURN = -999
}
 
enum  BuildingTypes {
  BUILDING_ENERGY_COLLECTOR = 3, BUILDING_MAIN_BASE = 4, BUILDING_BRIDGE = 5, BUILDING_TOWER = 6,
  BUILDING_EXPLOSIVE_MINE = 7, BUILDING_SHIELD = 8, BUILDING_ANTI_AIR = 9, BUILDING_OFFENSIVE_LAUNCHER = 10,
  BUILDING_BALLOON = 11, BUILDING_CRAWLER = 12
}
 
enum  { ENERGY_POOL_X = 45, ENERGY_POOL_Y = 46, ENERGY_POOL_UNITS_ON = 47, MIN_DIST = 108 }
 
enum  {
  AGI = 1, AONE = 2, BRUTAKAS = 3, CYBALL = 4,
  EL_GATO = 5, NEEP = 6, ORBNU_LUNATEK = 7, PIXELAHT = 8,
  SPANDO = 9, WARCUPINE = 10
}
 
enum  { CRAWLER_CHUCKER = 11, ENERGY_HOG = 12, RANGER = 13 }
 
enum  {
  AI_VAR_NONE = -1, AI_VAR_SMALL = 0, AI_VAR_MEDIUM = 1, AI_VAR_LARGE = 2,
  AI_VAR_HUGE = 5
}
 
enum  { AI_VAR_BASE_BEHAVIOR = 10, AI_VAR_BASE_TARGET = 10, AI_VAR_BASE_ANGLE = 2, AI_VAR_BASE_POWER = 5 }
 
enum  ObjectV0Type { kObjectV0TypeFG = 0, kObjectV0TypeBG = 1, kObjectV0TypeActor = 2 }
 
enum  ObjectClass {
  kObjectClassNeverClip = 20, kObjectClassAlwaysClip = 21, kObjectClassIgnoreBoxes = 22, kObjectClassYFlip = 29,
  kObjectClassXFlip = 30, kObjectClassPlayer = 31, kObjectClassUntouchable = 32
}
 
enum  ObjectStateV2 { kObjectStatePickupable = 1, kObjectStateUntouchable = 2, kObjectStateLocked = 4, kObjectStateIntrinsic = 8 }
 
enum  FindObjectWhat { foCodeHeader = 1, foImageHeader = 2, foCheckAlreadyLoaded = 4 }
 
enum  sid_reg_t {
  FREQ_VOICE1, FREQ_VOICE2, FREQ_VOICE3, FREQ_FILTER,
  PULSE_VOICE1, PULSE_VOICE2, PULSE_VOICE3
}
 
enum  VideoStandard { PAL, NTSC }
 
enum  { OF_OWNER_MASK = 0x0F, OF_STATE_MASK = 0xF0, OF_STATE_SHL = 4 }
 
enum  : uint { RES_INVALID_OFFSET = 0xFFFFFFFF }
 
enum  ResTypeMode { kDynamicResTypeMode = 0, kStaticResTypeMode = 1, kSoundResTypeMode = 2 }
 
enum  { NUM_SCRIPT_SLOT = 80, NUM_SCRIPT_LOCAL = 25 }
 
enum  { ssDead = 0, ssPaused = 1, ssRunning = 2 }
 
enum  { kMaxCutsceneNum = 5, kMaxScriptNesting = 15, kMaxScriptNestingHE = 40 }
 
enum  { NUM_SENTENCE = 6, NUM_SHADOW_PALETTE = 8 }
 
enum  {
  DEBUG_GENERAL = 1 << 0, DEBUG_SCRIPTS = 1 << 2, DEBUG_OPCODES = 1 << 3, DEBUG_VARS = 1 << 4,
  DEBUG_RESOURCE = 1 << 5, DEBUG_IMUSE = 1 << 6, DEBUG_SOUND = 1 << 7, DEBUG_ACTORS = 1 << 8,
  DEBUG_INSANE = 1 << 9, DEBUG_SMUSH = 1 << 10, DEBUG_MOONBASE_AI = 1 << 11, DEBUG_NETWORK = 1 << 12
}
 
enum  { LIGHTMODE_actor_use_base_palette = 1 << 0, LIGHTMODE_room_lights_on = 1 << 1, LIGHTMODE_flashlight_on = 1 << 2, LIGHTMODE_actor_use_colors = 1 << 3 }
 
enum  { MBS_LEFT_CLICK = 0x8000, MBS_RIGHT_CLICK = 0x4000, MBS_MOUSE_MASK = (MBS_LEFT_CLICK | MBS_RIGHT_CLICK), MBS_MAX_KEY = 0x0200 }
 
enum  WhereIsObject {
  WIO_NOT_FOUND = -1, WIO_INVENTORY = 0, WIO_ROOM = 1, WIO_GLOBAL = 2,
  WIO_LOCAL = 3, WIO_FLOBJECT = 4
}
 
enum  UserStates {
  USERSTATE_SET_FREEZE = 0x01, USERSTATE_SET_CURSOR = 0x02, USERSTATE_SET_IFACE = 0x04, USERSTATE_FREEZE_ON = 0x08,
  USERSTATE_CURSOR_ON = 0x10, USERSTATE_IFACE_SENTENCE = 0x20, USERSTATE_IFACE_INVENTORY = 0x40, USERSTATE_IFACE_VERBS = 0x80
}
 
enum  ResType {
  rtInvalid = 0, rtFirst = 1, rtRoom = 1, rtScript = 2,
  rtCostume = 3, rtSound = 4, rtInventory = 5, rtCharset = 6,
  rtString = 7, rtVerb = 8, rtActorName = 9, rtBuffer = 10,
  rtScaleTable = 11, rtTemp = 12, rtFlObject = 13, rtMatrix = 14,
  rtBox = 15, rtObjectName = 16, rtRoomScripts = 17, rtRoomImage = 18,
  rtImage = 19, rtTalkie = 20, rtSpoolBuffer = 21, rtLast = 21
}
 
enum  GUIString {
  gsPause = 0, gsVersion = 1, gsTextSpeedSlider = 2, gsRestart = 3,
  gsQuitPrompt = 4, gsSave = 5, gsLoad = 6, gsPlay = 7,
  gsCancel = 8, gsQuit = 9, gsOK = 10, gsMustName = 11,
  gsGameNotSaved = 12, gsGameNotLoaded = 13, gsSaving = 14, gsLoading = 15,
  gsNamePrompt = 16, gsSelectLoadPrompt = 17, gsReplacePrompt = 18, gsYes = 20,
  gsNo = 21, gsIMuseBuffer = 22, gsVoiceAndText = 23, gsTextDisplayOnly = 24,
  gsVoiceOnly = 25, gsYesKey = 26, gsMusicVolumeSlider = 27, gsVoiceVolumeSlider = 28,
  gsSfxVolumeSlider = 29, gsHeap = 30, gsSavePath = 31, gsTitle = 32,
  gsDisabled = 33, gsMusic = 34, gsVoice = 35, gsSfx = 36,
  gsTextSpeed = 37, gsDisplayText = 38, gsSpooledMusic = 39, gsInsertSaveDisk = 40,
  gsSnapOn = 41, gsSnapOff = 42, gsRecalJoystick = 43, gsMouseMode = 44,
  gsMouseOn = 45, gsMouseOff = 46, gsJoystickOn = 47, gsJoystickOff = 48,
  gsSoundsOn = 49, gsSoundsOff = 50, gsVGAMode = 51, gsEGAMode = 52,
  gsCGAMode = 53, gsHerculesMode = 54, gsTandyMode = 55, gsCurrentPasscode = 56,
  gsEnterPasscode = 57, gsConfirmPasscode = 58, gsInvalidPasscode = 59, gsSlowFast = 60,
  gsRestartGame = 61, gsHeapExt = 62
}
 
enum  ScummAction {
  kScummActionNone, kScummActionInsaneDownLeft, kScummActionInsaneDown, kScummActionInsaneDownRight,
  kScummActionInsaneLeft, kScummActionInsaneRight, kScummActionInsaneUpLeft, kScummActionInsaneUp,
  kScummActionInsaneUpRight, kScummActionInsaneAttack, kScummActionInsaneSwitch, kScummActionInsaneCheat,
  kScummActionCount
}
 
enum  { kTalkSoundID = 10000 }
 
enum  SoundSEType { kSoundSETypeMusic, kSoundSETypeSpeech, kSoundSETypeSFX }
 
enum  { USAGE_BIT_DIRTY = 96, USAGE_BIT_RESTORED = 95 }
 
enum  ClickArea {
  kVerbClickArea = 1, kSceneClickArea = 2, kInventoryClickArea = 3, kKeyClickArea = 4,
  kSentenceClickArea = 5
}
 
enum  { kTextVerbType = 0, kImageVerbType = 1 }
 
enum  VerbsV0 {
  kVerbNone = 0, kVerbOpen = 1, kVerbClose = 2, kVerbGive = 3,
  kVerbTurnOn = 4, kVerbTurnOff = 5, kVerbFix = 6, kVerbNewKid = 7,
  kVerbUnlock = 8, kVerbPush = 9, kVerbPull = 10, kVerbUse = 11,
  kVerbRead = 12, kVerbWalkTo = 13, kVerbPickUp = 14, kVerbWhatIs = 15
}
 
enum  VerbPrepsV0 {
  kVerbPrepNone = 0, kVerbPrepIn = 1, kVerbPrepWith = 2, kVerbPrepOn = 3,
  kVerbPrepTo = 4, kVerbPrepObject = 0xFF
}
 

Functions

void bompApplyMask (byte *line_buffer, byte *mask, byte maskbit, int32 size, byte transparency)
 
void bompApplyShadow (int shadowMode, const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, bool HE7Check=false)
 
void decompressBomp (byte *dst, const byte *src, int w, int h)
 
void bompDecodeLine (byte *dst, const byte *src, int size, bool setZero=true)
 
void bompDecodeLineReverse (byte *dst, const byte *src, int size)
 
void drawBomp (const BompDrawData &bd)
 
int getClosestPtOnBox (const BoxCoords &box, int x, int y, int16 &outX, int16 &outY)
 
Audio::SeekableAudioStreammakeCDDAStream (const Common::String &filename, DisposeAfterUse::Flag disposeAfterUse)
 
int clamp (int val, int min, int max)
 
int transpose_clamp (int a, int b, int c)
 
void sysexHandler_Scumm (Player *, const byte *, uint16)
 
void sysexHandler_SamNMax (Player *, const byte *, uint16)
 
byte checkJongsung (byte hi, byte lo)
 
void debugC (int level, MSVC_PRINTF const char *s,...) GCC_PRINTF(2
 
int newDirToOldDir (int dir)
 
int oldDirToNewDir (int dir)
 
int normalizeAngle (int dirType, int angle)
 
int fromSimpleDir (int dirtype, int dir)
 
int toSimpleDir (int dirtype, int dir)
 
void assertRange (int min, int value, int max, const char *desc)
 
void * reallocateArray (void *buffer, size_t count, size_t size)
 

Variables

struct Scumm::CostumeInfo PACKED_STRUCT
 
const byte smallCostumeScaleTable [256]
 
const byte bigCostumeScaleTable [768]
 
const float SUCCESS = -1
 
const float FAILURE = 1e20f
 
const int NO_PATTERN = 0
 
const int PATTERN_FOUND = 1
 
const int NUM_IMPT_UNITS = 3
 
const int NUM_SHOT_POSITIONS = 1
 
const int NUM_WEAPONS = 3
 
const int NUM_TO_GEN = 9
 
const int NUM_POWER_STEPS = 3
 
const double SIZE_POWER_STEP = .15
 
const int SIZE_ANGLE_STEP = 45
 
const int VARIATION_EXTENT = 3
 
const int DIRECTION_WEIGHT = 5
 
const int MAX_DEPTH = 100
 
const int MAX_NODES = 1000000
 
const int MAX_PACKET_SIZE = 4096
 
const int MAX_HOSTNAME_SIZE = 256
 
const int MAX_IP_SIZE = 32
 
const uint8 _fourToneSynthWaveForm [256]
 
const uint32 _fourToneSynthWaveFormSize
 
ScummEngineg_scumm
 
const char *const insaneKeymapId
 

Detailed Description

This is the namespace of the SCUMM engine.

Status of this engine: Complete support for all SCUMM based LucasArts adventures. Complete support for many Humongous Entertainment games, but for some of the newer ones, this is still work in progress.

Games using this engine:

  • Classic 2D LucasArts adventures
  • numerous Humongous Entertainment games

Enumeration Type Documentation

◆ GameFeatures

SCUMM feature flags define for every game which specific set of engine features are used by that game. Note that some of them could be replaced by checks for the SCUMM version.

Enumerator
GF_DEMO 

A demo, not a full blown game.

GF_NEW_COSTUMES 

Games with the AKOS costume system (ScummEngine_v7 and subclasses, HE games).

GF_USE_KEY 

Games using XOR encrypted data files.

GF_SMALL_HEADER 

Small header games (ScummEngine_v4 and subclasses).

GF_OLD_BUNDLE 

Old bundle games (ScummEngine_v3old and subclasses).

GF_16COLOR 

EGA games.

GF_OLD256 

VGA versions of V3 games. Equivalent to (version == 3 && not GF_16COLOR)

GF_AUDIOTRACKS 

Games which have Audio CD tracks.

GF_FEW_LOCALS 

Games using only very few local variables in scripts. Apparently that is only the case for 256 color version of Indy3.

GF_HE_LOCALIZED 

HE games for which localized versions exist

GF_HE_985 

HE games with more global scripts and different sprite handling i.e. read it as HE version 9.85. Used for HE98 only.

GF_16BIT_COLOR 

HE games with 16 bit color

GF_MAC_CONTAINER 

SCUMM v5-v7 Mac games stored in a container file Used to differentiate between m68k and PPC versions of Indy4

GF_HE_NO_BIDI 

SCUMM HE Official Hebrew translations were audio only but used reversed string for credits etc. Used to disable BiDi in those games.

GF_ULTIMATE_TALKIE 

The "Ultimate Talkie" versions of Monkey Island, which have been patched so that most workarounds/bugfixes no longer apply to them.

GF_HE_995 

HE99 games which were ported to a C++ codebase with HE99 opcodes and several HE100 GFX/Wiz features.

GF_DOUBLEFINE_PAK 

Games packed within Doublefine PAK containers.

◆ anonymous enum

anonymous enum

Camera modes

◆ VirtScreenNumber

Virtual screen identifiers

◆ ResTypeMode

The mode of a resource type indicates whether the resource can be restored from the game data files or not. This affects for example whether the resource is stored in savestates.

Note that we treat sound resources somewhat differently: On the one hand, these behave mostly like a kStaticResTypeMode res type. However, when we create a savestate, we do save some information about them: Namely, which sound resources are loaded in memory at the time the save is made. And when loading, we invoke ensureResourceLoaded() for each sound resource that was marked in this way.

Enumerator
kDynamicResTypeMode 

Resource is generated during runtime and may change.

kStaticResTypeMode 

Resource comes from data files, does not change.

kSoundResTypeMode 

Resource comes from data files, but may change.

◆ anonymous enum

anonymous enum

The number of script slots, which determines the maximal number of concurrently running scripts, and the number of local variables in a script. WARNING: Do NOT changes these values unless you really have to, as this will break savegame compatibility if done carelessly. If you have to change them, make sure you update saveload.cpp accordingly!

◆ anonymous enum

anonymous enum
Enumerator
kMaxCutsceneNum 

The maximal number of cutscenes that can be active in parallel (i.e. nested).

kMaxScriptNesting 

The maximal 'nesting' level for scripts.

◆ anonymous enum

anonymous enum
Enumerator
LIGHTMODE_actor_use_base_palette 

Lighting flag that indicates whether the normal palette, or the 'dark' palette shall be used to draw actors. Apparently only used in very old games (so far only NESCostumeRenderer checks it).

LIGHTMODE_room_lights_on 

Lighting flag that indicates whether the room is currently lit. Normally always on. Used for rooms in which the light can be switched "off".

LIGHTMODE_flashlight_on 

Lighting flag that indicates whether a flashlight like device is active. Used in Loom (flashlight follows the actor) and Indy 3 (flashlight follows the mouse). Only has any effect if the room lights are off.

LIGHTMODE_actor_use_colors 

Lighting flag that indicates whether actors are to be drawn with their own custom palette, or using a fixed 'dark' palette. This is the modern successor of LIGHTMODE_actor_use_base_palette. Note: It is tempting to 'merge' these two flags, but since flags can check their values, this is probably not a good idea.

◆ ResType

A list of resource types. WARNING: Do not change the order of these, as the savegame format relies on it; any change made here will break savegame compatibility!

◆ ClickArea

The area in which some click (or key press) occurred and which is passed to the input script.

Function Documentation

◆ makeCDDAStream()

Audio::SeekableAudioStream* Scumm::makeCDDAStream ( const Common::String filename,
DisposeAfterUse::Flag  disposeAfterUse 
)

Create a new SeekableAudioStream from the CDDA data in the given stream. Allows for seeking (which is why we require a SeekableReadStream).

Parameters
filenameThe file name from which to read the CDDA data
disposeAfterUseWhether to delete the stream after use
Returns
a new SeekableAudioStream, or NULL, if an error occurred