Mechanic · health & lives · platform fighter
Blast zone
The bounds around a stage that a fighter is knocked out by crossing.
On this page
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
| Game | Year | How | Note |
|---|---|---|---|
| Super Smash Bros. | 1999 | Stage bounds | 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 |
Every claim about this mechanic, by game (1)
References
- ^ abIn the US version of Super Smash Bros.,
ftCommonDeadCheckInterruptCommon, called fromftMainProcPhysicsMap, checks the fighter's position against the stage's bounds in the ordermap_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 callsftCommonDeadUpdateScoreas 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 indamage_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 flaggedis_ignore_dead. A fighter flaggedis_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-rerevisedHow 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.
Sources
Code
- VetriTheRetri. 2026. “ssb-decomp-re: a decompilation of Super Smash Bros. (VetriTheRetri/ssb-decomp-re).” Commit 572a747. VetriTheRetri/ssb-decomp-re @ 572a747 · licence, all uses