External calls { ; Bank 1 { $1:493E: Update status bar $0154: V-blank interrupt handler $1:4A2B: Handle rolling energy and missile counters $04DF: Game mode 4: in-game $1:4AFC: Add two digits to OAM stack $2CED: Game mode 8: paused $1:4B09: Add digit to OAM stack $2CED: Game mode 8: paused $1:4B2C: Draw blinking Metroid in HUD $04DF: Game mode 4: in-game $27BA $27E3 $2CED: Game mode 8: paused $2F86: Game mode 6: dying $38B9: Handle item pickup - [item pickup] = 7 (varia) $3A01: $1:4BB3: Clear deleted OAM $04DF: Game mode 4: in-game $239C: Handle screen transition command set $27BA: $27E3: $2C79: Handle pausing $2CED: Game mode 8: paused $2F86: Game mode 6: dying $38B9: Handle item pickup - [item pickup] = 7 (varia) $3A01: $3E3F: Game mode 0: boot $1:4BCE: Clear OAM $239C: Handle screen transition command set $36B0: Game mode 5: dead $3ACE: Game mode Ah $3B43: Game mode 10h: game cleared $1:4BD9: Draw Samus $04DF: Game mode 4: in-game $27BA: $27E3: $2F86: Game mode 6: dying $38B9: Handle item pickup - [item pickup] = 7 (varia) $3A01: $1:4BF3: Draw Samus, no invisible frames $2FA2: Start death sequence $1:500D: Projectile handler $04DF: Game mode 4: in-game $1:5300: Projectile GFX handler $04DF: Game mode 4: in-game $1:549D: Bomb handler $04DF: Game mode 4: in-game $1:5692: Handle respawning blocks $04DF: Game mode 4: in-game $1:56E9 $3:7D97: $1:57F2: Handle window display, game saving, metroid earthquake, low heath beep, fade in, and Baby Metroid cry $04DF: Game mode 4: in-game $1:5A11: Draw enemies $2:4000: Handle enemies $1:70BA $3:6BB2: $1:71CB $3:6BB2: $1:723B $3:6F60: $3:7631: $1:7319 $3:6F60: $3:7631: $1:73F7 $5:4118: Title $5:5603: $5:59B8: $5:59C7: $5:59D6: $5:59F1: $5:5A07: $5:5A0F: $5:5A17: $5:5A1F: $5:5A27: $5:5A2F: $5:5A37: $5:5A3F: $5:5A55: $5:5A6B: $5:5A7A: $5:5A90: $5:5AA6: $5:5ABC: $5:5AD2: $5:5AE8: $5:5AFE: $1:79EF: Handle earthquake $2366: Calculate scroll offsets $1:7AB9 $1:4E33: Load from save } ; Bank 2 { $2:4000: Handle enemies $05DE: Handle enemies $3A01 $2:418C $03B5: Game mode 2: loading save } ; Bank 3 { $3:4000 $2:409E: $3:42B4: hl = pointer to end of enemy data $2:4F97: $2:52A6: $2:59C7: $2:5AE2: $2:5F67: $2:6145: $2:62B4: $2:638C: $2:6540: $2:6F60: $2:7276: $2:75AC: $2:7922: $3:6AE7 $2:4239: $2:4345: $2:452E: $2:4DD3: $2:536F: $2:565F: $2:5692: $2:56BF: $2:5732: $2:59A6: $2:5BD4: $2:5F67: $2:62B4: $2:638C: $2:6540: $2:6622: $2:6A14: $2:6B83: $2:6F60: $2:71DA: $2:7276: $2:7631: $3:6B44 $2:7276: $2:7631: $2:7A4F: $2:7BE5: $3:6BD2 $2:4000: Handle enemies $3:6D4A $2887: Screen command - set Samus position $3:6E36 $05DE: Handle enemies $2F86: Game mode 6: dying $3:7C7F: LCD interrupt handler $0048: LCD interrupt point $3:7CF0: Handle displaying Metroid Queen's head $0154: V-blank interrupt handler } ; Bank 4 { $4:4000: Handle audio $01FB: Boot $2C5E: Wait a frame $36B0: Game mode 5: dead $371B: Game mode 7: game over $3A01: $3B2F: Game mode Fh $4:4003: Clear sound effects and song $2FA2: Start death sequence $3ACE: Game mode Ah $3B43: Game mode 10h: game cleared $3E3F: Game mode 0: boot $4:4006: Initialise sound $01FB: Boot } ; Bank 5 { $5:408F: Load title screen $3E3F: Game mode 0: boot $5:4118 $3E59: Game mode 1: title $8:7EBC: Check if killed target number of Metroids $3:6BB2: $3:6F60: $3:7276: $3:7631: $3:7A4F: } } External call functions { $4:4000 $2384: Handle audio $4:4003 $2390: Clear sound effects and song $4:4006 $2378: Initialise sound $8:7EBC: Check if killed target number of Metroids $3C92 $3:6AE7 $3CA6 $3:6B44 $3CBA $1:56E9 $3CCE $1:7ADF: Game mode 9: save to SRAM $3CE2 $1:79EF: Handle earthquake $3CED $1:73F7 $3CF8 $1:70BA $3D0C $1:723B $3D20 $1:71CB $3D34 $1:7319 $3D48 $3:7C7F: LCD interrupt handler $3D5C $1:57F2: Handle window display, game saving, metroid earthquake, low heath beep, fade in, and Baby Metroid cry $3D6D $1:4A2B: Handle rolling energy and missile counters $3D78 $1:5692: Handle respawning blocks $3D83 $1:500D: Projectile handler $3D8E $1:549D: Bomb handler $3D99 $1:5300: Projectile GFX handler $3DA4 $1:4E8A: Handle firing a projectile $3DAF $3:6BD2 $3DBA $1:5A11: Draw enemies $3DCE $3:4000 $3DE2 $3:42B4: hl = pointer to end of enemy data $3DF6 $1:7AB9 $3E0A $5:403D $3E1E $5:587F: Game mode 12h: Reached gunship $3E29 $5:55A3: Game mode 13h: Credits $3E34 $1:4E1C: Start new game $3E67 $1:4E33: Load from save $3E72 $1:4B62: Load sprite set $3E7D $1:4BB3: Clear deleted OAM $3E88 $1:4BD9: Draw Samus $3E93 $1:4B2C: Drawing blinking Metroid in HUD $3E9E $1:4B09 $3EA9 $1:4AFC $3EB4 $1:4BF3: Draw Samus, no invisible frames $3EBF $1:4BCE: Clear OAM $3ECA } Calls to external call functions { $3D5C: $0048: LCD interrupt point $3D6D: $04DF: Game mode 4: in-game $3D8E: $04DF: Game mode 4: in-game $3D99: $04DF: Game mode 4: in-game $3E93: $04DF: Game mode 4: in-game $3DA4: $04DF: Game mode 4: in-game $3D83: $04DF: Game mode 4: in-game $3D78: $04DF: Game mode 4: in-game $3E9E: Drawing blinking Metroid in HUD $04DF: Game mode 4: in-game $2CED: Game mode 8: paused $2F86: Game mode 6: dying $3A01: $3E88: Clear deleted OAM $04DF: Game mode 4: in-game $239C: Handle screen transition command set $27BA: $27E3: $2C79: Handle pausing $2CED: Game mode 8: paused $2F86: Game mode 6: dying $38B9: Handle item pickup - [item pickup] = 7 (varia) $3A01: $3E3F: Game mode 0: boot $3D6D: $04DF: Game mode 4: in-game $3CED: $2366: Calculate scroll offsets $3ECA: Clear OAM $239C: Handle screen transition command set $36B0: Game mode 5: dead $3ACE: Game mode Ah $3B43: Game mode 10h: game cleared $3E93: Draw Samus $27BA: $27E3: $2F86: Game mode 6: dying $38B9: Handle item pickup - [item pickup] = 7 (varia) $3A01: $3EBF: $2FA2: Start death sequence $3E0A: $1:4E33: Load from save $3DBA: $2:4000: Handle enemies $3DCE: $2:4000: Handle enemies $3DE2: $3:409E: $3CA6: $3:4239: $3:4345: $3:452E: $3:4DD3: $3:536F: $3:565F: $3:5692: $3:56BF: $3:5732: $3:59A6: $3:5BD4: $3:5F67: $3:62B4: $3:638C: $3:6540: $3:6622: $3:6A14: $3:6B83: $3:6F60: $3:71DA: $3:7276: $3:7631: $3DF6: $3:4F97: $3:52A6: $3:59C7: $3:5AE2: $3:5F67: $3:6145: $3:62B4: $3:638C: $3:6540: $3:6F60: $3:7276: $3:75AC: $3:7922: $3D0C: $3:6BB2: $3D34: $3:6BB2: $3C92: $3:6BB2: $3:6F60: $3:7276: $3:7631: $3:7A4F: $3D20: $3:6F60: $3:7631: $3D48: $3:6F60: $3:7631: $3CBA: $3:7276: $3:7631: $3:7A4F: $3:7BE5: $3CCE: $3:7D97: $3CF8: $5:4118: Title $5:5603: $5:59B8: $5:59C7: $5:59D6: $5:59F1: $5:5A07: $5:5A0F: $5:5A17: $5:5A1F: $5:5A27: $5:5A2F: $5:5A37: $5:5A3F: $5:5A55: $5:5A6B: $5:5A7A: $5:5A90: $5:5AA6: $5:5ABC: $5:5AD2: $5:5AE8: $5:5AFE: }