Thanks Andrew. I will certainly be taking a look at the code soon. Actually, I have been intending to start a thread to further discuss the Power Pack. I think this thread should be fine though. The Power Pack understandably states that it will only work with the original AGI interpreter, and will not work with NAGI, Sarien, AGILE, AGIPlayer, etc. That is all well and good, but what I've been wondering is how we might go about adding support for Power Pack games within the fan made AGI interpreters, e.g. AGILE. Obviously we can't rely on the same mechanism to set it up, because that's a completely foreign concept to the fan made interpreters, especially in the case of AGILE. But I assume that I could code support for the additional features directly into AGILE itself, and ignore the attempts to inject code beyond the normal string boundaries (other than that that indicates it is a Power Pack game, and so could be used to switch that mode on). It wouldn't be the same thing as the Power Pack, and wouldn't pick up on any changes/fixes that you make to the Power Pack in the future (unless I code the same changes into AGILE), but it would mean that any Power Pack games, such as your one, could be run in AGILE.
Support for other fan made extensions to the AGI interpreter, such as AGI Mouse, AGI256, and AGIPAL, are reasonably straight forward by comparison. I'd like to support all of those as well, so that the fan made games that rely on them could be played.
I discovered a fan made game called "Flag Quest" over recent days that, as you obviously know, relies on reading beyond the limit for strings in order to determine what AGI version the game is running in. This is fairly trivial to add support for in a fan made AGI interpreter such as AGILE. Hmmm, I guess that in order to 100% support the Power Pack features, I would probably need to have a byte array that represents the area of memory that you are injecting code into, so that I would actually be writing the bytes into it, so that the same bytes could in theory be tested with compare.strings, otherwise you'd know that it isn't the real AGI interpreter, should you implement code to test this. The ideal solution would be indistinguishable from the real interpreter.