Tip: A common level trope to avoid is "item babysitting". This involves forcing the player to carry P-Switches, springboards, or other items all around the level. Usually, this doesn't end up being very fun or engaging, so use another level gimmick if you can.
This code allows you to shoot sprites by pressing the R button (Can be changed)
Also added an option to limit the amount of sprite onscreen at once before it stops shooting.
The main code works perfectly, but there's an issue in the FindSprites routine.
Setting the sprite you're spawning to custom makes it read $7FAB9E instead of $9E, but it still ignores $7FAB10, the extra bits. At least with PIXI, $7FAB9E is loaded with the sprite number even for vanilla sprites. This means that vanilla sprites which share their number with the custom sprite you're spawning count towards the limit, even though they shouldn't (since the whole point of FindSprites is to count how many instances of the target sprite already exist). For example, setting the code to spawn custom sprite $03 with a limit of 2 will let the player spawn only one if a yellow Beach Koopa is loaded.
Apart from this, a welcome addition would be adding user-friendly defines for the X speed and X offset, since changing them currently requires modifying the respective table. You should also (in the description) note down the purpose and intended position (alongside the code) of the button_address_single and the button_mask_single files since their names and lack of extension could be confusing. I also feel like the name of this is a bit of a misnomer because it's not an actual powerup and doesn't behave like one. Maybe try "Shoot Sprite with Button"?