freesci(6)                           FreeSCI                          freesci(6)

       freesci - free interpreter for SCI bytecode

       FreeSCI is a portable interpreter for SCI games, such as the Space Quest
       series (starting with SQ3) or Leisure Suit Larry (2 and sequels); see
       below for a complete listing.

       freesci is the main executable which loads, links and runs SCI bytecode.

       freesci [options] [game [savegame]]

       game   An identifier describing the game to start. This identifier
              (GAME_ID) must be declared in the configuration file. If omitted,
              the interpreter will attempt to read resource files from the
              current working directory (or the directory specified by the
              --gamedir option). If that fails, it will present a graphical game
              selection screen for the games listed in the config file and the
              games located under ~/.freesci/games (or the directory specified
              by the --menudir option).

              If this option is specified after the game name, the interpreter
              will attempt to quickload the savegame with the specified ID (see
              the --list-savegames option). This is technically different from
              restoring a savegame from within the game (as it does not re-start
              the game script state afterwards), but it should work just as

       --version, -v
              Display version number and exit.  Also the supported graphics
              drivers, sound servers, midi and midiout drivers are reported.

       --help, -h
              Display a short help text and exit.

       --run, -r
              Do not start the debugger; only run the game. This is the default

       --debug, -D
              Start up in debug mode.

       --list-savegames, -l
              This option instructs the interpreter not to run the game, but
              rather to list all savegames stored for it, including their
              in-game descriptions where available.  This is relevant to figure
              out savegame names for quickloads.  The usual in-game savegames
              are labelled “save_0” through “save_j”.

       --gamedir dir, -ddir
              With this option, games resources will be read from the directory
              dir. Default is the current directory, unless a directory has been
              specified in the config file (see below).

       --menudir dir, -Gdir
              This option sets the directory that the graphical game selection
              menu recurses to look for SCI games. Default is ~/.freesci/games,
              unless the menu_dir option is set in the config file (see below).

       --sci-version version, -Vversion
              This option sets the SCI version for freesci to emulate.
              Acceptable version numbers are of the form x.yyy.zzz, where x is
              the major number, yyy is the minor number and zzz the patch level.

              Note that currectly only SCI0 and SCI01 (major/minor=0/000) games
              are supported.

              Normally, the version will be autodetected from the game resource

       --disable-mouse, -m
              Many SCI games handle the mouse pointer differently if no mouse is
              present in the system. This option instructs the interpreter to
              tell the games that no mouse is present whenever they ask for one;
              the actual effect depends on the individual game.

       --scale-x xfact, -xxfact
              --scale-y yfact, -yyfact These options allow to explicitly specify
              the horizontal and vertical scaling factors. The resulting size of
              the game window will be 320*xfact x 200*yfact, plus any window

       --color-depth bpp, -cbpp
              This sets the number of bits to use per pixel. Some
              visuals/graphics drivers support several color depths, so that
              auto-detection may not yield the desired effects.

       --graphics gfx, -ggfx
              With this option, you can specify which graphics driver is to be

              In this release, sdl, ggi and plain xlib are supported.

       --midiout driver, -Odriver
              This is the output driver or interface to use. Currently, unixraw,
              alsaraw, null, ossopl3, and ossseq (an OSS sequencer driver) may
              be available on your system, ossseq being the default.

       --mididevice driver, -Mdriver
              SCI was designed to support a variety of physical output devices.
              FreeSCI currently supports the Rolant MT-32 (mt32, the default),
              an Adlib device (adlib) and it also offers an MT-32 to General
              MIDI translation layer (mt32gm).

       --sound-server server, -Sserver
              This option may be used to explicitly specify a sound server to
              use.  The sound server is an asynchronous process or thread that
              issues sound output events and reports sound cues back to the
              interpreter; if you have both possibilities (unix and sdl) for
              your system, you may have to experiment to find out which works
              best for you.

       When run, FreeSCI will create a directory called .freesci in your home
       directory (unless this directory already exists). If you run an SCI game,
       this game will create another directory inside the .freesci directory, to
       store its save games in.

       Also, if a file called config exists in this directory, it will be read
       and parsed by the interpreter after the game has been loaded. This
       configuration file can be divided into a global section and various
       game-specific sections.  Within the config file, comments must be
       preceeded by a hash “#” sign.  Empty lines are ignored.

       Game-specific sections are marked by a text string like [GAME_ID], where
       GAME_ID is an ID to use for the game. If the section also contains a
       resource_dir entry, the ID may be passed to freesci as a parameter to
       start the game by its name.

       The config file section before the first game-specific section is the
       global configuration section; anything specified here will be used as the
       setting for any game that does not explicitly request different settings.

       It is possible to include other files with the %include<#> directive.
       FreeSCI will automatically detect and warn about circular inclusions.

       Here is a complete listing of all options supported:


              Read the game's resource data from the specified location. Must
              not be used in the generic part of the config file.

       menu_dir = dir
              Specifies the directory that is recursively searched for SCI games
              when the game selection screen is invoked. Should only be used in
              the generic part of the config file. Defaults to ~/.freesci/games.

       version = x.yyy.zzz
              Emulate SCI version x.yyy.zzz. The version number is sometimes
              printed on game discs, or can be found out by grepping your main
              executable for "0.000." (for SCI0 games). It is also displayed if
              the built-in debugger is activated in the Sierra SCI engine. See
              also the --sci-version command line option.

              Sets a logging file for FreeSCI's console output (by default, this
              is disabled).

       mouse = yes | no
              Specifies whether the interpreter should report to the game that
              it has a mouse.


       pic0_dither_mode = dither | flat | dither256
              dither: draw in 16 colors, same as Sierra SCI; flat: interpolate
              colors (256 colors); this improves some graphics; dither256:
              dither in 256 colors; a compromise between dither and flat.

       pic0_dither_pattern = scaled | unscaled
              scaled: perform picture dithering to blocks with a width of the
              horizontal and a height of the vertical scaling factor; unscaled:
              dither single pixels (same as scaled if the game is being run

       pic0_brush_mode = scaled | ellipses | random-ellipses | more-random
              Affects how semi-random brushes (used mostly for dirt and foilage)
              are drawn in SCI0 background pictures. scaled: scale every
              semi-random pixel to a rectangular block; ellipses: scale every
              semi-random pixel to a filled ellipse; random-ellipses: as
              ellipses, but slightly shift ellipse offset and size; more-random:
              add more random pixels to the whole area.

       pic0_line_mode = correct | fine | half
              Specify how lines are drawn when background pictures are rendered
              in SCI0.  correct: draw lines appropriately scaled; fine: don't
              scale lines (thin lines, may cause problems); half: draw lines at
              half width (may cause problems).

       dirty_strategy = 1 | clusters
              The “dirty strategy” is the strategy used to collect modifications
              to the screen content. Modifying this may affect performance on
              slow or networked systems.  1: collect everything in one dirty
              region; clusters: cluster non-overlapping modified regions into a
              set of regions.

       pic0_scaled = yes | no
              Whether SCI0 background pics should be scaled (may look better) or
              not (faster, looks more like the original games). By default, it
              is disabled.

       pic_buffer_size = #
              Number of background pics to store in an LRU buffer. Increasing
              this value will increase the amount of memory used, but may
              considerably speed up changing back to rooms you visited not too
              long ago.

       view_filter = none | linear | trilinear
              Specifies the way views (non-background images) are scaled (this
              obviously does not affect unscaled images): none: no filtering is
              performed (default); linear: a simple linear filter is applied;
              trilinear: views are passed through a trilinear filter.

       pic_filter = none | linear | trilinear
              Specifies scaling for background images; see view_filter for a
              description of the options.

       cursor_filter = none | linear | trilinear
              Specifies scaling for mouse pointers; see view_filter for a
              description of the options.  This option does not apply to
              graphics drivers which handle the mouse pointer explicitly
              (currently, only the GGI driver is affected).

       text_filter = none | linear | trilinear
              Specifies scaling for text; see view_filter for a description of
              the options.

       pic_antialiasing = none | simple
              If activated, this option will do an extra pass over background
              images to anti-aliase them, usually improving the overall picture
              quality. This is set to none by default.

       animation_delay = #
              This chooses the amount of microseconds to wait between each
              sub-element of a transition animation (also see
              animation_granularity). Setting this to zero will disable
              transition animations completely.  The default is 5.

       animation_granularity = #
              This sets the amount of steps to execute simultaneously for each
              transition animation. If transition animations seem too slow on
              your system but you don't want to disable them completely, you
              might want to try increasing this value.  The default is 4.

       alpha_threshold = #
              When using filtered images (specifically views, text, and cursors
              where used by the graphics driver), this value is used to
              determine when a part of the image should be drawn and when it
              should be omitted. The definition space of this value is 0 to 255,
              where larger values cause more to be drawn.  This value does not
              affect unfiltered images or images drawn with alpha blending.
              Default is 129.


       midi_device = driver
              Chooses the default MIDI device; this can be mt32 for plain MT-32
              output, or mt32gm to use FreeSCI's MT32 -> General MIDI mapping
              algorithm. Also Adlib (adlib) is supported.  This defaults to

       midiout_driver = driver
              Selects the output device to use. Available options are alsaraw
              (using ALSA's raw MIDI output devices), unixraw (using
              /dev/midi-style raw MIDI output devices), ossseq (for OSS
              sequencer devices) and win32mci on Win32 systems.  The default on
              UNIXish systems is ossseq.

       sound_server = server
              This chooses one of the asynchronous sound servers. For sound
              output, FreeSCI uses an asynchronous process or thread; currently
              two implementations of this mechanism are available: unix, which
              forks off a separate process, and sdl, which uses libsdl's
              threading mechanisms.  Defaults to unix, where available.


       gfx.xlib.disable_shmem = yes | no
              Can be used to disable support for MIT Shm support on the X11
              Windowing System in cases where detection fails.  This is off by
              default, enabling SHM support.

       gfx.sdl.swap_caps_ctrl = yes | no
              This option instructs the SDL driver to swap caps lock and ctrl
              when reading input.  Disabled by default.

       gfx.sdl.fullscreen = yes | no
              Toggles the SDL graphics driver's fullscreen option. Disabled by


       midiout.alsaraw.card = #
              This specifies the ALSA card to use for raw MIDI output; the
              default is 0.

       midiout.alsaraw.device = #
              Specifies the ALSA device, relative to the card, for raw MIDI
              output. It also defaults to 0.

       midiout.unixraw.device = device
              Sets the device file to use for raw UNIX MIDI output.  This
              defaults to /dev/midi.

       midiout.ossseq.device = #
              Selects the OSS sequencer device number; this defaults to 1.

       midiout.ossseq.recorder = file
              Chooses a file the OSS sequencer should print debug output to.
              This is not particularly helpful for everyday use, and disabled by


       FreeSCI allows the brightness and hue of in-game images to be customised.
       A complete description of this mechanism can be found in the accompanying

       Here is an exemplary configuartion file:

              # FreeSCI configuration file
              # For FreeSCI version 0.3.5

              # default values:

              console_log = /home/user/.freesci/log
              pic_buffer_size = 4
              pic0_brush_mode = more-random
              pic_antialiasing = simple
              pic0_dither_mode = dither256
              pic0_scaled = yes
              pic0_line_mode = normal
              pic0_dither_pattern = scaled
              text_filter = trilinear
              cursor_filter = trilinear
              pic_filter = trilinear
              view_filter = trilinear
              midi_device = mt32
              midiout_driver = alsaraw
              alpha_threshold = 140
              sound_server = unix

              animation_delay = 1

              resource_dir = /usr/share/freesci/lsl3

              resource_dir = /usr/share/freesci/kq4
              version = 0.000.502

       The following games have been tested with FreeSCI and are known to give
       some level of interactivity. In theory, FreeSCI should be able to let you
       complete all of these. Games marked with [c] have been completed using

       •      Hero's Quest / Quest for Glory 1 [c]
       •      Space Quest 3 [c]
       •      King's Quest 1 (SCI version) [c]
       •      King's Quest 4 [c]
       •      Leisure Suit Larry 2 [c]
       •      Leisure Suit Larry 3 [c]
       •      Police Quest 2 [c]
       •      Codename: Iceman
       •      The Colonel's Bequest [c]
       •      Conquest of Camelot
       •      The Fun Seeker's Guide (from the SQ Collector's Series)
       •      Hoyle's Book of Games (volume 1) (*)
       •      Hoyle's Book of Games (volume 2) (*)
       (*) Due to differences between the way Sierra SCI and FreeSCI handle
       graphical widgets, these games may cause an accumulation of widgets in
       the widget subsystem, resulting in a slowdown and some increased memory


       This release has the following limitations (plus some bugs):
       •      Only SCI0 games (and some SCI01 games) are supported
       •      The SCI debug functions aren't fully supported (and probably never
              will be, since FreeSCI uses its own debug functions).

       Please refer to's bug list section for a
       listing of all known and current bugs.

       FreeSCI is copyright (c) 1999-2006 by the following people:

       •      Christoph Reichenbach <>
       •      Carl Muckenhoupt <>
       •      Dmitry Jemerov <>
       •      Magnus Reftel <>
       •      Petr Vyhnak <>
       •      Sergey Lapin <>
       •      Lars Skovlund <>
       •      Matt Hargett <>
       •      Solomon Peachy <>
       •      Rickard Lind <>
       •      Rink Springer <>
       •      Hugues Valois <>
       •      Ruediger Hanke <>
       •      Alexander Angas <>
       •      Walter van Niftrik <>

       This man page was written by Bas Zoetekouw <> and Christoph

FreeSCI 0.3.3                    Dec 30th, 2001                       freesci(6)