Hi,
On Sat, 20 May 2000, Christoph Reichenbach wrote:
> > I don't have a DOS machine handy, but sierra.exe seems to contain the
> > string 0.000.274.
Mine is the same.
>
> Interesting! The oldest interpreter I have is 0.000.294; yours might have
> some new weirdnesses.
I think most of the changes here were niceties... the only difference I
found so far (because I was mucking around in those parts) is that they
got rid of some ugly, self-modifying code in the callk implementation.
Also, there may be some priority-related differences - the IV in the
King's Quest logo appears in front of the banner, instead of behind it.
And there's the "usual" RestartGame() call after the intro - is it still
there in your KQ4?
Maybe I ought to check RestartGame() for implementation differences. It
seems they stopped using that trick somewhere in the 0.000.5?? series.
BTW, there's some madness regarding &rest in Hoyle's Book of Games. I have
made some fixes for that (as well as for the list functionality). Seems to
work, but I am hesitant about posting this before I can verify it more
thoroughly.
> 0x68 is usually GetSaveDir(), which is actually called very early in most
> SCI programs (step #13 looks realistic).
> However, only 98 (or so) kernel function names were listed, so we have to
> assume that your KQ4 is missing more than one kernel function name (later
> games usually don't have the name of the last kernel function).
>
> I'll set the number of kernel functions to 0x6e for games older than
> 0.000.297, and call the default functions. That should fix this problem.
That's another way of doing it... please read my reply to Chris. I think
the main problem with this solution is that we end up with a lot of
version-related kludges (UNKNOWN_KERNEL_FUNCTION_STRING and now
this) instead of the obvious (IMHO), config-based customization of kernel
functions. The unknown kernel function (in the latest SCI's that have only
one of those) is called Joystick. It is called regularly with subfunction
12 (the only one supported on PC's, probably more on Amigas etc.) and the
parameter 30. It sets some sort of (positioning-related) value in the
joystick driver.
I guess support for this call is very low priority. Who would use a
joystick with FreeSCI, anyway?
> The most commonly used functions are "s" and "debuglog", you might want to
> check those first.
Good work with the debugger, BTW! It was a great help during my latest
FreeSCI hacks (and before that, as well)!
>
> llap,
> Christoph
>
Lars