SCI/Specifications
The Sierra Creative Interpreter
Lars Skovlund, Christoph Reichenbach, Ravi Iyengar, Rickard Lind, Vladimir Gneushev, Petr Vyhnak, Dark Minister, Francois Boyer, Carl Muckenhoupt. Copyright (C) 1999-2009
This book describes the Sierra Creative Interpreter, versions 0.xxx and 1.xxx to the extent known to the general public, as well as the FreeSCI interpreter for those games. Please contact the author if you find that anything is being described incorrectly or missing.
NOTE: This version of the documentation is incomplete and covers only some parts of SCI0.
Introduction
* 1.1 Preface * 1.2 The basics * 1.3 Resource storage * 1.4 The individual resources: A summary * 1.4.1 Graphical resources * 1.4.2 Sound resources * 1.4.3 Logic resources * 1.5 SCI01 extensions * 1.6 SCI1 extensions * 1.7 Credits
Resource files
* 2.1 SCI0 resources * 2.2 SCI1 resources * 2.3 Decompression algorithms * 2.3.1 LZW * 2.3.2 HUFFMAN * 2.3.3 COMP3 * 2.3.4 DCL-EXPLODE * 2.3.5 UNKNOWN
The Graphics subsystem
* 3.1 General stuff * 3.2 SCI Ports * 3.3 The Cursor resource * 3.3.1 Color mapping for the SCI0 mouse pointer * 3.3.2 Color mapping for the SCI1 mouse pointer * 3.4 The SCI0 View Resource * 3.4.1 The View Resource * 3.4.2 Cell List * 3.4.3 Image Cell * 3.5 Font resource * 3.6 The SCI0 and SCI01 pic resource * 3.7 SCI1 palettes * 3.7.1 Palette types * 3.7.2 Palette format * 3.7.3 Installing a palette * 3.7.4 Installing a palette * 3.7.5 Palette syscall * 3.8 Windows, Dialogs and Controls * 3.8 Pictures and movement control
The Sound subsystem
* 4.1 The SCI0 Sound Resource Format * 4.1.1 Preface * 4.1.2 Sound Devices * 4.1.3 File Format * 4.1.4 Digital Samples * 4.1.5 Amiga sound (SCI0) * 4.1.6 Amiga sound (SCI1) * 4.1.7 General MIDI and MT-32 (SCI1) * 4.2 Mapping instruments in FreeSCI * 4.2.1 The Patch.002 resource * 4.2.2 Percussion instruments
The SCI virtual machine
* 5.1 Introduction * 5.1.1 Script resources * 5.1.2 Selectors * 5.1.3 Function invocation * 5.1.4 Variable types * 5.2 Interpreter initialization and the main execution loop * 5.3 The SCI Heap * 5.3.1 Heap structure * 5.3.2 Initialization * 5.3.3 Memory allocation * 5.4 The Sierra PMachine * 5.4.1 Local variables (LocalVar) * 5.4.2 Global variables * 5.4.3 Temporary variables * 5.4.4 Parameter variables * 5.4.5 Objects * 5.4.6 The PMachine "registers" * 5.4.7 The instruction set * 5.5 Kernel functions * 5.5.1 Parameter types * 5.5.2 SCI0 Kernel functions
SCI in action
* 6.1 Event handling in SCI * 6.1.1 Event types and modifiers * 6.2 The Parser * 6.2.1 Vocabulary file formats * 6.2.2 The black box: The magic behind Sierra's text parser * 6.2.3 The Parse tree * 6.2.4 Said specs * 6.2.5 Matching the trees * 6.3 Views and animation in SCI * 6.4 The message subsystem * 6.4.1 Ties to audio * 6.4.2 File formats * 6.4.3 early * 6.4.4 Version 2.101 * 6.4.5 Version 3.411 * 6.4.6 Version 4.010 * 6.5 Notes on the kernel calls * 6.5.1 GetMessage syscall * 6.5.2 Message syscall