Hi,

Yes, all <subj.> are related! :-)

Let me start with the PQ problem: After entering the correct answer to
the copy protection, the copy protection window just shows up again.
Tracing through PQ's code I found that passing the copy protection
yields a kernel call to RestartGame  (sic!), thus creating the further
requirement that the execution continue in PQ::replay(), which then
actually runs the game! Now that's what I call damn ugly code!

So we  have quite a few related problems at our hands here:

  * Simply calling invoke_selector in kRestartGame may eventually fill
up the execution stack if the game is restarted often enough (we could
clear the exec stack, though)
  * The way I see it (TWISI?) we can't handle RestartGame TWSUTDT,
beceause of the way we implement game_state_t. This may require a
restructuring of our code.
  * Even after implementing kRestartGame, the original PQ bug still
occurs (i.e. the copy protection reappears, although after a longer
while now)

BTW: AddToPic needs to be prepared to receive a null pointer as a
parameter. Haven't checked if this is original SCI behaviour or because
of my particular (and possibly buggy) RestartGame implementation,
thouugh.

Lars


Reply via email to