ScummVM API documentation
Vocabulary resources in SCI

Description

vocab.999 / 999.voc (unneeded) contains names of the kernel functions which are implemented by the interpreter. In Sierra SCI, they are used exclusively by the debugger, which is why keeping the file up to date was less important. This resource is notoriously unreliable, and should not be used. Fortunately, kernel names are the same in major SCI revisions, which is why we have them hardcoded.

vocab.998 / 998.voc (unneeded) contains opcode names. Opcodes have remained the same from SCI0 to SCI2.1, and have changed in SCI3, so this is only used on demand for debugging purposes, for showing the opcode names

vocab.997 / 997.voc (usually needed) contains the names of every selector in the class hierarchy. Each method and property '''name''' consumes one id, but if a name is shared between classes, one id will do. Some demos do not contain a selector vocabulary, but the selectors used by the engine have stayed more or less static, so we add the selectors we need inside static_selectors.cpp The SCI engine loads vocab.997 on startup, and fills in an internal structure that allows interpreter code to access these selectors via #defined macros. It does not use the file after this initial stage.

vocab.996 / 996.voc (required) contains the classes which are used in each script, and is required by the segment manager

vocab.995 / 995.voc (unneeded) contains strings for the embedded SCI debugger

vocab.994 / 994.voc (unneeded) contains offsets into certain classes of certain properties. This enables the interpreter to update these properties in O(1) time, which was important in the era when SCI was initially conceived. In SCI, we figured out what '''property''' a certain offset refers to (which requires one to guess what class a pointer points to) and then simply use the property name and vocab.997. This results in much more readable code. Thus, this vocabulary isn't used at all.

993.voc (unneeded) - Contains the SCI3 equivalent of vocab.994; like its predecessor, the raw selector numbers can be deduced and used instead. In fact, one version of this file has turned out to cover all versiona of SCI3.

SCI0 parser vocabularies:

SCI01 parser vocabularies:

Classes

struct  Sci::KernelSubFunction
 
struct  Sci::KernelFunction
 
class  Sci::Kernel
 

Macros

#define SIG_MAYBE_ANY   (SIG_TYPE_NULL | SIG_TYPE_INTEGER | SIG_TYPE_OBJECT | SIG_TYPE_REFERENCE | SIG_TYPE_LIST | SIG_TYPE_NODE)
 

Typedefs

typedef reg_t Sci::KernelFunctionCall(EngineState *s, int argc, reg_t *argv)
 

Enumerations

enum  { kScummVMSleepId = 0xe0 }
 
enum  {
  SIG_TYPE_NULL = 0x01, SIG_TYPE_INTEGER = 0x02, SIG_TYPE_UNINITIALIZED = 0x04, SIG_TYPE_OBJECT = 0x08,
  SIG_TYPE_REFERENCE = 0x10, SIG_TYPE_LIST = 0x20, SIG_TYPE_NODE = 0x40, SIG_TYPE_ERROR = 0x80,
  SIG_IS_INVALID = 0x100, SIG_IS_OPTIONAL = 0x200, SIG_NEEDS_MORE = 0x400, SIG_MORE_MAY_FOLLOW = 0x800
}
 

Functions

reg_t Sci::kStrLen (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetFarText (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kReadNumber (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStrCat (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStrCmp (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetSynonyms (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kLock (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalette (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVary (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAssertPalette (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPortrait (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kNumCels (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kNumLoops (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDrawCel (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCoordPri (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPriCoord (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kShakeScreen (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetCursor (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMoveCursor (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPicNotValid (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kOnControl (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDrawPic (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetPort (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetPort (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kNewWindow (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDisposeWindow (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCelWide (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCelHigh (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetJump (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDirLoop (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoAvoider (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetAngle (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetDistance (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kRandom (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAbs (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSqrt (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kTimesSin (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kTimesCos (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCosMult (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSinMult (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kTimesTan (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kTimesCot (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCosDiv (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSinDiv (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kValidPath (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMapKeyToDir (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGlobalToLocal (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kLocalToGlobal (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kWait (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kRestartGame16 (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDeviceInfo (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetEvent (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCheckFreeSpace (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFlushResources (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetSaveFiles (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetDebug (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCheckSaveGame (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSaveGame (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kRestoreGame (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIO (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetTime (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kHaveMouse (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kJoystick (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGameIsRestarting (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetCWD (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSort (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStrEnd (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMemory (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAvoidPath (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kParse (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSaid (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStrCpy (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStrAt (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kEditControl (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDrawControl (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kHiliteControl (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kClone (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDisposeClone (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCanBeHere (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kCantBeHere (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetNowSeen (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kInitBresen (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoBresen (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kBaseSetter (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAddToPic (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAnimate (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDisplay (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraph (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFormat (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSound (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAddMenu (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetMenu (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetMenu (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDrawStatus (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDrawMenuBar (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMenuSelect (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kLoad (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kUnLoad (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kScriptID (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDisposeScript (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kIsObject (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kRespondsTo (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kNewList (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDisposeList (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kNewNode (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFirstNode (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kLastNode (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kEmptyList (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kNextNode (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPrevNode (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kNodeValue (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAddAfter (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAddToFront (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kAddToEnd (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFindKey (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDeleteKey (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMemoryInfo (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetSaveDir (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kTextSize (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kIsItSkip (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGetMessage (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMessage (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoAudio (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSync (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMemorySegment (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kIntersections (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kMergePoly (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kResCheck (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetQuitStr (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kShowMovie (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kSetVideoMode (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStrSplit (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPlatform (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kTextColors (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kTextFonts (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kShow (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kRemapColors (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kRemapColorsKawa (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDummy (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kEmpty (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStub (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kStubNull (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kKawaHacks (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kKawaDbugStr (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundInit (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundPlay (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundDispose (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundMute (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundStop (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundStopAll (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundPause (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundResumeAfterRestore (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundMasterVolume (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundUpdate (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundFade (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundGetPolyphony (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundUpdateCues (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundSendMidi (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundGlobalReverb (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundSetHold (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundGetAudioCapability (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundSuspend (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundSetVolume (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundSetPriority (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kDoSoundSetLoop (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphGetColorCount (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphDrawLine (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphSaveBox (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphRestoreBox (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphFillBoxBackground (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphFillBoxForeground (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphFillBoxAny (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphUpdateBox (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphRedrawBox (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphAdjustPriority (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kGraphSaveUpscaledHiresBox (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVaryInit (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVaryReverse (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVaryGetCurrentStep (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVaryDeinit (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVaryChangeTarget (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVaryChangeTicks (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPalVaryPauseResume (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteSetFromResource (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteSetFlag (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteUnsetFlag (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteSetIntensity (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteFindColor (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteAnimate (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteSave (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kPaletteRestore (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOOpen (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOClose (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOReadRaw (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOWriteRaw (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOUnlink (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOReadString (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOWriteString (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOSeek (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOFindFirst (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOFindNext (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOExists (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIORename (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kFileIOCopy (EngineState *s, int argc, reg_t *argv)
 
reg_t Sci::kScummVMSleep (EngineState *s, int argc, reg_t *argv)