A Fresh Restart

Restarting a 16-bit SCI game is pretty simple. In Game:restart...

   (method (restart)
        (if modelessDialog
            (modelessDialog dispose:)

In other words, it clears any modeless dialog, and invokes the kernel call RestartGame to clear everything - globals, cast, sounds, etc. Then the game is re-initialized.
This behavior is unchanged from early SCI0 to late SCI1.1.

When SCI moved to 32-bit, however, things changed. While the interpreter still has the RestartGame kernel call, it does absolutely nothing!
For this reason, restarting had to be re-implemented in script code. Each game had its own restart code that re-initializes everything that needs to be cleared on restart.