Yeah, that's a bug when the frame rate drops too low.. I'm working on integrating a better collision system for the next version though..
--Mike
I don't see how this could be caused by a low framerate. Or did you link the collisions to room_speed? 
First of all, room_speed is usually a constant and it's not changing according to the framerate, unlike
fps. Second of all, I wouldn't doubt that being caused by a low framerate. Not only the fact that I had run to similar results while testing Barnstormer 1920 (was it '20?), but also the fact that there are probably physics involved.
Framerate plays a major part in physics. In real life, the length of second doesn't change. In Game programming, the length of a step (between two execution frames) does change. In speed (=distance / time), and even more, in acceleration (=distance / time
squared), the change is visible. The step is one unit when these are executed like (x+=speed; speed+=acceleration) as they usually are.
The bug is caused when values like speed are set to values according to the normal framerate and the fps suddenly changes much, for example 2 (pixels/frame), in 60 fps (second = 60*frames, frame = seconds/60), means that the object travels 2 pixels in 60th of a second, therefore traveling 60*2 = 120 pixels in a second. And then at the start, the fps increases vastly from about 10 fps to 40 fps for example, let's see what happens with the (x+=speed; speed+=acceleration)-system.
First step: fps == 10; x == 0; speed == 2; acceleration == 0.1; these values are converted respectively to seconds:
speed == 2*10=20; acceleration == 0.1*10^2=10
system internal:
x+=speed; -> x=2
speed+=acceleration; -> speed=2.1
visible effect (respectively in seconds):
x+=speed; -> x=20
speed+=acceleration; -> speed=30
Next step: <The fps increases to 40>
system internal:
x+=speed; -> x=4.1
speed+=acceleration; -> speed=2.2
visible effect (respectively in seconds):
(speed == 2.1*40=84; acceleration == 0.1*40^2=160)
x+=speed; -> x=104
speed+=acceleration; -> speed=190
Next step:
system internal:
x+=speed; -> x=6.3
speed+=acceleration; -> speed=2.3
visible effect (respectively in seconds):
x+=speed; -> x=294
speed+=acceleration; -> speed=350
Next step:
<The fps increases to 60>
system internal:
x+=speed; -> x=8.6
speed+=acceleration; -> speed=2.4
visible effect (respectively in seconds):
(speed == 2.3*60=138; acceleration == 0.1*60^2=360)
x+=speed; -> x=432
speed+=acceleration; -> speed=710
So the speed is 710 after 4 steps. If the fps would have stayed the same, the speed would've been 2.4*60=144. The difference is significant. Sorry, I couldn't explain it more easily.
I'd say the best way to prevent this would be to use delta-time.