The problem appears to be happening when the game can't decide if you're moving or stationary, and so switches between standing and moving frames until the stack overflows. I have a tentative fix, where you replace the bit of code
if(!self.velocity_x && !self.velocity_y)
{
...
}
with
if(!self.velocity_x)
{
if(!self.velocity_y)
{
...
}
}
These two are logically equivalent but are not executed the same in the engine. The former code will test both conditions even if the first fails. The latter exits early if the first condition fails. Why one causes the crash and the other doesn't, I'm not sure. But you can download a progs with just that change from here:
http://people.pwf.cam.ac.uk/ajd70/progsfix.zip
It seemed to help me, but I can't say it works for sure, as I don't quite understand what goes wrong.
Lots of nice touches in the map, like the wall mounted weapons and the grunts with biosuits on, really gave it a sense of place. Managed to blast through it without too much trouble, just about survived the silver key area safely, and got through with most of the kills, but without finding the secret. I didn't get access to hydroponics or the crew quarters, are both of them involved in the secret?