User Tools

Site Tools


return_of_samus:technical_information:enemy_data

Enemy Data

 MII Samus 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:

  1. Enemy Number
  2. Enemy Type
  3. X position (pixels)
  4. Y position (pixels)

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.)

All Enemy Types

Here is a list of every enemy index that can be used to spawn an enemy:

ID Enemy Type
$00 Tsumari A
$01 Tsumari B
$04 Skreek
$09 Drivel
$12 Small bugs
$14 Hornoad
$16 Senjoo
$19 Gawron spawner A
$1A Gawron spawner B
$1B Chute leech
$1E Autrack (flipped)
$1F Wallfire (flipped)
$20 Needler A
$21 Needler B
$28 Skorp (up)
$29 Skorp (down)
$2A Skorp (right)
$2B Skorp (left)
$2C Glow fly
$30 Moheek A
$31 Moheek B
$34 Rock Icicle
$3C Yumee spawner A
$3D Yumee spawner B
$40 Octroll
$41 Autrack
$46 Autoad
$4A Wallfire
$51 Gunzoo
$5C Autom
$63 Shirk
$65 Septogg
$68 Moto
$6A Halzyn
$6B Ramulken
$6D Metroid event musical stinger
$6E Proboscum (flipped)
$72 Proboscum
$75 Missile block
$76 Arachnus
$77 Arachnus
$78 Arachnus
$79 Arachnus
$7A Arachnus
$80 Plasma beam orb
$81 Plasma beam
$82 Ice beam orb
$83 Ice beam
$84 Wave beam orb
$85 Wave beam
$86 Spazer beam orb
$87 Spazer beam
$88 Bombs orb
$89 Bombs
$8A Screw attack orb
$8B Screw attack
$8C Varia suit orb
$8D Varia suit
$8E Hi-jump boots orb
$8F Hi-jump boots
$90 Space jump orb
$91 Space jump
$92 Spider ball orb
$93 Spider ball
$94 Spring ball orb
$95 Spring ball
$96 Energy tank orb
$97 Energy tank
$98 Missile tank orb
$99 Missile tank
$9A Blob thrower
$9B Energy refill
$9C Arachnus orb
$9D Missile refill
$A0 Alpha metroid (hatching variant)
$A3 Gamma metroid
$A4 Alpha metroid
$A6 Baby metroid
$AD Zeta metroid
$B3 Omega metroid
$CE Larval Metroid
$D0 Flitt (vanishing type)
$D1 Flitt (moving type)
$D2 Stalagtite (unused, intangible)
$D3 Gravitt
$D8 Gullugg
$DB Baby metroid egg preview (intangible)
$F8 Missile door

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).

TODO:

  1. Mark the “flipped” entries as left or right facing.
  2. Verify if $76-$7A can spawn a valid Arachnus.

Please note that the Queen is not an enemy in a normal sense, and can only be spawned in with a dedicated screen transition.

return_of_samus/technical_information/enemy_data.txt · Last modified: 2023/06/04 22:52 by rt-55j