On this page
  1. Related
  2. Games
  3. References
  4. Sources

Ammunition caps how often a weapon fires. A missile tank in Metroid adds 5 to Samus’s missile capacity1. Metroid II starts her with 30 missiles2, and each tank adds 10, up to 9993. Super Metroid splits missiles, super missiles, and power bombs into three pools, each with tanks of 54.

Metroid: Zero Mission keeps the three pools, with tanks of 5 missiles per tank (2 on Hard)5. Metroid Fusion has one missile count and one power bomb count, and the super, ice, and diffusion missiles all draw on the missile count6.

  • One poolMetroid (1986). Missiles only, 5 more capacity per missile tank.1Metroid II: Return of Samus (1991). 30 missiles at the start, 10 more per missile tank, up to 999.2,3
  • Separate countsSilent Hill (1999). Separate counts for handgun bullets, shotgun shells, and rifle shells; pickups give 15, 6, and 6, doubled at least on Easy.7
  • Several poolsSuper Metroid (1994). Missiles, super missiles, and power bombs, 5 per tank.4

Games

GameYearHowNote
Factorio2016gun turrets fire magazines of three grades
Metroid1986One poolmissiles only, 5 more capacity per missile tank
Metroid II: Return of Samus1991One pool30 missiles at the start, 10 more per missile tank, up to 999
Silent Hill1999Separate countsseparate counts for handgun bullets, shotgun shells, and rifle shells; pickups give 15, 6, and 6, doubled at least on Easy
Super Metroid1994Several poolsmissiles, super missiles, and power bombs, 5 per tank
Metroid Fusion2002Several poolsone missile count that every missile type shares, and power bombs; 5 and 2 per tank
Metroid: Zero Mission2004Several poolsmissiles, super missiles, and power bombs, 5, 2, and 2 per tank, or 2, 1, and 1 on Hard
Every claim about this mechanic, by game (7)
Metroid II: Return of Samus 1991A missile tank adds 10 to Samus's missile capacity and 10 to her missiles, each capped at 999.Code
Super Metroid 1994Missiles, super missiles, and power bombs are three separate pools, each with its own tank; each tank instruction adds its argument, 5, to that pool's maximum and its count.Code
Silent Hill 1999In the US build, Event_CommonItemTake gives 15 handgun bullets, 6 shotgun shells, or 6 rifle shells per ammunition pickup, times a multiplier of extraBulletAdjust + 1, which is at least 2 on Easy; healing pickups always give one item. Normal and Hard don't change the count. extraBulletAdjust is an Extra Options setting: the options screen allows 1 plus one step for each of the five low bits set in extraOptionsEnabled, so ×1 to ×6.Code
Metroid Fusion 2002Samus has one missile count and one power bomb count, each with a maximum. A missile tank adds 5 to both the missile count and its maximum, unless the maximum would pass 255; a power bomb tank adds 2 to both, up to 254. The missile types the downloads add (super, ice, and diffusion missiles, flags in weaponsStatus) draw on that one count. Zero Mission keeps separate counts for missiles, super missiles, and power bombs, and its missile tank also adds 5, or 2 on Hard.Code
Metroid: Zero Mission 2004Missiles, super missiles, and power bombs each have their own maximum and count, and each tank adds to both: 5 missiles, 2 super missiles, or 2 power bombs on Easy and Normal, and 2, 1, or 1 on Hard, from a start of 0 (mzm/start-energy). Missile tanks stop adding past 50 tanks' worth, 250 missiles, or 100 on Hard (computed). Metroid has missiles only, and its tank adds 5 to both the count and the capacity.Code
Factorio 2016A gun turret has 400 health and an 18-tile range and fires bullets every 6 ticks (10 shots a second) from magazines of 10 rounds. A round does 5 physical damage from a firearm magazine, 8 from piercing rounds and 24 from uranium rounds, so a turret on firearm magazines deals 50 damage a second before research bonuses and the target's resistances.Publisher
A flamethrower turret has 1400 health and sprays burning fluid from 6 to 30 tiles away; it burns crude oil, heavy oil (5% more damage) or light oil (10% more).Code

