It's been a bagillion years since I looked at this, but, if I had to guess, I'd say something like your variables aren't INCing properly, like Solegoose said. Basically, with meta spites you have to go up by 4, one for each sprite, and for weapons, you go up by 1. IF you forget to do both X and Y, you'll get some creative errors. Sometimes it's easier to write a routine for the meta sprites and one for the basic sprites. At least until you get it working and see how they are similar/different. Memory is cheap, as the man says.
Or, just say the hell with it and burn 3 extra sprites for the weapons. That way everything has a 16x16 sprite reserved for it and you just don't use the extras or leave them blank.
I'd imagine you're even more confused now. Haha.
-------------------------
This is my shiny thing, and if you try to take it off me, I may have to eat you.
Check out my dev blog.