Community
AGI Programming => AGI Development Tools => Topic started by: ZvikaZ on February 02, 2021, 04:13:26 AM
-
@AGKorson,
You've mentioned in another thread the original Sierra AGI syntax.
How do we know what was the original Sierra syntax?
Is there original code, or maybe snippets, available?
Or some original docs?
Or something else?
-
First, there were snippets in books (even one that the author claimed to be SCI, which was really AGI).
Then, there was LSL1 on GitHub: https://github.com/historicalsource/leisuresuitlarry
-
I have also partially disassembled Sierra's original Logic compiler (cg.exe), which has helped me validate their syntax.
-
That's cool!
And very interesting.
Do we know how that LSL1 code got to GitHub?
Maybe there are more treasures, from where that came from...
You've reminded me that there was an AGI snippet in Ken Williams' recent book (I've just verified, it's at page 162).
Do you remember what other books have code snippets?
-
You also have these 2 original documents (which I leaked, and Kawa hosts):
- AGDS - Adventure Game Development System (https://helmet.kafuka.org/sci/original/AGDS.pdf)
- Actions, Tests and Flags in the Adventure Game Interpreter (https://helmet.kafuka.org/sci/original/AGI.pdf)
As for AGI source:
I've got the source for the following AGI games:
- Donald Duck's Playground
- King's Quest 3
- Leisure Suit Larry 1
- Police Quest 1
- The Black Cauldron
Unfortunately I cannot share it.
If you're interested in a specific piece of code, I guess I can put it up here.
-
Fun fact about those games that were just listed: the syntax is the same throughout, but the names and arguments of the commands can be adjusted (https://github.com/historicalsource/leisuresuitlarry/blob/master/SYSDEFS.H) to the programmer's wishes. Of course, the interpreter still expects them to be a certain way but the compiler doesn't come with any knowledge of the exact AGI instruction set. As such, LSL1 uses CamelCase commands while the others use dotted.names.
...It's actually not entirely unlike how Sierra's SCI scripts define their own kernel table in source, while SCI Companion uses the precompiled kernel vocab.
-
...It's actually not entirely unlike how Sierra's SCI scripts define their own kernel table in source, while SCI Companion uses the precompiled kernel vocab.
Except the AGI one has type definitions. This would be quite hard to do rigorously for some SCI kernel calls (and yes, we did it anyway in ScummVM ;D).