NAME¶
freesci - free interpreter for SCI bytecode
DESCRIPTION¶
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.
SYNOPSIS¶
freesci [
options] [
game [
savegame]]
OPTIONS¶
- 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).
- savegame
- 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 well.
- --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 action.
- --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 files.
- --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 decorations.
- --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 used.
- 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.
CONFIG FILE¶
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:
GENERAL OPTIONS:
- resource_dir
- 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.
- console_log
- 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.
- GRAPHICS OPTIONS:
-
- 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 unscaled).
- 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.
- SOUND OPTIONS:
-
- 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 mt32gm.
- 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.
- DRIVER-SPECIFIC OPTIONS (GRAPHICS DRIVERS):
-
- 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 default.
- DRIVER-SPECIFIC OPTIONS (SOUND DRIVERS):
-
- 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
default.
- PER-RESOURCE COLOUR CUSTOMISATION:
-
- 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 README.
-
EXAMPLES¶
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
gfx_driver=ggi
animation_delay = 1
animation_granularity=4
gfx.ggi.swap_caps_ctrl=yes
gfx.xlib.swap_caps_ctrl=yes
gfx.sdl.swap_caps_ctrl=yes
midiout.alsaraw.device=0
midiout.unixraw.device=/dev/midi
midiout.ossseq.device=1
midiout.ossseq.recorder=/tmp/recorder
[LSL3]
resource_dir = /usr/share/freesci/lsl3
[KQ4]
resource_dir = /usr/share/freesci/kq4
version = 0.000.502
SUPPORTED GAMES¶
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 FreeSCI.
- •
- 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 usage.
SEE ALSO¶
scitools(6)
BUGS¶
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
http://freesci.linuxgames.com's bug list section for a listing
of all known and current bugs.
AUTHORS¶
FreeSCI is copyright (c) 1999-2006 by the following people:
- •
- Christoph Reichenbach
<creichen@gmail.com>
- •
- Carl Muckenhoupt <carl@wurb.com>
- •
- Dmitry Jemerov <yole@exch.nnz.spb.su>
- •
- Magnus Reftel <d96reftl@dtek.chalmers.se>
- •
- Petr Vyhnak <pvyhnak@attglobal.net>
- •
- Sergey Lapin <slapin@karelia.ru>
- •
- Lars Skovlund <lskovlun@image.dk>
- •
- Matt Hargett <matt@use.net>
- •
- Solomon Peachy <pizza@shaftnet.org>
- •
- Rickard Lind <rpl@dd.chalmers.se>
- •
- Rink Springer <rink@springer.cx>
- •
- Hugues Valois <hugues_valois@hotmail.com>
- •
- Ruediger Hanke <tomjoad@muenster.de>
- •
- Alexander Angas <wgd@adelaide.on.net>
- •
- Walter van Niftrik
<w.f.b.w.v.niftrik@stud.tue.nl>
This man page was written by Bas Zoetekouw <
bas@debian.org> and
Christoph Reichenbach.