There is a circulating version of AGS Shell plugin as agsshell.dll
used by some games (Rosewater). Internally it's the same
ags_shell.dll so simply an alias will allow these games to run.
Previously the plugin system was obviously built around function
pointers, since a loaded plugin DLL would expose them statically.
This meant that the plugin classes I implemented also had to use
static methods, and all the variables had to be static as well.
This has been getting more and more annoying. So this commit is
an in-progress refactoring of AGS to allow for plugins to be
properly instance-based, and pointers to script methods will be
both a pointer to the plugin as well as the method name.
* AGS_Fire: Doesn't do anything, but allows games using plasma fire
effects to load and run.
All methods return 0
* AGS_AGI: Allows games who use AGI lowres effects to load and run.
Games using scaling mode 0 will be squashed on the screen, but others
should be playable without the screen effect.
The latest change to try and properly handle NumberPtr results
from plugin methods broke the passed parameters on methods with
a void return. To solve this once and for all, I changed all
plugin methods to be a void return, and added a _results field
as part of the passed params parameter