This patch allows Mario to shoot Yoshi's Fireballs, similar to when you get that special secret item in DW:TLC. However, it has more abilities: first, it has a block flag, so you can restrict the fireball shooting in levels with tilemap incompatibilities; second, but not least, it has a cooldown timer. There's a distinction with the buttons: the X button is responsible for the Yoshi's Fireballs shooting by default.
To be assembled with asar, tested both with lorom and SA-1. Credit is greatly appreciated.
This is a nice idea for a patch but one big problem and multiple small issues led to its rejection.
The routine which spawns fireballs will break near subscreen boundaries. You take Mario's low Y position (LDA $96) and add 8 to it (CLC : ADC #$08) before storing it into the fireball's Y position. When storing the high Y position, however, you don't account for overflow that could've occurred during the addition. Thus, shooting a fireball when Mario is close to the top of the bottom subscreen will not work. This can be fixed by adding the carry flag (a lone ADC #$00 will suffice) into the player's high Y position before storing it into the sprite's high Y position.
Apart from that, there are multiple small complaints I have with the patch's code. These are not necessarily rejection reasons but it would be nice to fix as many of them as possible.
For starters, some of the checks in CheckFireHijack_Custom are not needed. $187A, the Yoshi flag, is checked at $00D087, right before your hijack runs. You also needn't check $13D4 since your code runs in the level game mode way after the game has already checked it.
Getting through all of these checks leads us to the spawning routine, which is rather suboptimal. You have three consecutive JSRs, each one of which runs a loop through all extended sprites. Not only does this mean you're always running three loops, even if an earlier one has failed to find any slots, but you're also looping through slots you've already checked. It'd be much more efficient to have one big outer loop which calls what is currently ShootYoshiFire_advance whenever it finds a free slot; of course, you'd also need $00 == 0 as an additional exit condition.
Inside the spawning routine, the part which sets the X speed of the fireball is rather questionable. I don't see why you're temporarily moving the positive speed into X - BNE works just as you would expect after an LDX, so you can just do LDX $76 to check the player's direction. You also don't need to preserve Y during the spawning routine, as none of the code surrounding your hijack relies on it.
There is an unused table called ShootYoshiFire_XOfflo. Also, you can replace the JSL/RTL for GetFireHijack with a JML/JML to save a couple of cycles. Speaking of saving cycles, the three NOPs at $0294C6 can be optimized to BRA $01 : NOP.
The patch is fully SA-1 compatible but it'd be nice if you properly supported FastROM, too, especially considering how many long jumps you have. Finally, the default "disable" flag is not the best option - it's not cleared on level load and it's cleared while flying with a cape. Both of those would make it harder to use for its intended purpose of disabling fireballs in a level which doesn't support them; of course, a feature to remap the fireballs to SP1/2 would be a better alternative, especially if they're meant to be unlockable, but it's not the purpose of the patch. Speaking of usability, it'd be great if you made it easier to change which buttons shoots fireballs (X or Y) and the sound effects. The screenshot's quality is also not the best, either, but I can make a better one for you if you want.