Difference between revisions of "SCI/Specifications"

From ScummVM :: Wiki
< SCI
Jump to navigation Jump to search
(Make the pseudo-TOCs nicer)
Line 5: Line 5:
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.
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.
'''NOTE:''' This version of the documentation is incomplete and covers only some parts of SCI0.






== [[SCI/Specifications/Introduction|Introduction]] ==
== [[SCI/Specifications/Introduction|Introduction]] ==
    * 1.1 [[SCI/Specifications/Introduction#Preface|Preface]]
* 1.1 [[SCI/Specifications/Introduction#Preface|Preface]]
    * 1.2 [[SCI/Specifications/Introduction#The_basics|The basics]]
* 1.2 [[SCI/Specifications/Introduction#The_basics|The basics]]
    * 1.3 [[SCI/Specifications/Introduction#Resource_storage|Resource storage]]
* 1.3 [[SCI/Specifications/Introduction#Resource_storage|Resource storage]]
    * 1.4 [[SCI/Specifications/Introduction#Individual_resources|The individual resources: A summary]]
* 1.4 [[SCI/Specifications/Introduction#Individual_resources|The individual resources: A summary]]
        * 1.4.1 [[SCI/Specifications/Introduction#Graphical resources|Graphical resources]]
** 1.4.1 [[SCI/Specifications/Introduction#Graphical resources|Graphical resources]]
        * 1.4.2 [[SCI/Specifications/Introduction#Sound resources|Sound resources]]
** 1.4.2 [[SCI/Specifications/Introduction#Sound resources|Sound resources]]
        * 1.4.3 [[SCI/Specifications/Introduction#Logic resources|Logic resources]]
** 1.4.3 [[SCI/Specifications/Introduction#Logic resources|Logic resources]]
    * 1.5 [[SCI/Specifications/Introduction#SCI01_extensions|SCI01 extensions]]
* 1.5 [[SCI/Specifications/Introduction#SCI01_extensions|SCI01 extensions]]
    * 1.6 [[SCI/Specifications/Introduction#SCI1_extensions|SCI1 extensions]]
* 1.6 [[SCI/Specifications/Introduction#SCI1_extensions|SCI1 extensions]]
    * 1.7 [[SCI/Specifications/Introduction#Credits|Credits]]
* 1.7 [[SCI/Specifications/Introduction#Credits|Credits]]


== [[SCI/Specifications/Resource_files|Resource files]] ==
== [[SCI/Specifications/Resource_files|Resource files]] ==
      * 2.1 [[SCI/Specifications/Resource_files/SCI0_resources|SCI0 resources]]
* 2.1 [[SCI/Specifications/Resource_files/SCI0_resources|SCI0 resources]]
      * 2.2 [[SCI/Specifications/Resource_files/SCI1_resources|SCI1 resources]]
* 2.2 [[SCI/Specifications/Resource_files/SCI1_resources|SCI1 resources]]
      * 2.3 [[SCI/Specifications/Resource_files/Decompression_algorithms|Decompression algorithms]]
* 2.3 [[SCI/Specifications/Resource_files/Decompression_algorithms|Decompression algorithms]]
            * 2.3.1 [[SCI/Specifications/Resource_files/Decompression_algorithms/LZW|LZW]]
** 2.3.1 [[SCI/Specifications/Resource_files/Decompression_algorithms/LZW|LZW]]
            * 2.3.2 [[SCI/Specifications/Resource_files/Decompression_algorithms/HUFFMAN|HUFFMAN]]
** 2.3.2 [[SCI/Specifications/Resource_files/Decompression_algorithms/HUFFMAN|HUFFMAN]]
            * 2.3.3 [[SCI/Specifications/Resource_files/Decompression_algorithms/COMP3|COMP3]]
** 2.3.3 [[SCI/Specifications/Resource_files/Decompression_algorithms/COMP3|COMP3]]
            * 2.3.4 [[SCI/Specifications/Resource_files/Decompression_algorithms/DCL-EXPLODE|DCL-EXPLODE]]
** 2.3.4 [[SCI/Specifications/Resource_files/Decompression_algorithms/DCL-EXPLODE|DCL-EXPLODE]]
            * 2.3.5 [[SCI/Specifications/Resource_files/Decompression_algorithms/UNKNOWN|UNKNOWN]]
** 2.3.5 [[SCI/Specifications/Resource_files/Decompression_algorithms/UNKNOWN|UNKNOWN]]


== [[SCI/Specifications/Graphics|The Graphics subsystem]] ==
== [[SCI/Specifications/Graphics|The Graphics subsystem]] ==
      * 3.1 [[SCI/Specifications/Graphics#General_stuff|General stuff]]
* 3.1 [[SCI/Specifications/Graphics#General_stuff|General stuff]]
      * 3.2 [[SCI/Specifications/Graphics/SCI_Ports|SCI Ports]]
* 3.2 [[SCI/Specifications/Graphics/SCI_Ports|SCI Ports]]
      * 3.3 [[SCI/Specifications/Graphics/Cursor_resource|The Cursor resource]]
* 3.3 [[SCI/Specifications/Graphics/Cursor_resource|The Cursor resource]]
            * 3.3.1 [[SCI/Specifications/Graphics/Cursor_resource#SCI0|Color mapping for the SCI0 mouse pointer]]
** 3.3.1 [[SCI/Specifications/Graphics/Cursor_resource#SCI0|Color mapping for the SCI0 mouse pointer]]
            * 3.3.2 [[SCI/Specifications/Graphics/Cursor_resource#SCI1|Color mapping for the SCI1 mouse pointer]]
** 3.3.2 [[SCI/Specifications/Graphics/Cursor_resource#SCI1|Color mapping for the SCI1 mouse pointer]]
      * 3.4 [[SCI/Specifications/Graphics/SCI0_view_resource|The SCI0 View Resource]]
* 3.4 [[SCI/Specifications/Graphics/SCI0_view_resource|The SCI0 View Resource]]
            * 3.4.1 [[SCI/Specifications/Graphics/SCI0_view_resource#View Resource|The View Resource]]
** 3.4.1 [[SCI/Specifications/Graphics/SCI0_view_resource#View Resource|The View Resource]]
            * 3.4.2 [[SCI/Specifications/Graphics/SCI0_view_resource#Cell List|Cell List]]
** 3.4.2 [[SCI/Specifications/Graphics/SCI0_view_resource#Cell List|Cell List]]
            * 3.4.3 [[SCI/Specifications/Graphics/SCI0_view_resource#Image Cell|Image Cell]]
** 3.4.3 [[SCI/Specifications/Graphics/SCI0_view_resource#Image Cell|Image Cell]]
      * 3.5 [[SCI/Specifications/Graphics/Font_resource|Font resource]]
* 3.5 [[SCI/Specifications/Graphics/Font_resource|Font resource]]
      * 3.6 [[SCI/Specifications/Graphics/SCI0-SCI01 pic resource|The SCI0 and SCI01 pic resource]]
* 3.6 [[SCI/Specifications/Graphics/SCI0-SCI01 pic resource|The SCI0 and SCI01 pic resource]]
      * 3.7 [[SCI/Specifications/Graphics/SCI1 palettes|SCI1 palettes]]
* 3.7 [[SCI/Specifications/Graphics/SCI1 palettes|SCI1 palettes]]
            * 3.7.1 [[SCI/Specifications/Graphics/SCI1 palettes#Palette types|Palette types]]
** 3.7.1 [[SCI/Specifications/Graphics/SCI1 palettes#Palette types|Palette types]]
            * 3.7.2 [[SCI/Specifications/Graphics/SCI1 palettes#Palette format|Palette format]]
** 3.7.2 [[SCI/Specifications/Graphics/SCI1 palettes#Palette format|Palette format]]
            * 3.7.3 [[SCI/Specifications/Graphics/SCI1 palettes#Installing a palette|Installing a palette]]
** 3.7.3 [[SCI/Specifications/Graphics/SCI1 palettes#Installing a palette|Installing a palette]]
      * 3.8 [[SCI/Specifications/Graphics/Kernel calls|Kernel calls]]
* 3.8 [[SCI/Specifications/Graphics/Kernel calls|Kernel calls]]
            * 3.8.1 [[SCI/Specifications/Graphics/Kernel calls#Palette syscall|Palette syscall]]
** 3.8.1 [[SCI/Specifications/Graphics/Kernel calls#Palette syscall|Palette syscall]]
      * 3.9 [[SCI/Specifications/Graphics/Windows, Dialogs and Controls|Windows, Dialogs and Controls]]
* 3.9 [[SCI/Specifications/Graphics/Windows, Dialogs and Controls|Windows, Dialogs and Controls]]
      * 3.10 [[SCI/Specifications/Graphics/Pictures and movement control|Pictures and movement control]]
* 3.10 [[SCI/Specifications/Graphics/Pictures and movement control|Pictures and movement control]]


== [[SCI/Specifications/Sound|The Sound subsystem]] ==
== [[SCI/Specifications/Sound|The Sound subsystem]] ==
      * 4.1 [[SCI/Specifications/Sound/SCI0_Resource_Format|The SCI0 Sound Resource Format]]
* 4.1 [[SCI/Specifications/Sound/SCI0_Resource_Format|The SCI0 Sound Resource Format]]
            * 4.1.1 [[SCI/Specifications/Sound/SCI0_Resource_Format#Preface|Preface]]
** 4.1.1 [[SCI/Specifications/Sound/SCI0_Resource_Format#Preface|Preface]]
            * 4.1.2 [[SCI/Specifications/Sound/SCI0_Resource_Format#Sound Devices|Sound Devices]]
** 4.1.2 [[SCI/Specifications/Sound/SCI0_Resource_Format#Sound Devices|Sound Devices]]
            * 4.1.3 [[SCI/Specifications/Sound/SCI0_Resource_Format#File Format|File Format]]
** 4.1.3 [[SCI/Specifications/Sound/SCI0_Resource_Format#File Format|File Format]]
            * 4.1.4 [[SCI/Specifications/Sound/SCI0_Resource_Format#Digital Samples|Digital Samples]]
** 4.1.4 [[SCI/Specifications/Sound/SCI0_Resource_Format#Digital Samples|Digital Samples]]
            * 4.1.5 [[SCI/Specifications/Sound/SCI0_Resource_Format#Amiga sound (SCI0)|Amiga sound (SCI0)]]
** 4.1.5 [[SCI/Specifications/Sound/SCI0_Resource_Format#Amiga sound (SCI0)|Amiga sound (SCI0)]]
            * 4.1.6 [[SCI/Specifications/Sound/SCI0_Resource_Format#Amiga sound (SCI1)|Amiga sound (SCI1)]]
** 4.1.6 [[SCI/Specifications/Sound/SCI0_Resource_Format#Amiga sound (SCI1)|Amiga sound (SCI1)]]
            * 4.1.7 [[SCI/Specifications/Sound/SCI0_Resource_Format#General MIDI and MT-32 (SCI1)|General MIDI and MT-32 (SCI1)]]
** 4.1.7 [[SCI/Specifications/Sound/SCI0_Resource_Format#General MIDI and MT-32 (SCI1)|General MIDI and MT-32 (SCI1)]]
      * 4.2 [[SCI/Specifications/Sound/Mapping instruments in FreeSCI|Mapping instruments in FreeSCI]]
* 4.2 [[SCI/Specifications/Sound/Mapping instruments in FreeSCI|Mapping instruments in FreeSCI]]
            * 4.2.1 [[SCI/Specifications/Sound/Mapping instruments in FreeSCI#The Patch.002 resource|The Patch.002 resource]]
** 4.2.1 [[SCI/Specifications/Sound/Mapping instruments in FreeSCI#The Patch.002 resource|The Patch.002 resource]]
            * 4.2.2 [[SCI/Specifications/Sound/Mapping instruments in FreeSCI#Percussion instruments|Percussion instruments]]
** 4.2.2 [[SCI/Specifications/Sound/Mapping instruments in FreeSCI#Percussion instruments|Percussion instruments]]


       
       
== [[SCI/Specifications/SCI_virtual_machine|The SCI virtual machine]] ==
== [[SCI/Specifications/SCI_virtual_machine|The SCI virtual machine]] ==
      * 5.1 [[SCI/Specifications/SCI_virtual_machine/Introduction|Introduction]]
* 5.1 [[SCI/Specifications/SCI_virtual_machine/Introduction|Introduction]]
            * 5.1.1 [[SCI/Specifications/SCI_virtual_machine/Introduction#Script resources|Script resources]]
** 5.1.1 [[SCI/Specifications/SCI_virtual_machine/Introduction#Script resources|Script resources]]
            * 5.1.2 [[SCI/Specifications/SCI_virtual_machine/Introduction#Selectors|Selectors]]
** 5.1.2 [[SCI/Specifications/SCI_virtual_machine/Introduction#Selectors|Selectors]]
            * 5.1.3 [[SCI/Specifications/SCI_virtual_machine/Introduction#Function invocation|Function invocation]]
** 5.1.3 [[SCI/Specifications/SCI_virtual_machine/Introduction#Function invocation|Function invocation]]
            * 5.1.4 [[SCI/Specifications/SCI_virtual_machine/Introduction#Variable types|Variable types]]
** 5.1.4 [[SCI/Specifications/SCI_virtual_machine/Introduction#Variable types|Variable types]]
      * 5.2 [[SCI/Specifications/SCI_virtual_machine/Interpreter initialization and the main execution loop|Interpreter initialization and the main execution loop]]
* 5.2 [[SCI/Specifications/SCI_virtual_machine/Interpreter initialization and the main execution loop|Interpreter initialization and the main execution loop]]
      * 5.3 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap|The SCI Heap]]
* 5.3 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap|The SCI Heap]]
            * 5.3.1 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap#Heap structure|Heap structure]]
** 5.3.1 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap#Heap structure|Heap structure]]
            * 5.3.2 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap#Initialization|Initialization]]
** 5.3.2 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap#Initialization|Initialization]]
            * 5.3.3 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap#Memory allocation|Memory allocation]]
** 5.3.3 [[SCI/Specifications/SCI_virtual_machine/The SCI Heap#Memory allocation|Memory allocation]]
      * 5.4 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine|The Sierra PMachine]]
* 5.4 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine|The Sierra PMachine]]
            * 5.4.1 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#LocalVar|Local variables (LocalVar)]]
** 5.4.1 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#LocalVar|Local variables (LocalVar)]]
            * 5.4.2 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Global variables|Global variables]]
** 5.4.2 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Global variables|Global variables]]
            * 5.4.3 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Temporary variables|Temporary variables]]
** 5.4.3 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Temporary variables|Temporary variables]]
            * 5.4.4 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Parameter variables|Parameter variables]]
** 5.4.4 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Parameter variables|Parameter variables]]
            * 5.4.5 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Objects|Objects]]
** 5.4.5 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#Objects|Objects]]
            * 5.4.6 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#The PMachine "registers"|The PMachine "registers"]]  
** 5.4.6 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#The PMachine "registers"|The PMachine "registers"]]
            * 5.4.7 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#The instruction set|The instruction set]]        
** 5.4.7 [[SCI/Specifications/SCI_virtual_machine/The Sierra PMachine#The instruction set|The instruction set]]
      * 5.5 [[SCI/Specifications/SCI_virtual_machine/Kernel functions|Kernel functions]]
* 5.5 [[SCI/Specifications/SCI_virtual_machine/Kernel functions|Kernel functions]]
            * 5.5.1 [[SCI/Specifications/SCI_virtual_machine/Kernel functions#Parameter types|Parameter types]]
** 5.5.1 [[SCI/Specifications/SCI_virtual_machine/Kernel functions#Parameter types|Parameter types]]
            * 5.5.2 [[SCI/Specifications/SCI_virtual_machine/Kernel functions#SCI0 Kernel functions|SCI0 Kernel functions]]
** 5.5.2 [[SCI/Specifications/SCI_virtual_machine/Kernel functions#SCI0 Kernel functions|SCI0 Kernel functions]]


== [[SCI/Specifications/SCI in action|SCI in action]] ==
== [[SCI/Specifications/SCI in action|SCI in action]] ==
      * 6.1 [[SCI/Specifications/SCI in action/Event handling in SCI|Event handling in SCI]]
* 6.1 [[SCI/Specifications/SCI in action/Event handling in SCI|Event handling in SCI]]
            * 6.1.1 [[SCI/Specifications/SCI in action/Event handling in SCI#Event types and modifiers|Event types and modifiers]]
** 6.1.1 [[SCI/Specifications/SCI in action/Event handling in SCI#Event types and modifiers|Event types and modifiers]]
      * 6.2 [[SCI/Specifications/SCI in action/Parser|The Parser]]
* 6.2 [[SCI/Specifications/SCI in action/Parser|The Parser]]
            * 6.2.1 [[SCI/Specifications/SCI in action/Parser#Vocabulary file formats|Vocabulary file formats]]
** 6.2.1 [[SCI/Specifications/SCI in action/Parser#Vocabulary file formats|Vocabulary file formats]]
            * 6.2.2 [[SCI/Specifications/SCI in action/Parser#The black box: The magic behind Sierra's text parser|The black box: The magic behind Sierra's text parser]]
** 6.2.2 [[SCI/Specifications/SCI in action/Parser#The black box: The magic behind Sierra's text parser|The black box: The magic behind Sierra's text parser]]
            * 6.2.3 [[SCI/Specifications/SCI in action/Parser#The Parse tree|The Parse tree]]  
** 6.2.3 [[SCI/Specifications/SCI in action/Parser#The Parse tree|The Parse tree]]
            * 6.2.4 [[SCI/Specifications/SCI in action/Parser#Said specs|Said specs]]
** 6.2.4 [[SCI/Specifications/SCI in action/Parser#Said specs|Said specs]]
            * 6.2.5 [[SCI/Specifications/SCI in action/Parser#Matching the trees|Matching the trees]]
** 6.2.5 [[SCI/Specifications/SCI in action/Parser#Matching the trees|Matching the trees]]
      * 6.3 [[SCI/Specifications/SCI in action/Views and animation in SCI|Views and animation in SCI]]
* 6.3 [[SCI/Specifications/SCI in action/Views and animation in SCI|Views and animation in SCI]]
      * 6.4 [[SCI/Specifications/SCI in action/The message subsystem|The message subsystem]]
* 6.4 [[SCI/Specifications/SCI in action/The message subsystem|The message subsystem]]
            * 6.4.1 [[SCI/Specifications/SCI in action/The message subsystem#Ties to audio|Ties to audio]]
** 6.4.1 [[SCI/Specifications/SCI in action/The message subsystem#Ties to audio|Ties to audio]]
            * 6.4.2 [[SCI/Specifications/SCI in action/The message subsystem#File formats|File formats]]
** 6.4.2 [[SCI/Specifications/SCI in action/The message subsystem#File formats|File formats]]
            * 6.4.3 [[SCI/Specifications/SCI in action/The message subsystem#early|early]]
** 6.4.3 [[SCI/Specifications/SCI in action/The message subsystem#early|early]]
            * 6.4.4 [[SCI/Specifications/SCI in action/The message subsystem#Version 2.101|Version 2.101]]
** 6.4.4 [[SCI/Specifications/SCI in action/The message subsystem#Version 2.101|Version 2.101]]
            * 6.4.5 [[SCI/Specifications/SCI in action/The message subsystem#Version 3.411|Version 3.411]]
** 6.4.5 [[SCI/Specifications/SCI in action/The message subsystem#Version 3.411|Version 3.411]]
            * 6.4.6 [[SCI/Specifications/SCI in action/The message subsystem#Version 4.010|Version 4.010]]
** 6.4.6 [[SCI/Specifications/SCI in action/The message subsystem#Version 4.010|Version 4.010]]
      * 6.5 [[SCI/Specifications/SCI in action/Notes on the kernel calls|Notes on the kernel calls]]
* 6.5 [[SCI/Specifications/SCI in action/Notes on the kernel calls|Notes on the kernel calls]]
            * 6.5.1 [[SCI/Specifications/SCI in action/Notes on the kernel calls#GetMessage syscall|GetMessage syscall]]
** 6.5.1 [[SCI/Specifications/SCI in action/Notes on the kernel calls#GetMessage syscall|GetMessage syscall]]
            * 6.5.2 [[SCI/Specifications/SCI in action/Notes on the kernel calls#Message syscall|Message syscall]]
** 6.5.2 [[SCI/Specifications/SCI in action/Notes on the kernel calls#Message syscall|Message syscall]]

Revision as of 19:18, 19 January 2009

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

Resource files

The Graphics subsystem

The Sound subsystem

The SCI virtual machine

SCI in action