Shields
A power-up that takes one hit in the character's place and, in later games, adds an element and a move.
On this page
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.
- One hitSonic the Hedgehog (1991). One shield, which takes a hit in place of the rings.1Sonic the Hedgehog 2 (1992). One shield, which takes a hit in place of the rings.2
- ElementalSonic 3 & Knuckles (1994). The Flame, Lightning, and Water shields guard against their hazards and give Sonic an air move.6,4,3,7,5
Games
| Game | Year | How | Note |
|---|---|---|---|
| Sonic the Hedgehog | 1991 | One hit | one shield, which takes a hit in place of the rings |
| Sonic the Hedgehog 2 | 1992 | One hit | one shield, which takes a hit in place of the rings |
| Sonic 3 & Knuckles | 1994 | Elemental | the Flame, Lightning, and Water shields guard against their hazards and give Sonic an air move |
Every claim about this mechanic, by game (8)
References
- ^ abSonic 1's shield takes one hit in place of the rings;
HurtSonicskips the ring drop, clears the shield, and knocks Sonic back as usual.Codesonicretro/s1disasmHow 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.
- ^ abSonic 2's one shield takes a hit in place of the rings;
HurtCharacterskips the ring drop, clears the shield, and knocks Sonic back as usual.Codesonicretro/s2disasmHow 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.
- ^ abAn elemental shield makes the player immune to each object whose
shield_reactionbyte names that element, and any shield deflects objects flagged for it at 8 px/frame.Codesonicretro/skdisasmHow 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.
- ^ 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/skdisasmrevisedHow 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.
- ^ 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.
- ^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.
- ^A hit with any shield costs the shield, not the rings;
HurtCharacterclears the shield bit and all three element bits together (`andi.bCodesonicretro/skdisasmHow 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.
Sources
Code
- Sonic Retro contributors. 2026. “s1disasm: Sonic the Hedgehog (16-bit) disassembly (sonicretro/s1disasm).” Commit 15dfa3a. sonicretro/s1disasm @ 15dfa3a · licence, all uses
- Sonic Retro contributors. 2026. “s2disasm: Sonic the Hedgehog 2 (16-bit) disassembly (sonicretro/s2disasm).” Commit 4ef457c. sonicretro/s2disasm @ 4ef457c · licence, all uses
- Sonic Retro contributors. 2026. “skdisasm: Sonic 3 & Knuckles disassembly (sonicretro/skdisasm).” Commit 73de97c. sonicretro/skdisasm @ 73de97c · licence, all uses