Grid the landscape, and shortcircuit checks on the collision array if there are no nearby checked in collisions to be collided with. This is a big win for fire's ammoshove in particular. Also add a +2 that seemed missing in the check, and update fire accordingly.
#include <stdio.h>
#include "openalbridge.h"
int main (int argc, int **argv) {
openal_init();
openal_close();
return 0;
}