Well, I finally found some time to code [insert pretentious comment about being a "writer" and deadlines here!] and removed the old single-sprite bullet routine in order to add a shiny new character-based system; it almost worked straight away (which is a minor miracle in itself) and, after just a little tweaking, things seem to be happy... although I did have to re-tune the collisions again now I can actually see where things are in relation to each other! Essentially, the bullets can be used as a guide, if you can fire through a gap it's possible to fly through it as well. There needs to be some work done to add coloured bullets (presently they just inherit the colour of the tile they're over) since I'm hoping that the same plot routine can be co-opted into driving a static starfield behind the action and that'll need high res characters to get it looking the way I want it.
A first draft of the level management routines and some data went in as well; so far it seems to be functioning but I suspect I'll need to keep an eye on the thing because a single, minor typo in that table can utterly bork things up and the attack wave managers or tile readers can suddenly find themselves pulling in totally wrong data. A next step is going to be removing the INC $D021 loop that kicks up when a level is completed and having the thing actually try to leave the level and set up the next.