In bank 3 there are a bunch of 16×16 pointer tables corresponding to each map. The one for the bank 9 map starts at 0x0C2E0 and is 0x200 bytes long. The one for bank A's map starts at 0xC4E0, and so on and so forth.
Each pointer points to the enemy list data for the corresponding screen of the level bank. The format for the list goes like this:
An enemy number of 0xFF signals the end of enemies for the given screen.
Those last three bytes should pretty much be self-explanatory. However, the enemy number is a bit of a weird. Basically, the game uses it to determine whether an enemy has been spawned or defeated or whatever. It gets cleaned up whenever you do a room transition. Thus, you can give an enemy whatever number you want, as long as two enemies in the same room do not share numbers (well, not unless you want to do something weird).
Enemy numbers in the range of 0x40-0x7F are used for items and such. If you have a missle tank or a metroid or an enemy or a congressman that you don't want to respawn after collecting or defeating it, give it an number in that range because the game saves the status of these objects. Also, since it saves these objects on a per-map basis, you can have energy tanks with numbers of 0x42 in maps A and B without being considered the same thing. (A corollary to this is that “duplicate” items need to be on the same map to work properly.)
Here is a list of every enemy index that can be used to spawn an enemy:
|$19||Gawron spawner A|
|$1A||Gawron spawner B|
|$3C||Yumee spawner A|
|$3D||Yumee spawner B|
|$6D||Metroid event musical stinger|
|$80||Plasma beam orb|
|$82||Ice beam orb|
|$84||Wave beam orb|
|$86||Spazer beam orb|
|$8A||Screw attack orb|
|$8C||Varia suit orb|
|$8E||Hi-jump boots orb|
|$90||Space jump orb|
|$92||Spider ball orb|
|$94||Spring ball orb|
|$96||Energy tank orb|
|$98||Missile tank orb|
|$A0||Alpha metroid (hatching variant)|
|$D0||Flitt (vanishing type)|
|$D1||Flitt (moving type)|
|$D2||Stalagtite (unused, intangible)|
|$DB||Baby metroid egg preview (intangible)|
This list is based off the enemies spreadsheet from the disassembly. Note that there are dozens of other “sprites” that could be spawned in, but without any AI associated with them they just sit there menacingly (or decoratively) with their hitboxes and graphics, but without moving or animating (the vanilla game does this once with the preview of the metroid egg).
Please note that the Queen is not an enemy in a normal sense, and can only be spawned in with a dedicated screen transition.