The first shooting enemy I find is the first boss, so here's my process for how I'd do this. I'm not doing all the legwork, just this one to help show people how to do it
In fceux, use cheat search and do equal when he shoots his first bullet and not equal when there's no bullets so we isolate the memory that determines if the bullet exists. Narrowed it down to 5 possibilities, and tried the first one, freezing $0307 to 0xff. It makes him not shoot. Now we turn off that cheat and open the debugger in fceux. Set a breakpoint for $307 on write. It'll pause when he shoots (click run if it pauses when a bullet disappears or some other time and wait for it to pause when he shoots specifically). The code we have is this:
07:FA04:99 00 03 STA $0300,Y @ $0307 = #$FF
You can see the registers have A:40 X:06 Y:07
It's about to put 0x40 in $307 and we want it to not do this so it stays 0xff (like we did with the cheat code version).
If you hover over the line it shows the real rom address at the bottom and we see that 07:fa04 is at 0x01fa14 in the rom. The bytes there are 99 00 03 (as shown above) and we want to change this to do absolutely nothing. The instruction that does nothing is NOP (no operation) and the code for it is 0xea. So at 0x01fa14 we put eaeaea.
Test it out.
OH NO! We removed ALL enemies. This is no good -- It was a general subroutine used to create stuff, so we want to tell it not to jump to this subroutine instead of completely removing it. Use the debugger and freeze it at the same spot but this time we do "step out" to get out of this subroutine. Now we have this:
00:BD28:20 F2 F9 JSR $F9F2
>00:BD2B:4C E5 BB JMP $BBE5
Since we just did a "step out" we look at the line just above the current one "00:BD28:20 F2 F9 JSR $F9F2". This is where it jumps to the subroutine we were in, so we get rid of this instead now.
The real rom address of 00:BD28 is 0x03d38 so we put eaeaea at 0x03d38.
Test it out.
Success! He doesn't shoot anymore.