The main loop for objects' behavior is around 1F:E434. The address of each object's AI script is at $42A,X (low byte) & $413,X (high byte).
I'm guessing this is like Gargoyle's Quest 2, where when an object advances to a different phase of its AI script this address gets overwritten w/ a new address.
Object slot #0 is Mega Man, Object slots #1-3 are his shots
Any new object spawns appear in the highest available spot.
LDA #$16
STA $008F ; current slot
LDX $008F
LDA $03A0,X ; ID of object
BEQ $E47A ; if slot if empty
LDA $0441,X
TAY
JSR $CBC0
LDA $042A,X
STA $0008
LDA $0413,X
STA $0009
JSR $E482 ; runs function @ $0008
The aforementioned function seems to be called from within the script for the weapon energy object(s).
If there are any other object/enemy scripts that make use of $0001, and they're in the object slot 1 above the one containing the weapon energy, it should carry over if we collect the energy on the same frame.
Edit: This is where the game gets the initial function address for each object:
1D:81F0 - Create object type (Y) in slot (X)
TYA
STA $03A0,X - Object ID
LDA $82C9,Y - Use ID to load address from table
STA $042A,X - Set as initial address
LDA $83C9,X
STA $0413,X
LDA $84C9,X
STA $0441,X - ?
Starting address for a small weapon energy (ID 49) is 1D:944B