References

  1. ^ abA missile tank raises Samus's missile capacity by 5.Codenmikstas/metroid-disassembly · “Metroid (USA)”
    How we know
    4349LDBF7:* BEQ +               ;Branch if item is an energy tank.
    4350LDBF9:  LDA #$05            ;
    4351LDBFB:  JSR AddToMaxMissiles        ;($DD97)Increase missile capacity by 5.
    
    Source_Files/Bank07.asm lines 4349–4351 at 4270d57 · upstream ↗

    In the cartridge (“Metroid (USA)”): bank 7 $DBF7. We don't reproduce the bytes.

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  2. ^ abA new game starts with 99 units of energy, no energy tanks, and 30 of 30 missiles.Codealex-west/M2RoS
    How we know
    20    db $00       ; Samus' equipment
    ⋮
    23    dw $0099     ; Samus' health
    24    dw $0030     ; Samus' max missiles
    25    dw $0030     ; Samus' missiles
    
    SRC/data/initialSave.asm lines 20–25 at 031aea3 · upstream ↗
    9942pickup_missileTank: ;{
    9943    ; Add 10 to max missiles
    9944    ld a, [samusMaxMissilesLow]
    9945    add $10
    9946    daa
    
    SRC/bank_000.asm lines 9942–9946 at 031aea3 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  3. ^ abA missile tank adds 10 to Samus's missile capacity and 10 to her missiles, each capped at 999.Codealex-west/M2RoS
    How we know
    9942pickup_missileTank: ;{
    9943    ; Add 10 to max missiles
    9944    ld a, [samusMaxMissilesLow]
    9945    add $10
    9946    daa
    ⋮
    9950    daa
    ⋮
    9952    ; Clamp max missiles at 999
    ⋮
    9961    ; Add 10 to current missiles
    ⋮
    9963    add $10
    9964    daa
    ⋮
    9968    daa
    ⋮
    9970    ; Clamp current missiles to 999
    
    SRC/bank_000.asm lines 9942–9976 at 031aea3 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  4. ^ abMissiles, super missiles, and power bombs are three separate pools, each with its own tank; each tank instruction adds its argument, 5, to that pool's maximum and its count.CodeInsaneFirebat/sm_disassembly
    How we know
    1496Instruction_PLM_CollectAmmo_MissileTank:
    
    src/bank_84.asm lines 1496–1508 at 7af131e · upstream ↗
    1520Instruction_PLM_CollectAmmo_SuperMissileTank:
    
    src/bank_84.asm lines 1520–1528 at 7af131e · upstream ↗
    1544Instruction_PLM_CollectAmmo_PowerBombTank:
    
    src/bank_84.asm lines 1544–1552 at 7af131e · upstream ↗
    dw Instruction_PLM_CollectAmmo_MissileTank,$0005
    src/bank_84.asm#L15474 · upstream ↗
    dw Instruction_PLM_CollectAmmo_SuperMissileTank,$0005
    src/bank_84.asm#L15499 · upstream ↗
    dw Instruction_PLM_CollectAmmo_PowerBombTank,$0005
    src/bank_84.asm#L15524 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  5. ^Missiles, super missiles, and power bombs each have their own maximum and count, and each tank adds to both: 5 missiles, 2 super missiles, or 2 power bombs on Easy and Normal, and 2, 1, or 1 on Hard, from a start of 0 (mzm/start-energy). Missile tanks stop adding past 50 tanks' worth, 250 missiles, or 100 on Hard (computed). Metroid has missiles only, and its tank adds 5 to both the count and the capacity.Codemetroidret/mzm · nmikstas/metroid-disassembly
    How we know
    520                if (i == ITEM_TYPE_MISSILE)
    ⋮
    522                    if (sNumberOfTanksPerArea[MAX_AMOUNT_OF_AREAS - 1].missile * sTankIncreaseAmount[gDifficulty].missile + sStartingHealthAmmo.missile >= gEquipment.maxMissiles + sTankIncreaseAmount[gDifficulty].missile)
    ⋮
    524                        if (gEquipment.maxMissiles == 0)
    525                            isFirstTank = TRUE;
    ⋮
    527                        gEquipment.maxMissiles += sTankIncreaseAmount[gDifficulty].missile;
    528                        gEquipment.currentMissiles += sTankIncreaseAmount[gDifficulty].missile;
    
    src/bg_clip.c lines 520–528 at 2aae289 · upstream ↗
    539                else if (i == ITEM_TYPE_SUPER_MISSILE)
    ⋮
    546                        gEquipment.maxSuperMissiles += sTankIncreaseAmount[gDifficulty].superMissile;
    547                        gEquipment.currentSuperMissiles += sTankIncreaseAmount[gDifficulty].superMissile;
    ⋮
    550                else if (i == ITEM_TYPE_POWER_BOMB)
    ⋮
    557                        gEquipment.maxPowerBombs += sTankIncreaseAmount[gDifficulty].powerBomb;
    558                        gEquipment.currentPowerBombs += sTankIncreaseAmount[gDifficulty].powerBomb;
    
    src/bg_clip.c lines 539–558 at 2aae289 · upstream ↗
    52    [MAX_AMOUNT_OF_AREAS - 1] = {
    53        .energy = 12,
    54        .missile = 50,
    
    src/data/block_data.c lines 52–54 at 2aae289 · upstream ↗
    67const struct TankList sTankIncreaseAmount[DIFF_COUNT] = {
    68    [DIFF_EASY] = {
    69        .energy = 100,
    70        .missile = 5,
    71        .superMissile = 2,
    72        .powerBomb = 2
    ⋮
    74    [DIFF_NORMAL] = {
    75        .energy = 100,
    76        .missile = 5,
    77        .superMissile = 2,
    78        .powerBomb = 2
    ⋮
    80    [DIFF_HARD] = {
    ⋮
    
    src/data/block_data.c lines 67–84 at 2aae289 · upstream ↗
    4349LDBF7:* BEQ +               ;Branch if item is an energy tank.
    4350LDBF9:  LDA #$05            ;
    4351LDBFB:  JSR AddToMaxMissiles        ;($DD97)Increase missile capacity by 5.
    
    Source_Files/Bank07.asm lines 4349–4351 at 4270d57 · upstream ↗
    4635; Adds A to both MissileCount & MaxMissiles, storing the new count
    ⋮
    4641    ADC MissileCount
    ⋮
    4644*   STA MissileCount
    ⋮
    4647    ADC MaxMissiles
    ⋮
    4650*   STA MaxMissiles
    
    Source_Files/Bank07.asm lines 4635–4650 at 4270d57 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

  6. ^Samus has one missile count and one power bomb count, each with a maximum. A missile tank adds 5 to both the missile count and its maximum, unless the maximum would pass 255; a power bomb tank adds 2 to both, up to 254. The missile types the downloads add (super, ice, and diffusion missiles, flags in weaponsStatus) draw on that one count. Zero Mission keeps separate counts for missiles, super missiles, and power bombs, and its missile tank also adds 5, or 2 on Hard.Codemetroidret/mf · metroidret/mzm
    How we know
    258                // Apply tank
    259                if (i == TANK_TYPE_MISSILE)
    ⋮
    261                    if (gEquipment.maxMissiles + MISSILE_INCREASE_AMOUNT <= MAX_MISSILE_AMOUNT)
    ⋮
    263                        gEquipment.maxMissiles += MISSILE_INCREASE_AMOUNT;
    264                        gEquipment.currentMissiles += MISSILE_INCREASE_AMOUNT;
    ⋮
    275                else if (i == TANK_TYPE_POWER_BOMB)
    ⋮
    277                    if (gEquipment.maxPowerBombs + POWER_BOMB_INCREASE_AMOUNT <= MAX_POWER_BOMB_AMOUNT)
    ⋮
    279                        gEquipment.maxPowerBombs += POWER_BOMB_INCREASE_AMOUNT;
    280                        gEquipment.currentPowerBombs += POWER_BOMB_INCREASE_AMOUNT;
    
    src/bg_clip.c lines 258–282 at a6d6187 · upstream ↗
    241#ifndef REGION_JP
    242#define ENERGY_INCREASE_AMOUNT 100
    243#define MISSILE_INCREASE_AMOUNT 5
    244#define POWER_BOMB_INCREASE_AMOUNT 2
    ⋮
    248// Default 255
    249#define MAX_MISSILE_AMOUNT (51 * MISSILE_INCREASE_AMOUNT)
    250// Default 254
    251#define MAX_POWER_BOMB_AMOUNT (127 * POWER_BOMB_INCREASE_AMOUNT)
    
    include/constants/samus.h lines 241–251 at a6d6187 · upstream ↗
    42struct Equipment {
    43    u16 currentEnergy;
    44    u16 maxEnergy;
    45    u16 currentMissiles;
    46    u16 maxMissiles;
    47    u8 currentPowerBombs;
    48    u8 maxPowerBombs;
    49    u8 beamStatus;
    50    u8 weaponsStatus;
    
    include/structs/samus.h lines 42–50 at a6d6187 · upstream ↗
    273#define MBF_NONE 0
    274#define MBF_MISSILES (1 << 0)
    275#define MBF_SUPER_MISSILES (1 << 1)
    276#define MBF_ICE_MISSILES (1 << 2)
    277#define MBF_DIFFUSION_MISSILES (1 << 3)
    ⋮
    280#define MBF_ANY_MISSILE (MBF_MISSILES | MBF_SUPER_MISSILES | MBF_ICE_MISSILES | MBF_DIFFUSION_MISSILES)
    
    include/constants/samus.h lines 273–280 at a6d6187 · upstream ↗
    16struct Equipment {
    17    u16 maxEnergy;
    18    u16 maxMissiles;
    19    u8 maxSuperMissiles;
    20    u8 maxPowerBombs;
    21    u16 currentEnergy;
    22    u16 currentMissiles;
    23    u8 currentSuperMissiles;
    24    u8 currentPowerBombs;
    
    include/structs/samus.h lines 16–24 at 2aae289 · upstream ↗
    67const struct TankList sTankIncreaseAmount[DIFF_COUNT] = {
    68    [DIFF_EASY] = {
    69        .energy = 100,
    70        .missile = 5,
    ⋮
    74    [DIFF_NORMAL] = {
    75        .energy = 100,
    76        .missile = 5,
    ⋮
    80    [DIFF_HARD] = {
    81        .energy = 50,
    82        .missile = 2,
    
    src/data/block_data.c lines 67–84 at 2aae289 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

  7. ^In the US build, Event_CommonItemTake gives 15 handgun bullets, 6 shotgun shells, or 6 rifle shells per ammunition pickup, times a multiplier of extraBulletAdjust + 1, which is at least 2 on Easy; healing pickups always give one item. Normal and Hard don't change the count. extraBulletAdjust is an Extra Options setting: the options screen allows 1 plus one step for each of the five low bits set in extraOptionsEnabled, so ×1 to ×6.Codeshdecompilations/silent-hill-decomp
    How we know
    7#define DEFAULT_PICKUP_ITEM_COUNT      1
    8#define HANDGUN_AMMO_PICKUP_ITEM_COUNT 15
    9#define SHOTGUN_AMMO_PICKUP_ITEM_COUNT 6
    10#define RIFLE_AMMO_PICKUP_ITEM_COUNT   6
    
    include/bodyprog/items.h lines 7–10 at 405a621 · upstream ↗
    1104void Event_CommonItemTake(u32 pickupType, e_EventFlag eventFlagIdx) // 0x800879FC
    ⋮
    1106    #define EASY_DIFFICULTY_AMMO_COUNT_MULT_MIN 2
    ⋮
    1111    ammoCountMult = g_GameWork.config.extraBulletAdjust + 1;
    1112    if (g_SavegamePtr->gameDifficulty == GameDifficulty_Easy)
    ⋮
    1114        ammoCountMult = CLAMP(ammoCountMult, EASY_DIFFICULTY_AMMO_COUNT_MULT_MIN, ammoCountMult);
    ⋮
    1121            Event_ItemTake(InvItemId_FirstAidKit, DEFAULT_PICKUP_ITEM_COUNT, eventFlagIdx, MapMsgIdx_FirstAidSelect);
    ⋮
    1133            Event_ItemTake(InvItemId_HandgunBullets, ammoCountMult * HANDGUN_AMMO_PICKUP_ITEM_COUNT, eventFlagIdx, MapMsgIdx_HandgunAmmoSelect);
    ⋮
    1137            Event_ItemTake(InvItemId_ShotgunShells, ammoCountMult * SHOTGUN_AMMO_PICKUP_ITEM_COUNT, eventFlagIdx, MapMsgIdx_ShotgunAmmoSelect);
    ⋮
    1141            Event_ItemTake(InvItemId_RifleShells, ammoCountMult * RIFLE_AMMO_PICKUP_ITEM_COUNT, eventFlagIdx, MapMsgIdx_RifleAmmoSelect);
    
    src/bodyprog/events/events_util.c lines 1104–1142 at 405a621 · upstream ↗
    136            g_ExtraOptionsMenu_BulletMultMax     = 1;
    137            unlockedOptFlags                     = g_GameWork.config.extraOptionsEnabled;
    ⋮
    139            // Set available bullet multiplier.
    140            for (i = 0; i < 5; i++)
    ⋮
    142                if (unlockedOptFlags & (1 << i))
    ⋮
    144                    g_ExtraOptionsMenu_BulletMultMax++;
    
    src/screens/options/options.c lines 136–146 at 405a621 · upstream ↗
    460                    g_GameWork.config.extraBulletAdjust = g_GameWork.config.extraBulletAdjust + (g_ExtraOptionsMenu_BulletMultMax - 1);
    ⋮
    462                g_GameWork.config.extraBulletAdjust = g_GameWork.config.extraBulletAdjust % g_ExtraOptionsMenu_BulletMultMax;
    
    src/screens/options/options.c lines 460–462 at 405a621 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

  8. ^Touching an absorbable X parasite runs SamusAbsorbX, which refills by its color: a red X (SSC_RED_X_PARASITE) 500 energy, 100 missiles, and 10 power bombs; a green X 2 missiles; any other (yellow) X 10 energy. SpriteUtilRefillSamus adds missiles only once a missile flag is set and power bombs only once the power bomb flag is, and stops each at its maximum.Codemetroidret/mf
    How we know
    482void XParasiteGettingAbsorbedInit(void)
    ⋮
    497    SamusAbsorbX();
    
    src/x_parasite_util.c lines 482–497 at a6d6187 · upstream ↗
    433void SamusAbsorbX(void)
    ⋮
    444        case SSP_X_ABSORBABLE_BY_SAMUS:
    445            if (gCurrentSprite.samusCollision == SSC_RED_X_PARASITE)
    ⋮
    447                energy = 500;
    448                missiles = 100;
    449                powerBombs = 10;
    ⋮
    453            else if (gCurrentSprite.samusCollision == SSC_GREEN_X_PARASITE)
    ⋮
    455                energy = 0;
    456                missiles = 2;
    457                powerBombs = 0;
    ⋮
    461            else
    ⋮
    463                energy = 10;
    ⋮
    
    src/x_parasite_util.c lines 433–470 at a6d6187 · upstream ↗
    2686void SpriteUtilRefillSamus(u16 energy, u16 missiles, u16 powerBombs)
    ⋮
    2688    gEquipment.currentEnergy += energy;
    ⋮
    2690    if (gEquipment.currentEnergy > gEquipment.maxEnergy)
    2691        gEquipment.currentEnergy = gEquipment.maxEnergy;
    ⋮
    2693    if (gEquipment.weaponsStatus & MBF_ANY_MISSILE)
    ⋮
    2695        gEquipment.currentMissiles += missiles;
    ⋮
    2697        if (gEquipment.currentMissiles > gEquipment.maxMissiles)
    2698            gEquipment.currentMissiles = gEquipment.maxMissiles;
    ⋮
    2701    if (gEquipment.weaponsStatus & MBF_POWER_BOMBS)
    ⋮
    2703        gEquipment.currentPowerBombs += powerBombs;
    
    src/sprite_util.c lines 2686–2707 at a6d6187 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code