Hey again,
On 21 Nov 2007, at 20:23, Alban Bedel wrote:
> On Wed, 21 Nov 2007 07:07:51 -0800
> "G33K" <[EMAIL PROTECTED]> wrote:
>
>>> I would be cautious relying on ScummVM behaviour, considering a lot
>>> of code in it consists of random hacks and workarounds for various
>>> different SCUMM games, rather than the original implementation
>>> which while still being a hack works as intended. :)
>>
>>> Remember if you ever want to try out your SCUMM creation in the
>>> original interpreter, grab DOTT or SAMNMANX's interpreter
>>> executable and rename it to "scummc.exe". Then edit your Makefile
>>> adding "-key 0x69" to the parameters for the linker, SLD and
>>> recompile. Then run scummc.exe in dosbox (or equivalent).
>>
>> Alright, I tried the original DOTT interpreter, and promptly
>> spotted 2
>> significant differences to ScummVM:
>>
>> * actorFace() and setActorDirection() don't seem work. The dudes kept
>> staring in the same direction, whether I gave them actors, objects,
>> directions or angles as parameters. (setActorDirection works fine in
>> ScummVM with angles, thanks Alban)
>
> Hmm, dunno. We must investigate the dott script, they must turn an
> actor somewhere. BTW beside dumping everything with rd scummvm can be
> set to dump all the scripts it execute. That's another way to look at
> how things are done in dott, sometimes easier.
Really? Neat!
With regards to actorFace, its used in quite a few places. For example:
[0C86] (B8) printActor.msg(:sound:"Don't worry guys!")
[0CAA] (AC) soundKludge([268,97,0,1])
[0CBA] (5E) startScript(2,71,[8,7,6,48,136])
[0CD3] (CA) delayFrames(2)
[0CD7] (81) faceActor(2,6)
[0CDE] (81) faceActor(3,6)
[0CE5] (81) faceActor(1,6)
[0CEC] (81) faceActor(4,6)
[0CF3] (6C) breakHere()
[0CF4] (5D) unless ((array236[6] == 0)) jump cf3
[0D01] (82) animateActor(6,245)
[0D08] (82) animateActor(6,4)
[0D0F] (A9) wait.waitForMessage()
[0D11] (82) animateActor(6,5)
[0D18] (BA) talkActor(:sound:"This time I KNOW I can stop him!",6)
(One of the cutscenes near to the end. Actor 1 is Bernard, 2 is
Laverne, 3 is Hoagie, 4 is Dr Fred, 6 is green tentacle)
[067D] (81) faceActor(8,VAR_EGO)
[0684] (B0) delay(30)
[0688] (BA) talkActor(:sound:"Voila.",8)
[06A3] (A9) wait.waitForMessage()
[06A5] (BA) talkActor(:sound:"You're quite a man.",3)
[06CD] (A9) wait.waitForMessage()
[06CF] (BA) talkActor(:sound:"Yes, I know.",8)
[06F0] (A9) wait.waitForMessage()
(Near the end of the cutscene which plays when GW cuts down the cherry
tree. Actor 8 is GW, 3 is Hoagie)
I couldn't find any reference to setActorDirection in the de-compiled
DOTT or SAMNMAX scripts, unless it's called something obscure or it's
in a local script. Looking at the V5 opcodes, it doesn't appear to be
there at all, which suggests to me it could be a late V6 addition
perhaps.
In any case, setActorDirection accepts degrees, whereas actorFace
accepts actors and objects (though mainly just actors).
Sadly i seem to have mislaid my patch to rd.c. Although the auto
dumper did suffer from a little issue whereby the script indexes
weren't being dumped, which made following everything a bit difficult.
Not sure if i was using the wrong variable or what.
(I'll probably do a rewrite and dump the object and room info's
related to script as well)
>
>
>> * The actor objects don't get their names displayed, or included in
>> the sentence at mouseover. When you click on them, the verb is
>> executed normally. I looked at the mouseWatch script, but couldn't
>> see anything suspicious. Can you point me to the exact location where
>> the sentence is constructed when a mouseover occurs?
One has a verb to show it, like so.
setCurrentVerb(SntcLine);
initVerb();
setVerbName("%v{sntcVerb} %n{sntcObjA} %s{sntcPrepo}
%n{sntcObjB}");
setVerbXY(160,145);
setVerbColor(color);
setVerbHiColor(hiColor);
verbCenter();
Then all you need to do to update it is to redraw it, like so:
setCurrentVerb(SntcLine);
redrawVerb();
If you look at the code in the road example, you'll notice all the
variables listed in the string passed to "setVerbName" are listed in
common.scc, with the exception of sntcPrepo which is listed in
common.h. So in essence, the entire sentence line is powered by script.
I'm not sure what the problem could be with your actor names. As long
as you detect the actor and assign sntcObjA or sntcObjB to it, and it
has a name, you should be able to see it.
>>> -b, --boot-param=NUM Pass number to the boot script (boot param)
>>> -d, --debuglevel=NUM Set debug verbosity level
>>
>> "scummvm -d 1" displays the dbgPrint statements. Thanks! :-) Do you
>> know how to enter debugging mode in the original interpreter too?
>
> http://wiki.scummvm.org/index.php/SCUMM/Debug_Codes
> But it doesn't allow you to see the debug messages.
Interesting - perhaps in the original these debug messages are printed
somewhere else, like a com port for example?
Regards,
James S Urquhart
_______________________________________________
ScummC-general mailing list
[email protected]
https://mail.gna.org/listinfo/scummc-general