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

A shield takes a hit in the character’s place. In Sonic the Hedgehog and Sonic 2 it saves the rings and is gone1,2. In Sonic 3 & Knuckles the fire, lightning, and bubble shields also make the player immune to hazards of their element3, and a second press during a jump uses one as a move4. Without a shield the same press makes the insta-shield5.

Games

GameYearHowNote
Sonic the Hedgehog1991One hitone shield, which takes a hit in place of the rings
Sonic the Hedgehog 21992One hitone shield, which takes a hit in place of the rings
Sonic 3 & Knuckles1994Elementalthe Flame, Lightning, and Water shields guard against their hazards and give Sonic an air move
Every claim about this mechanic, by game (8)
Sonic the Hedgehog 1991Sonic 1's shield takes one hit in place of the rings; HurtSonic skips the ring drop, clears the shield, and knocks Sonic back as usual.Code
Sonic the Hedgehog 2 1992Sonic 2's one shield takes a hit in place of the rings; HurtCharacter skips the ring drop, clears the shield, and knocks Sonic back as usual.Code
Sonic 3 & Knuckles 1994A hit with any shield costs the shield, not the rings; HurtCharacter clears the shield bit and all three element bits together (`andi.bCode
An elemental shield makes the player immune to each object whose shield_reaction byte names that element, and any shield deflects objects flagged for it at 8 px/frame.Code
A second press during a jump, once the rise is no faster than 4 px/frame (2 underwater), uses the shield: fire dashes at 8 px/frame and stops the fall, lightning jumps again at -$580, and bubble stops dead and drops at 8 px/frame, then bounces at 7.5 px/frame on landing.Code
With no shield, the press gives Sonic the insta-shield, which while active makes him invincible and widens his hit box to 48 × 48 px.Code
Sonic 3 alone (s3.asm) has the same shield moves and insta-shield; its transformation check asks only for the seven Chaos Emeralds and 50 rings.Code
A jump press during a jump, once the rise is no faster than 4 px/frame (2 underwater) and before any shield move or insta-shield this jump, clears the roll-jump flag before the shield checks, so a roll jump gets its steering back. With no shield, not invincible, not Super, and short of turning Super (50 rings, Update_HUD_timer nonzero, and seven Super Emeralds, or seven Chaos Emeralds with Emeralds_converted_flag clear), the insta-shield follows and doesn't change his position or speed; with an elemental shield its move follows (shield-moves). Later presses do nothing until he lands.Code

References

  1. ^ abSonic 1's shield takes one hit in place of the rings; HurtSonic skips the ring drop, clears the shield, and knocks Sonic back as usual.Codesonicretro/s1disasm
    How we know
    376		tst.b	(v_shield).w				; does Sonic have a shield?
    377		bne.s	.bounceSonicAway			; if yes, branch
    ⋮
    389		move.b	#0,(v_shield).w				; remove a potential shield
    
    _incObj/Sonic ReactToItem.asm lines 376–389 at 15dfa3a · 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

  2. ^ abSonic 2's one shield takes a hit in place of the rings; HurtCharacter skips the ring drop, clears the shield, and knocks Sonic back as usual.Codesonicretro/s2disasm
    How we know
    85658	btst	#status_secondary.shield,status_secondary(a0)
    85659	bne.s	Hurt_Shield
    ⋮
    85663	bne.s	Hurt_Shield
    ⋮
    85670Hurt_Shield:
    85671	bclr	#status_secondary.shield,status_secondary(a0) ; remove shield
    
    s2.asm lines 85658–85678 at 4ef457c · 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. ^ abAn elemental shield makes the player immune to each object whose shield_reaction byte names that element, and any shield deflects objects flagged for it at 8 px/frame.Codesonicretro/skdisasm
    How we know
    21043		and.b	shield_reaction(a1),d0			; Does one of the player's shields grant immunity to this object??
    ⋮
    21066		andi.b	#1<<3,d0					; Should the object be bounced away by a shield?
    ⋮
    21076		muls.w	#-$800,d1
    
    sonic3k.asm lines 21039–21083 at 73de97c · 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. ^ abA second press during a jump, once the rise is no faster than 4 px/frame (2 underwater), uses the shield: fire dashes at 8 px/frame and stops the fall, lightning jumps again at -$580, and bubble stops dead and drops at 8 px/frame, then bounces at 7.5 px/frame on landing.Codesonicretro/skdisasmrevised
    How we know
    23400Sonic_JumpHeight:
    23401		tst.b	jumping(a0)	; is Sonic jumping?
    23402		beq.s	Sonic_UpVelCap	; if not, branch
    ⋮
    23411		ble.w	Sonic_ShieldMoves	; if not, branch
    
    sonic3k.asm lines 23400–23411 at 73de97c · upstream ↗
    23453		move.w	#$800,d0
    ⋮
    23461		move.w	#0,y_vel(a0)		; kill y-velocity
    ⋮
    23473		move.w	#-$580,y_vel(a0)	; bounce Sonic up, creating the double jump effect
    ⋮
    23486		move.w	#$800,y_vel(a0)		; force Sonic down
    
    sonic3k.asm lines 23446–23488 at 73de97c · upstream ↗
    24436BubbleShield_Bounce:
    24437		movem.l	d1-d2,-(sp)
    24438		move.w	#$780,d2
    24439		btst	#Status_Underwater,status(a0)
    24440		beq.s	loc_12246
    24441		move.w	#$400,d2
    
    sonic3k.asm lines 24436–24441 at 73de97c · upstream ↗

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

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

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

    In the claim ledger

  5. ^ abWith no shield, the press gives Sonic the insta-shield, which while active makes him invincible and widens his hit box to 48 × 48 px.Codesonicretro/skdisasm
    How we know
    23509		btst	#Status_Shield,status_secondary(a0)	; does Sonic have an S2 shield? (the elementals were already filtered out at this point)
    23510		bne.s	locret_11A14				; if yes, branch
    23511		move.b	#1,(Shield+anim).w
    23512		move.b	#1,double_jump_flag(a0)
    
    sonic3k.asm lines 23508–23514 at 73de97c · upstream ↗
    20656		cmpi.b	#1,double_jump_flag(a0)			; Is the Insta-Shield currently in its 'attacking' mode?
    ⋮
    20660		bset	#Status_Invincible,status_secondary(a0)	; Make the player invincible
    ⋮
    20665		move.w	#$30,d4					; Player's width
    20666		move.w	#$30,d5					; Player's height
    
    sonic3k.asm lines 20656–20666 at 73de97c · 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

  6. ^The Sonic 3 manual introduces three shields: the Flame Shield guards against fire and gives Sonic a mid-air dash, the Water Shield lets him breathe underwater and bounce, and the Lightning Shield draws rings to him, guards against electric attacks, and gives him a double jump.ManualSonic 3 US manual
    How we know
    Flame Shield - Protects Sonic and Tails from a fire attack. When this shield is activated, Sonic can perform a mid-air "Fireball Spin Dash" … Water Shield - Sonic and Tails can breathe underwater and bounce like a
    p. 12, Sonic Power-Ups · archived copy ↗
    Lightning Shield - When activated, Gold Rings will gravitate towards Sonic or Tails. This shield will also protect Sonic and Tails from electric attacks and energy ball attacks from Badniks. While this shield is active, Sonic can double jump in mid-air
    p. 13, Sonic Power-Ups (Continued) · archived copy ↗

    The quote matches our archived copy.

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

    In the claim ledger

  7. ^A hit with any shield costs the shield, not the rings; HurtCharacter clears the shield bit and all three element bits together (`andi.bCodesonicretro/skdisasm
    How we know
    21110		btst	#0,status_secondary(a0)
    21111		bne.s	loc_102DA
    ⋮
    21117		bne.s	loc_102DA
    ⋮
    21123loc_102DA:
    21124		andi.b	#$8E,status_secondary(a0)
    
    sonic3k.asm lines 21110–21124 at 73de97c · upstream ↗
    184Status_Shield       = 0
    185Status_Invincible   = 1
    186Status_SpeedShoes   = 2
    
    sonic3k.constants.asm lines 184–190 at 73de97c · 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

Sources

Code