I just thought of something...
Weren't the internal BlitzMax collision commands designed to get around the issue with colliding lots of onscreen objects with one another?
I don't know how it is supposed to work, because it seems too simple to work properly, but it seems like you're able to call collide image multiple times to add images to a collision buffer and then check an image against the end result.
If I understand what it's doing correctly, then only the topmost image at the first detected colliding pixel would be returned, (Ie, if two bullets overlapped one pixel, and that pixel was overlapped by your ship, then only the last bullet drawn at that pixel would be returned.) but this may be enough for your purpouses. It probably won't be as fast as the method I outlined, (since you're drawing each object in software, rather than just those ones that collided to do the pixel perfect test) but it would be linear time, and should be fast enough.
Weren't the internal BlitzMax collision commands designed to get around the issue with colliding lots of onscreen objects with one another?
I don't know how it is supposed to work, because it seems too simple to work properly, but it seems like you're able to call collide image multiple times to add images to a collision buffer and then check an image against the end result.
If I understand what it's doing correctly, then only the topmost image at the first detected colliding pixel would be returned, (Ie, if two bullets overlapped one pixel, and that pixel was overlapped by your ship, then only the last bullet drawn at that pixel would be returned.) but this may be enough for your purpouses. It probably won't be as fast as the method I outlined, (since you're drawing each object in software, rather than just those ones that collided to do the pixel perfect test) but it would be linear time, and should be fast enough.