User Tools

Site Tools


Table of Contents

Metroid Disassembly

Below is a link to a disassembly of each bank of the Metroid ROM. The disassembly was started by SnowBro, expanded upon greatly by Dirty McDingus, and may include additional comments added by MetConsters.

The code has been tested with some assemblers and shown to properly round-trip (i.e. produce a ROM image identical to the original). Each bank should be assembled separately and then put together in order to produce the final ROM image. The comments of the disassembly recommend using the assembler OPHIS.


  • Defines—This file simply declares the addresses of variables, data, and registers, as well as constants. It is included into every other file for assembly, and can be consulted when reading other ASM files or as a RAM map.
  • Title Page—Bank 0 includes the code and data used for the title screen, password input, game-over password display, and the game's ending.
  • Brinstar Page—Bank 1 includes the code and data used for Brinstar.
  • Norfair Page—Bank 2 includes the code and data used for Norfair.
  • Tourian Page—Bank 3 includes the code and data used for Tourian.
  • Kraid Page—Bank 4 includes the code and data used for Kraid's hideout.
  • Ridley Page—Bank 5 includes the code and data used for Ridley's hideout.
  • Graphics Page—Bank 6 consists almost entirely of GFX.
  • Game Engine Page—Bank 7 includes most of the game engine code.


  • In addition to the graphics bank, most other banks contain both used and duplicate GFX.
  • Each bank, except the game engine bank, contains a complete copy of the game's sound engine, including duplicate song data that is never used.
  • Game engine code and “global data” that could not fit in the game engine bank is duplicated in each level's bank.
metroid/disassembly.txt · Last modified: 2015/04/20 23:15 by gf_kennon