serious optimiseation is the answer, hide what isn`t seen, switch to lower res objects at a distance, keep the textures as small as sensible, read and re-read the code for every bit you can remove or make shorter, time every loop and long calculation with the timer and see whats eating cycles, then optimise, strip out fancy stuff like realistic missile dynamics and replace them with a fudge (hack, anything that makes em behave like you want without the cpu power), strip out all sin/cos etc and replace em with lookup tables, keep the screen res as low as practicle, keep your sounds short and small, delete anything unused, make any decision check the most probable first , that way if it fails then it wont` check the rest, so nest your decisions, don`t have a whole raft of if-thens that check for all sorts of collisions with the missile, just check for a missile collision and then check what sort it is afterwards, that way you only do one check in the main loop, and when a collision occurs the delay won`t be noticed, whereas if you had a 2msec delay every loop to check all possible collisions then it would waste 1/5th sec at 100fps, but a single check that branches to the rest of the tests would use an almost immeasureably small amount of time and give you a massive speed up.
Mentor.
PC1: P4 hyperthreading 3ghz, 1gig mem, 2x160gig hd`s, Nvidia FX5900 gfx, 6 way surround sound, PC2: AMD 1.2ghz, 512mb ram, FX5200 ultra gfx, stereo 16 bit soundblaster.