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.)
0x04 - Skreek spawner 0x09 - Drivel 0x12 - Yumbo 0x1b - Chute Leech 0x30 - vertical(?) moheek 0x31 - horizontal(?) moheek 0x4a - Wallfire 0x65 - Septogg 0x6a - Halzyn 0x80 - Plasma Beam in Orb 0x81 - Plasma Beam 0x82 - Ice Beam in Orb 0x83 - Ice Beam 0x84 - Wave Beam in Orb 0x85 - Wave Beam 0x86 - Spazer in Orb 0x87 - Spazer 0x88 - Morph Ball Bombs in Orb 0x89 - Morph Ball bombs 0x8A - Screw Attack in Orb 0x8B - Screw Attack 0x8C - Varia Suit in Orb 0x8D - Varia Suit 0x8E - High Jump in Orb 0x8F - High Jump 0x90 - Space Jump in Orb 0x91 - Space Jump 0x92 - Spider Ball in Orb 0x93 - Spider Ball 0x94 - Spring Ball in Orb 0x95 - Spring Ball 0x96 - Energy Tank in Orb 0x97 - Energy Tank 0x98 - Missile Tank in Orb 0x99 - Missile Tank 0x9A - Blob Thrower 0x9B - Energy Restore Orb 0x9C - Arachnus 0x9D - Missile Restore 0x9E - ? 0x9F - ? 0xA0 - Alpha Metroid, pre shed 0xA1 - Empty 0xA2 - Metroid Egg 0xA3 - Gamma Metroid 0xA4 - Alpha Metroid, post shed 0xA5 - Empty 0xA6 - Metroid Egg Clone 0xA7 - Empty 0xA8 - Empty 0xA9 - Empty 0xAA - Empty 0xAB - Empty 0xAC - Empty 0xAD - Zeta Metroid, pre shed 0xAE - Empty 0xAF - Empty 0xB0 - Empty 0xB1 - Empty 0xB2 - Empty 0xB3 - Omega Metroid 0xB4 - Empty 0xB5 - Empty 0xB6 - Empty 0xB7 - Empty 0xB8 - Empty 0xB9 - Empty 0xBA - Empty 0xBB - Empty 0xBC - Empty 0xBD - Empty 0xBE - something that hurts you (takes 9 health) 0xBF - Empty 0xC0 - Empty 0xC1 - Empty 0xC2 - Empty 0xC3 - Empty 0xC4 - Empty 0xC5 - Empty 0xC6 - Empty 0xC7 - something that hurts you (takes 9 health) 0xC8 - ^ 0xC9 - ^ 0xCA - ^ 0xCB - ^ 0xCC - ^ 0xCE - ^ 0xCD - ^ 0xCE - Larva Metroid 0xCF - Larva Metroid, Immobile & Unkillable 0xD0 - Flitt 0xD1 - Meboid(?) 0xD2 - ? 0xD3 - Gravitt(?) 0xD4 - Gravitt(?), Immobile 0xD5 - Gravitt(???), Immobile 0xD6 - Gravitt(??????), Immobile 0xD7 - Gravitt(?????????), Immobile 0xD8 - Gullugg 0xD9 - Gullugg, immobile 0xDA - ? 0xDB - Intangible Metroid Egg 0xDC - Empty 0xDD - ? 0xDE - Empty 0xDF - ? 0xF0 - ?(does 20 damage 0XF1 - ? 0XF2 - ? 0XF3 - ? 0XF4 - ? 0XF5 - ? 0XF6 - ? 0XF7 - ? 0XF8 - ? 0XF9 - ? 0XFA - ? 0XFB - ? 0XFC - ? 0XFD - ? 0XFE - ? 0XFF - ?