Hi,
On Mon, 20 Nov 2000, Felix Domke wrote:
> i'm not sure that it's what you want (i always mix SCI0, SCI01, SCI1, SCIV
I don't think there is an actual SCI version called "SCIV"; that's the
name of their interpreter.
The following versions are known to exist:
0.000.xxx : Informally referred to as SCI0. This is the version of SCI
currently supported by FreeSCI. In this version, the interpreter
has a fully opererational text parser. On the IBM PC, all SCI0
games use 16 colors.
1.000.xxx : Either SCI01 or SCI1.0. We're making the distinction based on
how many colors the interpreter uses in its IBM PC version.
SCI01: 16 colors. Right now, three games have been categorized as
SCI01: QfG2, KQ1/SCI, and the 1990 Christmas Greeting
Card. QfG2 and KQ1/SCI both used a text parser.
SCI1.1: 256 colors. The text parser is disabled in these games.
(Actually, it might be appropriate to categorize the 1990 CGC as
SCI1.1 if it doesn't have a text parser, but that's not really
all that important because SCI01 and SCI1.1 are rather informal
terms).
The compression scheme was changed at some time during SCI1.1;
also, script files were separated into .scr and .hep files at
some point.
1.001.xxx : SCI1.1: Uses different compression algorithms. I haven't
checked it, but I think that SCI1.1 supports pixmap scaling.
SCIWin/SCI32: 32 bit interpreter, some parts of which were written from
scratch. According to some former Sierra employees, the
developers responsible for this interpreter weren't quite up
to the task.
LSCI: Large SCI, 32 bit interpreter written for some online service.
You can find some games with their categorizations at
http://freesci.cx/scihtml/x120.html.
> and SCI32), but i successfully made an unpacker for Gabriel Knight 1 (SCIV i
> think, but i'am not sure).
If you have access to a UNIXish box, you should be able to find out using
the 'strings' command:
`strings SIERRA.EXE | grep 00`
might do the trick, if your interpreter is called SIERRA.EXE.
(I'm not certain whether this is always possible; some interpreters might
be compressed .EXE files).
> however, i used a disassembled routine in the EXE (blame me on that).
> it's something called "STACPACK".
Stac are the guys responsible for LZS (RFC 1974), which appears to be
widely used in PPP compression nowadays. If I didn't get anything wrong,
it's a communication protocol (or something directly used by one), and it
is related (or based on?) the deflate algorithm discussed earlier (which
is a variant of LZW). Please have a look at the previous mails for a
discussion of this.
> then i tried to make a sciv-decompiler, but i failed ... it's just a too
> complex language.
SCI is not quite trivial :->
(especially send and friends can give you quite a headache when called to
send messages to half a dozen objects and change attributes in between).
Decompilers aren't exactly easy to write, either.
> however, it's very interesting.
I hope that our documentation helped (even though the separated .HEP/.SCR
format isn't discussed).
> so, if anyone is interested in that (work-in-progress-)stuff, i'll upload it
> somewhere.
> it includes parsing and unpacking of the resource.000, and loading and
> disassembling the .HEP and .SCR files, and begins to decompile then.
We're still trying to finish SCI0 support at this point (once I've fixed
the graphics stuff, that is...), so I don't think there's anything we'd be
able to use right now. However, this might change once we move on to SCI1
(also, other people might be interested in it...).
What are your terms for redistributing this stuff? How portable is it?
Thanks for your interest,
llap,
Christoph