Portraits?

Pikachu14 Will/does the VGA template/docs have code/info for those funny speech portraits seen so often?
Brian_Provinciano They are not currently in the template, but would be easy for anyone to implement. It's just an animated view with a message box. Nothing to it.
Pikachu14 I'm guessin' I could figure it out with the decompiler, too?
Lars Skovlund Not completely true. Most games that I have looked at set a
special flag to circumvent the usual Animate cycle (for
performance reasons) when displaying these portraits.
There's also special code in there to handle lip synching -
but Brian is right, the concept itself is quite simple to
implement.
Pikachu14 * wiggles his ears *

Please, do elaborate, Lars...
Lars Skovlund
Kyoufu Kawa wrote:

* wiggles his ears *

Please, do elaborate, Lars...


OK. SCI1 has a new resource type called SYNC which allows you
to mark positions within a digital sound sample. A kernel call
allows you to retrieve this information while the sound is playing.
One possible use of this lip synch, I'll leave the others to your
imagination :-)
Pikachu14 I meant the flag, but it's still nice to know about the whole synchronizing thing.

* uses imagination *

A shotgun sample: "BLAM! ker-chink"
A shotgun view: "BLAM!"
Another view: "ker-chink"
Lars Skovlund
Kyoufu Kawa wrote:

I meant the flag, but it's still nice to know about the whole synchronizing thing.

I don't know how interesting it is... it just makes the interpreter ignore calls
to Animate (well, skip most of the processing, at any rate). It means that you
have to take care of view drawing yourself (as Brian did in his earliest SCI demos). The purpose was no doubt to save a few clock cycles - since computers have become much faster since then, there's no real reason to use it. It's just more work.

Oh, and if you want the variable number that controls this, it's hardcoded
to global variable 84. So don't reorder/delete the variables in the template game, or you may end up tickling this feature unpredictably.
The variable, when used, is usually pointed at a list called fastCast (in script 994 in original games) which is created and destroyed dynamically.
The interpreter does not use the actual list, except as a flag (NULL/non-NULL).

Lars