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

A blast zone is the boundary that knocks a fighter out. Super Smash Bros. checks a fighter against the stage’s four bounds. Crossing one knocks it out and credits the KO to the player who last hit it, and under the stock rule it costs a stock; the boss and fighters the code flags are exempt1.

  • Stage boundsSuper Smash Bros. (1999). Crossing any of the stage's four bounds knocks a fighter out, crediting the KO to the last attacker and, under the stock rule, taking a stock; the boss and some flagged fighters are exempt.1

Games

GameYearHowNote
Super Smash Bros.1999Stage boundscrossing any of the stage's four bounds knocks a fighter out, crediting the KO to the last attacker and, under the stock rule, taking a stock; the boss and some flagged fighters are exempt
Every claim about this mechanic, by game (1)

References

  1. ^ abIn the US version of Super Smash Bros., ftCommonDeadCheckInterruptCommon, called from ftMainProcPhysicsMap, checks the fighter's position against the stage's bounds in the order map_bound_bottom, map_bound_right, map_bound_left, map_bound_top, and crossing one starts a Dead status. Below the bottom or past a side, the status calls ftCommonDeadUpdateScore as it starts; above the top, it's DeadUpFall if a random number is below 1/6 and DeadUpStar otherwise, and both call it from their update routines. That routine adds a KO to the score of the player recorded in damage_player, or counts a self-destruct when there is none, and under the stock rule takes one stock. The check skips the boss and fighters flagged is_ignore_dead. A fighter flagged is_limit_map_bounds, ghost or not, is moved 500 units back inside the bound it crossed and its air velocity set to 0. Otherwise ghosts are skipped, and enemy teams in the 1P Game have their own team bounds.CodeVetriTheRetri/ssb-decomp-rerevised
    How we know
    1739void ftMainProcPhysicsMap(GObj *fighter_gobj)
    
    src/ft/ftmain.c line 1739 at 572a747 · upstream ↗
    1815    ftCommonDeadCheckInterruptCommon(fighter_gobj);
    
    src/ft/ftmain.c line 1815 at 572a747 · upstream ↗
    533sb32 ftCommonDeadCheckInterruptCommon(GObj *fighter_gobj)
    ⋮
    538    if (fp->fkind == nFTKindBoss)
    ⋮
    540        return FALSE;
    ⋮
    542    if (fp->is_ignore_dead)
    ⋮
    544        return FALSE;
    ⋮
    546    if (fp->is_limit_map_bounds)
    ⋮
    548        if (pos->y < gMPCollisionGroundData->map_bound_bottom)
    ⋮
    550            pos->y = gMPCollisionGroundData->map_bound_bottom + 500.0F;
    ⋮
    552            fp->physics.vel_air.x = 0.0F;
    553            fp->physics.vel_air.y = 0.0F;
    554            fp->physics.vel_air.z = 0.0F;
    
    src/ft/ftcommon/ftcommondead.c lines 533–554 at 572a747 · upstream ↗
    580        return FALSE;
    ⋮
    582    else if (!(fp->is_ghost))
    ⋮
    584        if ((gSCManagerBattleState->game_type == nSCBattleGameType1PGame) && (gSCManagerBattleState->players[fp->player].is_spgame_enemy != FALSE))
    ⋮
    586            if (pos->y < gMPCollisionGroundData->map_bound_team_bottom)
    
    src/ft/ftcommon/ftcommondead.c lines 580–586 at 572a747 · upstream ↗
    617        else if (pos->y < gMPCollisionGroundData->map_bound_bottom)
    ⋮
    619            ftCommonDeadDownSetStatus(fighter_gobj);
    ⋮
    621            return TRUE;
    ⋮
    623        else if (pos->x > gMPCollisionGroundData->map_bound_right)
    ⋮
    625            ftCommonDeadRightSetStatus(fighter_gobj);
    ⋮
    627            return TRUE;
    ⋮
    629        else if (pos->x < gMPCollisionGroundData->map_bound_left)
    ⋮
    631            ftCommonDeadLeftSetStatus(fighter_gobj);
    ⋮
    633            return TRUE;
    ⋮
    635        else if (pos->y > gMPCollisionGroundData->map_bound_top)
    ⋮
    637            if (syUtilsRandFloat() < (1.0F / 6.0F))
    ⋮
    639                ftCommonDeadUpFallSetStatus(fighter_gobj);
    ⋮
    
    src/ft/ftcommon/ftcommondead.c lines 617–643 at 572a747 · upstream ↗
    167void ftCommonDeadInitStatusVars(GObj *fighter_gobj)
    ⋮
    181    ftCommonDeadUpdateScore(fp);
    
    src/ft/ftcommon/ftcommondead.c lines 166–181 at 572a747 · upstream ↗
    194void ftCommonDeadDownSetStatus(GObj *fighter_gobj)
    ⋮
    203    ftCommonDeadInitStatusVars(fighter_gobj);
    
    src/ft/ftcommon/ftcommondead.c lines 194–203 at 572a747 · upstream ↗
    235void ftCommonDeadRightSetStatus(GObj *fighter_gobj)
    ⋮
    244    ftCommonDeadInitStatusVars(fighter_gobj);
    
    src/ft/ftcommon/ftcommondead.c lines 235–244 at 572a747 · upstream ↗
    277void ftCommonDeadLeftSetStatus(GObj *fighter_gobj)
    ⋮
    286    ftCommonDeadInitStatusVars(fighter_gobj);
    
    src/ft/ftcommon/ftcommondead.c lines 277–286 at 572a747 · upstream ↗
    318void ftCommonDeadUpStarProcUpdate(GObj *fighter_gobj)
    ⋮
    362            ftCommonDeadUpdateScore(fp);
    
    src/ft/ftcommon/ftcommondead.c lines 318–362 at 572a747 · upstream ↗
    412void ftCommonDeadUpFallProcUpdate(GObj *fighter_gobj)
    ⋮
    468            ftCommonDeadUpdateScore(fp);
    
    src/ft/ftcommon/ftcommondead.c lines 412–468 at 572a747 · upstream ↗
    48void ftCommonDeadUpdateScore(FTStruct *this_fp)
    ⋮
    59    if ((this_fp->damage_player != -1) && (this_fp->damage_player != GMCOMMON_PLAYERS_MAX))
    ⋮
    61        gSCManagerBattleState->players[this_fp->damage_player].score++;
    ⋮
    70    else gSCManagerBattleState->players[this_fp->player].total_selfdestructs++;
    ⋮
    72    if (gSCManagerBattleState->game_rules & SCBATTLE_GAMERULE_STOCK)
    ⋮
    74        this_fp->stock_count--;
    
    src/ft/ftcommon/ftcommondead.c lines 48–78 at 572a747 · upstream ↗

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

    Revised after a check by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code