Sonic the Hedgehog 2
Sega's 1992 platformer for the Mega Drive and Genesis, the sequel to Sonic the Hedgehog, which added Tails and the spin dash.
On this page
Sonic the Hedgehog 2 is Sega’s sequel to Sonic the Hedgehog for the Mega Drive, sold in North America as the Genesis. Sega’s list of its Mega Drive games gives the Japanese release as 21 November 19921. In the UK it launched on 24 November2, the day Sega’s American magazine had announced for North America as “2’s day”3, and Sega of America’s marketing team drafted promotions such as “Sonic 2sday”4. Dr. Robotnik is turning animals into robots to build the Death Egg, and Sonic has to find the seven Chaos Emeralds before him5, across eleven zones in the game’s level order6 (the manual counts 107). The sequel adds Tails, a two-tailed fox who follows Sonic and whom a second player can take over8, a split-screen race for two players9, and the spin dash, a charge from a crouch that launches Sonic rolling10.
Sega moved the sequel’s development to the newly founded Sega Technical Institute in the United States, led by Mark Cerny, and Yuji Naka was among the first game’s team who moved there11. The credits name Masaharu Yoshii as director, Naka as chief programmer, Hirokazu Yasuhara as game planner, and Yasushi Yamaguchi as character designer12.
Mean Machines Sega scored it 96%13 and wrote that none of the first game’s criticisms applied. Famicom Tsūshin’s four reviewers gave it 30/4014, one of them calling it a minor-change sequel. In the UK, The Independent reported, the 750,000 copies sent to shops went on the first day15. A 2006 survey for Game Developer put its sales at 6 million (2006)16 and called it the best-selling 2D Sonic game16. Game Informer’s 2017 retrospective says fans and critics came to count it among the best 2D platform games of the 1990s, and that it lifted Genesis sales until Sega nearly matched Nintendo’s market share17.
#How it plays
On flat ground Sonic moves as he does in Sonic 1, with five changes: the spin dash, a speed above the top kept while forward is held, a blink after standing still that swallows a few frames of input, a balance at a ledge that turns him only when he’s far over it, and a step down that he follows farther the faster he runs18,19,20,21. A model of these rules matches the cartridge, run frame by frame in an emulator22.
He takes off at Sonic 1’s speed, under the same gravity, and letting go of the button slows a fast rise to the same set speed23,24,25,26,27,28. Running, his speed builds and fades as slowly as in Sonic 1, to the same top speed29,30. On the ground, though, holding forward no longer pulls a faster Sonic back down to it31,19. In the air it still does, and there the d-pad works twice as hard as on the ground; near the top of a jump air drag slows him, as in Sonic 132,33,34,35. Once he has run off a ledge he can’t jump36.
The new move is the spin dash, which the manual calls the Super Dash Attack10. Crouching, a jump press starts it37. Each further press revs it harder, and the charge ebbs away between presses38. Letting go of Down sends him off rolling at 8 to 12 px a frame, by how hard it was revved, where his top running speed is 639,29, and he starts moving on the next frame40. Sonic 1 has no such move; standing, Sonic can only jump, walk, or curl up41.
Down while moving curls him into a roll, which only slows on flat ground42,43. Slopes push a running or rolling Sonic, a rolling one harder downhill, and leave a standing one alone44. Too slow on a wall or a ceiling, he drops off it and loses the d-pad for 30 frames45.
Rings are his health. Without a shield, a hit scatters up to 32 of them, and a hit with none kills him46; a shield takes one hit in their place47. A hit also throws him up and back48, and once he lands he blinks, safe, for 120 frames49. A hundred Rings earn an extra life and two hundred another, and the Rings Tails picks up count toward Sonic’s50. Touching a Star Post with 50 Rings or more opens the way to the Special Stage, a run down a chute that has to collect enough Rings at each checkpoint while dodging bombs, with a Chaos Emerald at the end51. In Sonic 1 the Rings held at an Act’s end led instead to a rotating maze52, a change Mean Machines Sega pointed out53.
#Two players
In a one-player game a second player can take over Tails with the second pad, and the options also offer Sonic alone or Tails alone8. The 2 Player VS mode is a split-screen race, Sonic on the top half and Tails on the bottom, through three zones and a Special Stage9: Emerald Hill, Casino Night, and Mystic Cave54. Yuji Naka said a two-player mode had been tried late in the making of Sonic 1, and he was glad the team carried it through in the sequel55.
As Time Extension reported his account in 2022, Tails’s designer, Yasushi Yamaguchi, said Naka wanted a character for beginners rather than a rival, so that he could play with his younger sister, and that Yamaguchi gave the fox a second tail when his first design wasn’t striking enough56.
#Making it
Mark Cerny, who founded the institute, said he had brought Naka and Yasuhara there by September 1991. Sega of America’s marketing first told him another Sonic was “much too soon”, then asked for it at once in November, so the team lost two months of an eleven-month schedule57. Masaharu Yoshii said he took over the institute in the year Cerny left, when he thought the game about half done, and he put the real start of the work at about the beginning of 199258. To make it quickly, he said, five to ten staff came from Japan, with about 20 people on the game at its peak, and because it was made in the United States, in-house, Sega of America took it as its own project59.
Accounts of the mix differ. Sega-16’s history of the institute says Cerny meant to pair Japanese veterans with inexperienced Americans, but late visas, language, culture, and working styles divided them, and the group split after Sonic 2 shipped. It quotes former artist Tim Skelly saying Naka would have been happier with an all-Japanese team60. Takashi Iizuka, head of Sonic Team in 2017, who didn’t work on the game, credited it to a perfect mix of American and Japanese staff61.
Near the end, Yoshii said, the game ran out of room. It had been planned for two 2-”mega” ROMs, and Sega’s president, Hayao Nakayama, approved a third rather than lose weeks cutting it down62. Sega’s own list gives the cartridge as 8M1. Al Nilsen of Sega of America’s marketing said the game could have been three times its size had everything made for it been kept63. Video Games Chronicle reported in 2023 that the Video Game History Foundation had partly rebuilt one cut stage, Cyber City Zone, from artist Tom Payne’s design documents and Yasuhara’s map, and had shown artist Brenda Cook’s portfolio with two more64. Asked who decided to launch the game around the world at once, Yoshii thought it was the Japanese side, but allowed that it might have been the American65.
#Reception
Famicom Tsūshin’s reviewers scored it 7, 8, 8, and 7. The first called it a minor-change sequel with nothing reformed; the second asked why the partner was so useless in one-player play but called both modes superb; the third found the split screen hard to see, recommended the Special Stage, and regretted that Tails wasn’t cute; the fourth found the screen small and the one-player game a little harder than the first14. Mean Machines Sega’s comment signed JAZ called it faster, slicker, bigger, and much tougher than the original, and another passage of the review called it nearly twice the first game’s size13. Chip and Jonathan Carter’s list of 1992’s best games in the Chicago Tribune put it second, saying that with more time to play it they might have had a three-way tie for first66.
In the week after the UK launch, The Independent reported, Gallup’s chart put Sonic 2 at 48 per cent of all software sales, and Dixons sold 14,000 Mega Drives15. Yoshii thought about a million copies had sold by the end of 1992, and that Sonic 2 got the Genesis itself selling67. Iizuka told Game Informer in 2017 that, though it hurt him as someone who worked on Sonic 3, he felt Sonic 2 was the best of the classic series61. A 2013 remaster for iOS, made with Sega’s blessing, added Hidden Palace Zone, which TouchArcade described as cut shortly before the 1992 release68, and Sega’s Sonic Origins collection of 2022 remastered the game again with three other Sonic games69.
#Across the series
Sonic 3 & Knuckles keeps Sonic 2’s spin dash, press for press70,38,39. Sonic 2 lets a fast Sonic keep his speed on the ground but caps it in the air31,32, and Sonic 3 & Knuckles lets him keep it in the air too71. Standing still, Sonic 2’s Sonic stays put on any slope44; in Sonic 3 & Knuckles a steep enough slope slides him72. Sonic 3 & Knuckles also curls him into a roll only from twice the speed Sonic 2 needs73,42.
Mechanics
| Mechanic | Kind | How |
|---|---|---|
| Jump | One speed | out of water every jump takes off at one speed |
| Gravity | One gravity | one pull of gravity whether the button is held or not, lighter underwater |
| Variable jump height | Release cap | letting go of the button slows a fast rise to a set speed |
| Running | Momentum | speed builds and fades slowly to a top speed, and on the ground holding forward lets him keep a speed above it |
| Air control | Momentum | the d-pad speeds him up either way in the air, twice as fast as on the ground, and near the top of a jump air drag slows him |
| Hitbox | Points and a box | points that touch the level, and a 16 px wide box that touches enemies |
| Invincibility frames | Frame timer | after a hit he blinks, safe, for a while counted from his landing |
| Knockback | Launch | a hit throws him up and back, under lighter gravity |
| Rolling | Slopes only | Down while moving curls Sonic up; on flat ground a roll only slows |
| Spin dash | Charged | crouching, jump presses rev up a roll that letting go of Down launches, faster the harder it was revved |
| Slope physics | Moving only | slopes push a running or rolling Sonic and leave a standing one alone; too slow on a wall or ceiling, he drops off |
| Rings as health | Drop all | without a shield, a hit scatters his rings, and a hit with none kills him |
| Shields | One hit | one shield, which takes a hit in place of the rings |
| Extra life | Other condition | 100 rings earn a life, and 200 another |
| Bonus stage | a checkpoint post touched with 50 rings opens a race down a chute for a Chaos Emerald | |
| Coyote time | None | a jump works only while he's on the ground |
Every claim about this game, by concept (83)
References
- ^ abSega's list of its Mega Drive software gives Sonic the Hedgehog 2's Japanese release as 21 November 1992, a cartridge listed as 8M at 6,800 yen; Famicom Tsūshin's cross review of that week gives the same day and price.PublisherSega Mega Drive software list · Famicom Tsūshin 206, review page
How we know
11月21日 … ソニック・ザ・ヘッジホッグ2
table under 1992年, row ソニック・ザ・ヘッジホッグ2 · archived copy ↗ メガドライブカートリッジ
p. 42, Mega Drive column · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^The Independent reported on 17 December 1992 that Sonic 2 had launched in the UK on 24 November, at £39.99 for the Mega Drive cartridge and £27.99 for the Game Gear's.MagazineThe Independent, 17 December 1992
How we know
In the week after Sonic 2's launch on 24 November … plus pounds 39.99 for the Sonic 2 game cartridge. … pounds 99.99 for the machinery and pounds 27.99 for the game.
article · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^ abSega Visions, Sega of America's magazine, announced in its November/December 1992 issue that Sonic 2 would reach shops on "2's day", 24 November 1992, for the Genesis and the Game Gear.MagazineSega Visions 10
How we know
On 2's day, November 24, 1 992 the most anxiously awaited sequel in history will arrive on a shelf near you. … will be zooming his way to your Genesis and Game Gear systems.
"Overheard at Sega" · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Game Informer's 2017 feature says Sega of America's marketing team, confident early, drafted promotions such as "Sonic 2sday" and a teaser poster reading "Are You Up 2 It?"; Al Nilsen, then its director of marketing, said Sega could have pulled the plug on Sonic 2sday up to May 1992.WebGame Informer, Sonic 2 behind the scenes · Sonic 2 US manual
How we know
the marketing team began drafting elaborate promotions like "Sonic 2sday" and a teaser poster with the slogan "Are You Up 2 It?"
on the launch · archived copy ↗ We could have pulled the plug on Sonic 2sday going up to May of '92
Al Nilsen · archived copy ↗ ARE YOU UP 2 IT!
page footers · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^In the North American manual's story, Dr. Robotnik is trapping animals and turning them into robots to build his ultimate weapon, the Death Egg, and Sonic has to find the 7 Chaos Emeralds before him.ManualSonic 2 US manual
How we know
So he’s trapping all the animals, turning them into robots, and forcing them to build his ultimate weapon, the Death Egg! … except the 7 Chaos Emeralds.
Find the Chaos Emeralds! · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^The table the end-of-Act results screen reads for the next Act chains the one-player game's eleven zones in twenty Acts, two Acts to a zone but three in Metropolis and one in each of the last three, from Emerald Hill to a last zone after Wing Fortress.Codesonicretro/s2disasm
How we know
LevelOrder: zoneOrderedTable 2,2 … zoneTableEntry.w emerald_hill_zone_act_2 … zoneTableEntry.w chemical_plant_zone_act_1 … zoneTableEntry.w metropolis_zone_act_3 … zoneTableEntry.w sky_chase_zone_act_1 … zoneTableEntry.w death_egg_zone_act_1 … zoneTableEntry.w hill_top_zone_act_2 … zoneTableEntry.w mystic_cave_zone_act_1 … zoneTableEntry.w oil_ocean_zone_act_2 … zoneTableEntry.w metropolis_zone_act_1 … zoneTableEntry.w mystic_cave_zone_act_2 … zoneTableEntry.w oil_ocean_zone_act_1 … zoneTableEntry.w casino_night_zone_act_2 … zoneTableEntry.w hill_top_zone_act_1 … zoneTableEntry.w chemical_plant_zone_act_2 … zoneTableEntry.w aquatic_ruin_zone_act_1 … zoneTableEntry.w -1 … zoneTableEntry.w aquatic_ruin_zone_act_2 … zoneTableEntry.w casino_night_zone_act_1 … zoneTableEntry.w wing_fortress_zone_act_1
s2.asm#L28086-L28138 · upstream ↗ 28031 lea LevelOrder(pc),a1 28032 tst.w (Two_player_mode).w 28033 beq.s loc_1428C 28034 lea LevelOrder_2P(pc),a1
s2.asm lines 28026–28035 at 4ef457c · upstream ↗ offsetTableEntry.w loc_14270
s2.asm#L27842 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Checked by a second AI model, 2026-10-26.
- ^The North American manual says that in a one-player game Sonic and Tails go through 10 Zones, with Dr. Robotnik attacking in a robot machine at the end of every Zone; its zone pages run from Emerald Hill to Wing Fortress.ManualSonic 2 US manual
How we know
“Tails” will blast through 10 Zones, grabbing
Getting Started · archived copy ↗ At the end of every Zone, … Dr. Robotnik attacks in a … WING FORTRESS ZONE
Zones · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^ abThe North American manual introduces Miles "Tails" Prower, a fox with two tails who has dreamed of being like Sonic since he was a baby and runs after him; in a one-player game a second player can move Tails with the second pad, and the options also offer Sonic alone or Tails alone.ManualSonic 2 US manual
How we know
Miles “Tails” Prower, the Fox, can’t sit still when … he’s dreamed of being like Sonic. He loves to run … because of his 2 special tails.
Find the Chaos Emeralds! · archived copy ↗ Player 2 can move “Tails” with Control Pad 2.
Getting Started · archived copy ↗ You can choose Sonic and “Tails,” Sonic alone or … “Tails” alone.
The Options Screen · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^ abThe North American manual's 2 Player VS competition is a split-screen race through 3 Zones and 1 Special Stage, Player 1 moving Sonic on the top half and Player 2 moving Tails through the same Zone on the bottom half, to see who wins in the most categories.ManualSonic 2 US manual
How we know
friend race through 3 Zones on a split screen, … and 1 Special Stage, to see who can win in the … Player 1 moves Sonic through … moves “Tails” through the same Zone on the
Getting Started · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^ abThe North American manual calls the spin dash the Super Dash Attack; holding still, the player presses Down and a button to rev up, presses again to rev faster, and lets go of Down to dash off.ManualSonic 2 US manual
How we know
SUPER DASH ATTACK! … Hold still, press the D-Button DOWN, and … Keep pressing Button A, B or C … Release the D-Button to dash off
Take Control! · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Game Informer's 2017 feature says Sega moved development of the sequel to the newly founded Sega Technical Institute in the United States, led by Mark Cerny, and that key members of the first game's team, such as Yuji Naka, moved there to work on it.WebGame Informer, Sonic 2 behind the scenes
How we know
Sega relocated development efforts for the sequel to the newly founded Sega Technical Institute in the U.S. Sega tapped Mark Cerny to lead the STI … Key members of the original development team, such as series creator Yuji Naka, moved stateside to work on the sequel
on development · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^The ending credits name Masaharu Yoshii as director, Yuji Naka as chief programmer, Hirokazu Yasuhara as game planner, and Yasushi Yamaguchi as character designer and chief artist, with Hayao Nakayama and Shinobu Toyoda as executive producers, Masato Nakamura of Dreams Come True as composer, and among the rest Bill Willis as an assistant programmer, Carol Ann Hanshaw for the special stage, and Craig Stitt, Brenda Ross, Jina Ishiwatari, Tom Payne, and Phenix Rie as zone artists.Codesonicretro/s2disasm
How we know
creditText 1,"EXECUTIVE" … creditText 0,"HAYAO NAKAYAMA" … creditText 0,"SHINOBU TOYODA" … creditText 1,"DIRECTOR" … creditText 0,"MASAHARU YOSHII" … creditText 1,"CHIEF PROGRAMMER" … creditText 0,"YUJI NAKA (YU2)" … creditText 1,"GAME PLANNER" … creditText 0,"HIROKAZU YASUHARA" … creditText 1,"CHARACTER DESIGN" … creditText 1,"CHIEF ARTIST" … creditText 0,"YASUSHI YAMAGUCHI"
s2.asm#L14581-L14596 · upstream ↗ creditText 1,"PROGRAMMERS" … creditText 0,"BILL WILLIS" … creditText 1,"SPECIALSTAGE" … creditText 0,"CAROL ANN HANSHAW" … creditText 1,"ZONE ARTISTS" … creditText 0,"CRAIG STITT" … creditText 0,"BRENDA ROSS" … creditText 0,"JINA ISHIWATARI" … creditText 0,"TOM PAYNE" … creditText 0,"PHENIX RIE"
s2.asm#L14598-L14612 · upstream ↗ creditText 0,"MASATO NAKAMURA" … creditText 0,"DREAMS COME TRUE)"
s2.asm#L14616-L14618 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Checked by a second AI model, 2026-10-26.
- ^ abMean Machines Sega scored the Mega Drive version 96% overall in November 1992 and gave it its Mega Game badge; the comment signed JAZ called it faster, slicker, bigger, and much tougher than the original, so that none of the first game's criticisms applied, and another passage of the review called it nearly twice the size of the original and in places at least twice as fast.MagazineMean Machines Sega 2, p. 63 · Mean Machines Sega 2
How we know
OVERALL 96
p. 63, score panel · archived copy ↗ JAZ
p. 63, comment · archived copy ↗ None of the criticisms of the original apply here: Sonic II is taster, slicker, more colourful, louder, bigger and much, much tougher than the original.
p. 63, comment · archived copy ↗ Apart from being nearly twice the size of the original, Sonk II has lots more features, in particular the two-player compe- tition game option. … Sonic is also much, much faster, At least twice as fast than before in some places.
pp. 60-61 · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^ abFamicom Tsūshin's four reviewers scored the Mega Drive version 7, 8, 8, and 7, 30 of 40, in November 1992. The first found it a minor-change sequel with no big reform, though fans who had waited for it might weep for joy; the second asked why the partner is so useless in one-player play but called both modes excellent; the third found the split screen hard to see, recommended the special stage, and regretted that Tails isn't cute; the fourth found the split screen small and the one-player game a little harder than the first.MagazineFamicom Tsūshin 206, review pagerevised
How we know
「マイナーチェンジ版だな、コレ」
p. 42, Mega Drive column, first comment (score 7) · archived copy ↗ ひとりプレーも対戦プレーも抜群のでき。
p. 42, Mega Drive column, second comment (score 8) · archived copy ↗ ふつうのステージは2分割画面が見づらいし遊びにくい。
p. 42, Mega Drive column, third comment (score 8) · archived copy ↗ ひとり用のほうは、前作よりちょっと難しくなったカンジ。
p. 42, Mega Drive column, fourth comment (score 7) · archived copy ↗ The quote matches our archived copy.
Revised after a check by a second AI model, 2026-10-26.
- ^ abThe Independent reported in December 1992 that in the week after the UK launch Gallup's software chart put Sonic 2 at 48 per cent of all software sales, that the 750,000 copies sent to UK retailers went on the first day, and that Dixons sold 14,000 Mega Drives; it gave projected US sales of 1 million by Christmas, the same as the UK's.MagazineThe Independent, 17 December 1992
How we know
the Gallup software chart reported that it was responsible for 48 per cent of all software sales. … The 750,000 copies of Sonic 2 sent to retailers went on the first day, and Dixons reported selling 14,000 Mega Drives. … Projected Sonic 2 sales for all of the US are only 1 million by Christmas - the same as for the UK.
article · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^ abDaniel Boutros's 2006 survey of best-selling platform games for Game Developer gives Sonic 2's worldwide sales as of June 2006 as 6 million and calls it the best-selling 2D Sonic game.WebGame Developer, platform-game sales
How we know
Sonic the Hedgehog 2 TOTAL WORLDWIDE SALES AS OF JUNE 2006 = 6 million … didn’t stop Sonic 2 becoming the best selling 2D Sonic game
Sonic the Hedgehog 2 entry · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Game Informer's 2017 feature says the game came to be considered one of the best 2D platform games of the 1990s by fans and critics, and that it lifted Genesis hardware sales until Sega was nearly Nintendo's equal in market share; it names the spin dash and the introduction of Tails among its lasting additions.WebGame Informer, Sonic 2 behind the scenes
How we know
The game ended up being considered one of the best 2D platforming games of the '90s by both fans and critics. It boosted sales of Genesis hardware to the point that it was nearly Nintendo's equal in terms of market share. … the game serves as the introduction of Tails, the series' most popular companion to this day. … spin dash move added substantially to players' gameplay options
on the game's reception · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Sonic 2's movement on flat ground is Sonic 1's with five changes: the spin dash, a ground speed above the top kept while forward is held, a blink after standing that skips up to five frames of input, balancing that turns him only when he's far over the edge, and a floor snap that reaches down his X speed's whole pixels plus 4 rather than 14 px.Codesonicretro/s2disasm · sonicretro/s1disasmrevised
How we know
36515 bsr.w Sonic_CheckSpindash ; check for spindash 36516 bsr.w Sonic_Jump ; check for jumping 36517 bsr.w Sonic_SlopeResist ; handle resistance from running up slopes 36518 bsr.w Sonic_Move ; handle Sonic's left/right movement 36519 bsr.w Sonic_Roll ; check for rolling
s2.asm lines 36515–36519 at 4ef457c · upstream ↗ 317Sonic_MdNormal: ; While Sonic is on the ground and not rolling 318 bsr.w Sonic_Jump ; check if we need to jump 319 bsr.w Sonic_SlopeResistWalk ; handle resistance from running up slopes 320 bsr.w Sonic_Move ; handle Sonic's left/right movement 321 bsr.w Sonic_Roll ; check if we need to roll 322 bsr.w Sonic_LevelBound ; make sure Sonic stays within level bounds and handle bottomless pits 323 jsr (SpeedToPos).l ; update Sonic's position based on his current velocities 324 bsr.w Sonic_AnglePos ; update Sonic's current angle as he walks along the floor 325 bsr.w Sonic_SlopeRepel ; handle Sonic detaching from walls if not fast enough
_incObj/01 Sonic.asm lines 317–325 at 15dfa3a · upstream ↗ 43135loc_1E31E: 43136 mvabs.b x_vel(a0),d0 43137 addq.b #4,d0 43138 cmpi.b #$E,d0 43139 blo.s + 43140 move.b #$E,d0 ⋮ 43142 cmp.b d0,d1 43143 bgt.s loc_1E33C
s2.asm lines 43135–43143 at 4ef457c · upstream ↗ 437.chkbalance: 438 jsr (ObjFloorDist).l ; get distance of Sonic to nearest floor 439 cmpi.w #12,d1 ; is he within 12px to floor? 440 blt.s Sonic_LookUp ; if yes, don't do balance animation (would look awkward) 441 cmpi.b #3,angleright(a0) ; is Sonic at the right edge of the floor? 442 bne.s .chkleftedge ; if not, check for the left edge ⋮ 444; loc_12F5A: 445.rightbalance: 446 bclr #status_xflip_bit,obStatus(a0) ; clear X-flip flag (make Sonic face right) 447 bra.s .balance ; do balance animation 448; =========================================================================== ⋮ 450; loc_12F62: ⋮
_incObj/01 Sonic.asm lines 437–457 at 15dfa3a · upstream ↗ 716 add.w d5,d0 ; add acceleration to current ground speed 717 cmp.w d6,d0 ; is new speed above max speed? 718 blt.s .nocap ; if not, branch 719 move.w d6,d0 ; cap Sonic's ground speed
_incObj/01 Sonic.asm lines 716–719 at 15dfa3a · upstream ↗ 99.above_floor: 100 cmpi.w #$E,d1 101 bgt.s .in_air ; branch if Sonic is > 14px above floor
_incObj/Sonic AnglePos.asm lines 99–101 at 15dfa3a · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
- ^ abIn the running game, on flat ground, holding forward above the top speed pulls Sonic's speed down to it in one frame, on the ground and in the air, because
Sonic_MoveRightand the air steering cap after adding without first checking whether he is already faster.Verifiedsonicretro/s1disasm · Sonic Retro, “Sonic Physics Guide: Running”How we know
716 add.w d5,d0 ; add acceleration to current ground speed 717 cmp.w d6,d0 ; is new speed above max speed? 718 blt.s .nocap ; if not, branch 719 move.w d6,d0 ; cap Sonic's ground speed
_incObj/01 Sonic.asm lines 716–719 at 15dfa3a · upstream ↗ 963 add.w d5,d0 ; increase rightward movement speed 964 cmp.w d6,d0 ; is new speed exceeding maximum? 965 blt.s Sonic_JumpMove ; if not, branch 966 move.w d6,d0 ; cap rightward X-speed to maximum
_incObj/01 Sonic.asm lines 963–966 at 15dfa3a · upstream ↗ Thus it is possible to curtail your forward momentum by pressing in the very direction of your motion.
Top Speed · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-25.
- ^Standing on flat ground, not on an object, with ground speed 0 after the left and right steps (before friction) and the floor under his center 12 px or more below his feet, Sonic turns to face right if last frame's right floor sensor met no block, or else left if the left one met none, and plays his balancing animation.Codesonicretro/s1disasmrevised
How we know
402 move.b obAngle(a0),d0 ; get Sonic's current angle 403 addi.b #$20,d0 ; rotate it 45 degrees clockwise 404 andi.b #$C0,d0 ; snap to nearest multiple of 90 degrees 405 bne.w Sonic_ResetScr ; is Sonic on a slope? if yes, branch ⋮ 407 tst.w obInertia(a0) ; is Sonic standing still? 408 bne.w Sonic_ResetScr ; if not, branch ⋮ 411 btst #status_on_object_bit,obStatus(a0) ; is Sonic standing on a platform object? 412 beq.s .chkbalance ; if not, branch
_incObj/01 Sonic.asm lines 402–412 at 15dfa3a · upstream ↗ 437.chkbalance: 438 jsr (ObjFloorDist).l ; get distance of Sonic to nearest floor 439 cmpi.w #12,d1 ; is he within 12px to floor? 440 blt.s Sonic_LookUp ; if yes, don't do balance animation (would look awkward) 441 cmpi.b #3,angleright(a0) ; is Sonic at the right edge of the floor? ⋮ 446 bclr #status_xflip_bit,obStatus(a0) ; clear X-flip flag (make Sonic face right) ⋮ 452 cmpi.b #3,angleleft(a0) ; is Sonic at the left edge of the floor? ⋮ 457 bset #status_xflip_bit,obStatus(a0) ; set X-flip flag (make Sonic face left)
_incObj/01 Sonic.asm lines 437–457 at 15dfa3a · upstream ↗ 17 moveq #3,d0 18 move.b d0,(v_anglebuffer).w 19 move.b d0,(v_anglebuffer2).w
_incObj/Sonic AnglePos.asm lines 17–19 at 15dfa3a · upstream ↗ 83 move.b (v_anglebuffer).w,angleright(a0) ; update front collision hot spot 84 move.b (v_anglebuffer2).w,angleleft(a0) ; update rear collision hot spot
_incObj/01 Sonic.asm lines 83–84 at 15dfa3a · 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 running game, walking and rolling off steps down built from Green Hill's 9, 10, and 11 px blocks, Sonic stayed on the ground over a 14 px step, his feet dropping 14 px on the frame his trailing floor sensor passed its edge; over a 15 px step he was in the air on that frame, with a Y speed of 0, no jump flag, and still curled if rolling, and the next frame's gravity made his Y speed
$38.Verifiedsonicretro/s1disasmHow we know
99.above_floor: 100 cmpi.w #$E,d1 101 bgt.s .in_air ; branch if Sonic is > 14px above floor ⋮ 110.in_air: 111 tst.b sticktoconvex(a0) 112 bne.s .on_disc ; branch if Sonic is on a SBZ disc 113 bset #status_in_air_bit,obStatus(a0)
_incObj/Sonic AnglePos.asm lines 99–113 at 15dfa3a · upstream ↗ 74 andi.w #status_in_air|status_rolling,d0 ; limit to "is in air" and "rolling" flags 75 move.w Sonic_Modes(pc,d0.w),d1 ; use the those as routine counter for the correct mode 76 jsr Sonic_Modes(pc,d1.w) ; jump to that mode
_incObj/01 Sonic.asm lines 74–76 at 15dfa3a · upstream ↗ 114 dc.w Sonic_MdJump-Sonic_Modes ; 2 - while in the air and not rolling 115 dc.w Sonic_MdRoll-Sonic_Modes ; 4 - while on the ground and rolling 116 dc.w Sonic_MdJump2-Sonic_Modes ; 6 - while in the air and rolling
_incObj/01 Sonic.asm lines 114–116 at 15dfa3a · upstream ↗ 534 muls.w obInertia(a0),d0 ; multiply sine value by current ground speed 535 asr.l #8,d0 ; shift result up a byte 536 move.w d0,obVelY(a0) ; set new Y-velocity
_incObj/01 Sonic.asm lines 534–536 at 15dfa3a · upstream ↗ 1274 tst.b jumping(a0) ; is Sonic airborne specifically from a jump? 1275 beq.s .capyvel ; if not, just cap Y speed normally
_incObj/01 Sonic.asm lines 1274–1275 at 15dfa3a · upstream ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-22.
Checked by a second AI model, 2026-10-25.
- ^A frame-by-frame model of
Obj01_MdNormal_Checks,Obj01_MdNormal,Obj01_MdRoll, and the air modes, withSonic_Animate's timing for the standing and blinking animations, matches Sonic the Hedgehog 2 itself, run in MAME with Sonic alone on a floor built of Emerald Hill Act 1's blocks, on every frame of the movement lab's flat-ground presets, eleven scripts of Sonic 2's own moves, and 100 random input scripts.Verifiedsonicretro/s2disasmHow we know
s2.asm#L36280-L36305 · upstream ↗ s2.asm#L36488-L36582 · upstream ↗ 36515 bsr.w Sonic_CheckSpindash ; check for spindash 36516 bsr.w Sonic_Jump ; check for jumping 36517 bsr.w Sonic_SlopeResist ; handle resistance from running up slopes 36518 bsr.w Sonic_Move ; handle Sonic's left/right movement 36519 bsr.w Sonic_Roll ; check for rolling
s2.asm lines 36515–36519 at 4ef457c · upstream ↗ s2.asm#L36596-L37046 · upstream ↗ s2.asm#L37054-L37270 · upstream ↗ s2.asm#L37342-L37490 · upstream ↗ s2.asm#L37600-L37743 · upstream ↗ s2.asm#L37934-L38200 · upstream ↗ 1381 not.b d0 1382 move.b (a0),d1 ; Get button press data 1383 eor.b d0,d1 ; Toggle off held buttons 1384 move.b d0,(a0)+ ; Store raw controller input for held button data 1385 and.b d0,d1 1386 move.b d1,(a0)+ ; Store pressed controller input
s2.asm lines 1381–1386 at 4ef457c · upstream ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-26.
Checked by a second AI model, 2026-10-26.
- ^
Sonic_Jumptakes off at$680subpixels per frame (6.5 px/frame),$800as Super Sonic, and$380underwater, the same take-off as Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
37400 move.w #$680,d2 ⋮ 37403 move.w #$800,d2 ; set higher jump speed if super ⋮ 37407 move.w #$380,d2 ; set lower jump speed if underwater
s2.asm lines 37400–37407 at 4ef457c · upstream ↗ 37411 subi.b #$40,d0 37412 jsr (CalcSine).l ⋮ 37418 add.w d0,y_vel(a0) ; make Sonic jump (in Y)
s2.asm lines 37409–37418 at 4ef457c · upstream ↗ 8son_jumpspeed: equ $680 ; Sonic's jump speed_incObj/01 Sonic.asm line 8 at 15dfa3a · 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.
- ^
ObjectMoveAndFalladds$38subpixels/frame to Sonic's downward speed each airborne frame, and underwater the air modes take$28back, leaving$10.Codesonicretro/s2disasmHow we know
30216 move.w y_vel(a0),d0 ; load y speed 30217 addi.w #$38,y_vel(a0) ; increase vertical speed (apply gravity)
s2.asm lines 30216–30217 at 4ef457c · upstream ↗ 36582 subi.w #$28,y_vel(a0) ; reduce gravity by $28 ($38-$28=$10)s2.asm lines 36575–36582 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.
- ^With no jump button held,
Sonic_JumpHeightcuts a rise faster than 4 px/frame to exactly-$400(-$200underwater), as in Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
37465 move.w #-$400,d1 ⋮ 37468 move.w #-$200,d1 ⋮ 37470 cmp.w y_vel(a0),d1 ; is Sonic going up faster than d1? ⋮ 37475 move.w d1,y_vel(a0) ; immediately reduce Sonic's upward speed to d1
s2.asm lines 37465–37475 at 4ef457c · upstream ↗ 1276 move.w #-$400,d1 ; set max jump height ⋮ 1279 move.w #-$200,d1 ; set underwater jump height ⋮ 1288 move.w d1,obVelY(a0) ; otherwise, cap Sonic's maximum jump height
_incObj/01 Sonic.asm lines 1276–1288 at 15dfa3a · 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.
- ^In the running game, on flat ground out of water, a jump's press frame sets Sonic's Y speed to −
$680,son_jumpspeed(6.5 px/frame), whether he stands, runs, or rolls.Verifiedsonicretro/s1disasm · Sonic Retro, “Sonic Physics Guide: Jumping”How we know
8son_jumpspeed: equ $680 ; Sonic's jump speed_incObj/01 Sonic.asm line 8 at 15dfa3a · upstream ↗ 1218 move.w #son_jumpspeed,d2 ; set initial jump force_incObj/01 Sonic.asm line 1218 at 15dfa3a · upstream ↗ jump_force 6.5 (6 pixels and 128 supbixels)
Constants · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-25.
- ^In the running game,
ObjectFall's gravity equate adds$38(0.21875 px/frame²) to Sonic's Y speed on every airborne frame, rising or falling, after a jump or off a ledge, button held or not.Verifiedsonicretro/s1disasm · Sonic Retro, “Sonic Physics Guide: Air State”How we know
5gravity: equ $38 ; gravity constant used by many objects_incObj/sub ObjectFall & SpeedToPos.asm line 5 at 15dfa3a · upstream ↗ 363 jsr (ObjectFall).l ; apply gravity and update Sonic's position based on his current velocities_incObj/01 Sonic.asm line 363 at 15dfa3a · upstream ↗ gravity_force 0.21875 (56 subpixels)
Constants · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-25.
- ^In the running game, on flat ground, letting go of the button while a jump still rises faster than 4 px/frame sets Sonic's Y speed to exactly −
$400: a release on any of airborne updates 1 to 12 moves him up exactly 4 px that frame and leaves −$3C8after gravity.Verifiedsonicretro/s1disasm · Sonic Retro, “Sonic Physics Guide: Jumping”How we know
1274 tst.b jumping(a0) ; is Sonic airborne specifically from a jump? ⋮ 1276 move.w #-$400,d1 ; set max jump height ⋮ 1283 cmp.w obVelY(a0),d1 ; get current y speed 1284 ble.s .return ; is Sonic moving up slower than the cap speed? if yes, branch 1285 move.b (v_jpadhold2).w,d0 ; get currently held buttons 1286 andi.b #btnABC,d0 ; is A, B or C still held after jumping? 1287 bne.s .return ; if yes, branch 1288 move.w d1,obVelY(a0) ; otherwise, cap Sonic's maximum jump height
_incObj/01 Sonic.asm lines 1273–1288 at 15dfa3a · upstream ↗ the computer checks to see if Y Speed is less than -4 (e.g. -5 is "less" than -4). If it is, then Y Speed is set to -4.
Variable Jump Height · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-25.
- ^ ab
Obj01_Initsets Sonic's top speed to$600, his acceleration to$C, and his deceleration to$80subpixels, Sonic 1's values; speed shoes and Super Sonic swap in others.Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
36232 move.w #$600,(Sonic_top_speed).w ; set Sonic's top speed 36233 move.w #$C,(Sonic_acceleration).w ; set Sonic's acceleration 36234 move.w #$80,(Sonic_deceleration).w ; set Sonic's deceleration
s2.asm lines 36232–36234 at 4ef457c · upstream ↗ 36364 move.w #$A00,(Sonic_top_speed).w ; restore Super Sonic's top speeds2.asm lines 36364–36366 at 4ef457c · upstream ↗ 5son_maxspeed: equ $600 ; Sonic's max speed 6son_acceleration: equ $C ; Sonic's acceleration 7son_deceleration: equ $80 ; Sonic's deceleration
_incObj/01 Sonic.asm lines 5–7 at 15dfa3a · 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.
- ^In the running game, on flat ground, Sonic's top running speed,
son_maxspeed, is$600(6 px/frame): holding the d-pad his ground speed stops there, and in the air the d-pad caps his X speed there too.Verifiedsonicretro/s1disasm · Sonic Retro, “Sonic Physics Guide: Running”How we know
5son_maxspeed: equ $600 ; Sonic's max speed_incObj/01 Sonic.asm line 5 at 15dfa3a · upstream ↗ 45 move.w #son_maxspeed,(v_sonspeedmax).w ; set Sonic's top speed_incObj/01 Sonic.asm line 45 at 15dfa3a · upstream ↗ 940 move.w (v_sonspeedmax).w,d6 ; get Sonic's current top speed_incObj/01 Sonic.asm line 940 at 15dfa3a · upstream ↗ top_speed 6
Constants · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-25.
- ^ abHolding forward no longer pulls a faster Sonic down to the top speed on the ground;
Sonic_MoveRightundoes the frame's acceleration and keeps the speed he had.Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
36998 add.w d5,d0 ; add acceleration to the right ⋮ 37001 sub.w d5,d0 ; remove this frame's acceleration change ⋮ 37003 bge.s + ; if speed was already greater than the maximum, branch 37004 move.w d6,d0 ; limit speed on ground going right
s2.asm lines 36998–37004 at 4ef457c · upstream ↗ 716 add.w d5,d0 ; add acceleration to current ground speed 717 cmp.w d6,d0 ; is new speed above max speed? 718 blt.s .nocap ; if not, branch 719 move.w d6,d0 ; cap Sonic's ground speed
_incObj/01 Sonic.asm lines 716–719 at 15dfa3a · 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.
- ^ abIn the air
Sonic_ChgJumpDiradds twice the acceleration,$18, either way and still caps at the top speed even when Sonic was already faster, as Sonic 1 does.Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
37205 move.w (Sonic_acceleration).w,d5 37206 asl.w #1,d5 ⋮ 37219 move.w d1,d0 ; limit speed in air going left, even if Sonic was already going faster (speed limit/cap) ⋮ 37228 move.w d6,d0 ; limit speed in air going right, even if Sonic was already going faster (speed limit/cap)
s2.asm lines 37204–37228 at 4ef457c · upstream ↗ 956 move.w d1,d0 ; cap leftward X-speed to maximum ⋮ 966 move.w d6,d0 ; cap rightward X-speed to maximum
_incObj/01 Sonic.asm lines 940–966 at 15dfa3a · 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.
- ^Sonic 2 keeps Sonic 1's air drag;
Sonic_JumpPeakDecelerateis instruction for instruction Sonic 1'sSonic_AirDrag, taking X speed shifted right 5 bits while Y speed is from −$400to −1.Codesonicretro/s2disasm · sonicretro/s1disasmHow we know
37242 cmpi.w #-$400,y_vel(a0) ; is Sonic moving faster than -$400 upwards? ⋮ 37246 asr.w #5,d1 ; d1 = x_velocity / 32 ⋮ 37251 sub.w d1,d0 ; reduce x velocity by d1 ⋮ 37260 sub.w d1,d0 ; reduce x velocity by d1
s2.asm lines 37241–37264 at 4ef457c · upstream ↗ 987 cmpi.w #-$400,obVelY(a0) ; is Sonic moving faster than -$400 upwards? ⋮ 992 asr.w #5,d1 ; divide that copy by $20
_incObj/01 Sonic.asm lines 986–1013 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 running game, in the air the d-pad adds
$18, twice the ground acceleration, to Sonic's X speed each frame either way, with no separate deceleration, up to the top speed.Verifiedsonicretro/s1disasm · Sonic Retro, “Sonic Physics Guide: Air State”How we know
939Sonic_JumpDirection: 940 move.w (v_sonspeedmax).w,d6 ; get Sonic's current top speed 941 move.w (v_sonspeedacc).w,d5 ; get Sonic's current acceleration... 942 asl.w #1,d5 ; ...doubled ⋮ 951 sub.w d5,d0 ; increase leftward movement speed ⋮ 963 add.w d5,d0 ; increase rightward movement speed ⋮ 970 move.w d0,obVelX(a0) ; update Sonic's horizontal speed
_incObj/01 Sonic.asm lines 939–970 at 15dfa3a · upstream ↗ there is no distinction for deceleration in the air, either
Air Acceleration · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-25.
- ^In the running game, while Sonic rises no faster than 4 px/frame (Y speed −
$400to −1 before that frame's gravity), each frame subtracts his X speed shifted right 5 bits, about 1/32: an X speed of$400written in by the probe was dragged at Y speeds −$400and −1, and not at −$401or 0.Verifiedsonicretro/s1disasm · Sonic Retro, “Sonic Physics Guide: Air State”How we know
986Sonic_AirDrag: 987 cmpi.w #-$400,obVelY(a0) ; is Sonic moving faster than -$400 upwards? 988 blo.s .return ; if yes, branch (skip air drag) ⋮ 992 asr.w #5,d1 ; divide that copy by $20 993 beq.s .return ; if result is zero, branch 994 bmi.s .jumpingleftward ; if speed is negative, branch 995 sub.w d1,d0 ; slightly reduce speed (air drag) ⋮ 1007 sub.w d1,d0 ; slightly reduce speed (air drag)
_incObj/01 Sonic.asm lines 986–1013 at 15dfa3a · upstream ↗ Y Speed must be negative and Y Speed must be more than -4
Air Drag · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Checked by a second AI model, 2026-10-25.
- ^Sonic 2 has no grace window after a ledge: only the grounded modes,
Obj01_MdNormalandObj01_MdRoll, callSonic_Jump.Codesonicretro/s2disasmHow we know
36514Obj01_MdNormal: 36515 bsr.w Sonic_CheckSpindash ; check for spindash 36516 bsr.w Sonic_Jump ; check for jumping
s2.asm lines 36514–36516 at 4ef457c · upstream ↗ 36556Obj01_MdRoll: ⋮ 36559 bsr.w Sonic_Jump ; check for jumping
s2.asm lines 36556–36559 at 4ef457c · upstream ↗ s2.asm#L36539-L36543 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^The spin dash starts when a jump button is pressed while Sonic shows his ducking animation;
Sonic_CheckSpindashruns beforeSonic_Jumpand skips the rest of the frame.Codesonicretro/s2disasmHow we know
37603 cmpi.b #AniIDSonAni_Duck,anim(a0) ⋮ 37606 andi.b #button_B_mask|button_C_mask|button_A_mask,d0 ⋮ 37611 addq.l #4,sp 37612 move.b #1,spindash_flag(a0) 37613 move.w #0,spindash_counter(a0)
s2.asm lines 37600–37613 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.
- ^ abEach jump press while charging adds
$200to the spin dash counter, capped at$800, and each frame the counter loses 1/32 of itself.Codesonicretro/s2disasmHow we know
37714 move.w spindash_counter(a0),d0 37715 lsr.w #5,d0 37716 sub.w d0,spindash_counter(a0) ⋮ 37726 addi.w #$200,spindash_counter(a0) 37727 cmpi.w #$800,spindash_counter(a0) ⋮ 37729 move.w #$800,spindash_counter(a0)
s2.asm lines 37711–37729 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.
- ^ abReleasing Down sets Sonic's ground speed from the counter's high byte,
$800plus$80a step, from 8 px/frame uncharged to 12 at full charge (Super Sonic$B00to$F00).Codesonicretro/s2disasmrevisedHow we know
37635 btst #button_down,d0 37636 bne.w Sonic_ChargingSpindash ⋮ 37645 move.b spindash_counter(a0),d0 37646 add.w d0,d0 37647 move.w SpindashSpeeds(pc,d0.w),inertia(a0)
s2.asm lines 37633–37647 at 4ef457c · upstream ↗ 37688SpindashSpeeds: 37689 dc.w $800 ; 0 ⋮ 37697 dc.w $C00 ; 8 ⋮ 37699SpindashSpeedsSuper: 37700 dc.w $B00 ; 0
s2.asm lines 37688–37708 at 4ef457c · 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.
- ^Letting go of Down while charging curls Sonic (Y + 5), sets his ground speed from the counter's high byte (spindash-speeds, or
SpindashSpeedsSuperas Super Sonic), negated facing left, and ends the frame after the floor snap with his X speed unchanged, so he starts moving the next frame.Codesonicretro/s2disasmrevisedHow we know
37633Sonic_UpdateSpindash: 37634 move.b (Ctrl_1_Held_Logical).w,d0 37635 btst #button_down,d0 37636 bne.w Sonic_ChargingSpindash ⋮ 37638 ; unleash the charged spindash and start rolling quickly: 37639 move.b #$E,y_radius(a0) 37640 move.b #7,x_radius(a0) 37641 move.b #AniIDSonAni_Roll,anim(a0) 37642 addq.w #5,y_pos(a0) ; add the difference between Sonic's rolling and standing heights 37643 move.b #0,spindash_flag(a0) 37644 moveq #0,d0 37645 move.b spindash_counter(a0),d0 ⋮
s2.asm lines 37633–37647 at 4ef457c · upstream ↗ 37648 tst.b (Super_Sonic_flag).w 37649 beq.s + 37650 move.w SpindashSpeedsSuper(pc,d0.w),inertia(a0)
s2.asm lines 37648–37651 at 4ef457c · upstream ↗ 37677 btst #status.player.x_flip,status(a0) 37678 beq.s + 37679 neg.w inertia(a0) ⋮ 37681 bset #status.player.rolling,status(a0) 37682 move.b #0,(Sonic_Dust+anim).w 37683 move.w #SndID_SpindashRelease,d0 ; spindash zoom sound 37684 jsr (PlaySound).l 37685 bra.s Obj01_Spindash_ResetScr
s2.asm lines 37677–37685 at 4ef457c · upstream ↗ 37732Obj01_Spindash_ResetScr: 37733 addq.l #4,sp 37734 cmpi.w #(screen_height/2)-16,(Camera_Y_pos_bias).w 37735 beq.s loc_1AD8C 37736 bhs.s + 37737 addq.w #4,(Camera_Y_pos_bias).w 37738+ subq.w #2,(Camera_Y_pos_bias).w ⋮ 37740loc_1AD8C: 37741 bsr.w Sonic_LevelBound 37742 bsr.w AnglePos 37743 rts
s2.asm lines 37732–37743 at 4ef457c · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
- ^Sonic 1 has no spin dash; standing on the ground,
Sonic_MdNormalchecks only for a jump, the slope, the d-pad, and a roll.Codesonicretro/s1disasm · sonicretro/s2disasmHow we know
318 bsr.w Sonic_Jump ; check if we need to jump 319 bsr.w Sonic_SlopeResistWalk ; handle resistance from running up slopes 320 bsr.w Sonic_Move ; handle Sonic's left/right movement 321 bsr.w Sonic_Roll ; check if we need to roll
_incObj/01 Sonic.asm lines 316–325 at 15dfa3a · upstream ↗ 36515 bsr.w Sonic_CheckSpindash ; check for spindashs2.asm lines 36514–36515 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.
- ^ abSonic curls into a roll when Down is held without Left or Right and his ground speed is at least
$80either way, as in Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
37345 mvabs.w inertia(a0),d0 37346 cmpi.w #$80,d0 ; is Sonic moving at $80 speed or faster? ⋮ 37349 andi.b #button_left_mask|button_right_mask,d0 ; is left/right being pressed? ⋮ 37351 btst #button_down,(Ctrl_1_Held_Logical).w ; is down being pressed?
s2.asm lines 37345–37352 at 4ef457c · upstream ↗ 1155 cmpi.w #$80,d0 ; is Sonic moving at $80 speed or faster? ⋮ 1158 andi.b #btnL+btnR,d0 ; is left/right being held? ⋮ 1160 btst #bitDn,(v_jpadhold2).w ; is down being held?
_incObj/01 Sonic.asm lines 1155–1161 at 15dfa3a · 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.
- ^Rolling, Sonic slows by half his acceleration (
$6) a frame, by$20more against the d-pad, and his X speed is clamped to$1000(16 px/frame).Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
37057 move.w (Sonic_acceleration).w,d5 37058 asr.w #1,d5 ; natural roll deceleration = 1/2 normal acceleration
s2.asm lines 37057–37059 at 4ef457c · upstream ↗ 37137 cmpi.w #$1000,d1 ⋮ 37139 move.w #$1000,d1 ; limit Sonic's speed rolling right
s2.asm lines 37137–37143 at 4ef457c · upstream ↗ asr.w #1,d5 … move.w (v_sonspeeddec).w,d4 … asr.w #2,d4
_incObj/01 Sonic.asm#L770-L773 · upstream ↗ cmpi.w #$1000,d1 … move.w #$1000,d1
_incObj/01 Sonic.asm#L863-L865 · 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.
- ^ abOn a slope Sonic's ground speed gains the sine of the angle times
$20a frame while he runs and$50while he rolls downhill (a quarter of that uphill), with nothing while he stands; the code matches Sonic 1's.Codesonicretro/s2disasm · sonicretro/s1disasmHow we know
37755 move.b angle(a0),d0 ⋮ 37759 move.b angle(a0),d0 37760 jsr (CalcSine).l 37761 muls.w #$20,d0 37762 asr.l #8,d0 37763 tst.w inertia(a0) 37764 beq.s return_1ADCA
s2.asm lines 37754–37768 at 4ef457c · upstream ↗ 37794 muls.w #$50,d0 37795 asr.l #8,d0 37796 tst.w inertia(a0) 37797 bmi.s loc_1ADFC 37798 tst.w d0 37799 bpl.s loc_1ADF6 37800 asr.l #2,d0
s2.asm lines 37787–37803 at 4ef457c · upstream ↗ 1331 muls.w #$20,d0 ; multiply by resist force while walking ⋮ 1335 beq.s .return ; if he's standing still, branch ⋮ 1369 muls.w #$50,d0 ; multiply by resist force while rolling (2.5x larger than walking)
_incObj/01 Sonic.asm lines 1323–1392 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.
- ^On a wall or ceiling below
$280(2.5 px/frame) ground speed,Sonic_SlopeRepelzeroes the speed, drops Sonic off, and locks the d-pad for 30 frames, as in Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasmHow we know
37833 addi.b #$20,d0 37834 andi.b #$C0,d0 ⋮ 37837 cmpi.w #$280,d0 ⋮ 37839 clr.w inertia(a0) 37840 bset #status.player.in_air,status(a0) 37841 move.w #$1E,move_lock(a0)
s2.asm lines 37832–37841 at 4ef457c · upstream ↗ 1423 cmpi.w #$280,d0 ; is Sonic's ground speed high enough?_incObj/01 Sonic.asm lines 1412–1427 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.
- ^Hit without a shield, Sonic drops his rings, at most 32 of them as bouncing rings, and the count goes to 0; with no rings he dies.Codesonicretro/s2disasm
How we know
85650 move.w (Ring_count).w,d0 ⋮ 85658 btst #status_secondary.shield,status_secondary(a0) 85659 bne.s Hurt_Shield 85660 tst.w d0 85661 beq.w KillCharacter ⋮ 85663 bne.s Hurt_Shield 85664 _move.b #ObjID_LostRings,id(a1) ; load obj
s2.asm lines 85650–85664 at 4ef457c · upstream ↗ 25178 moveq #32,d0 25179 cmp.w d0,d5 ; has player over 33 rings? 25180 blo.s + ; if not, branch 25181 move.w d0,d5 ; if yes, limit to 32 rings
s2.asm lines 25178–25181 at 4ef457c · upstream ↗ 25243 move.w #0,(Ring_count).ws2.asm lines 25240–25243 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.
- ^Sonic 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.
- ^A hit throws Sonic up at
-$400and away from the object at$200(half both underwater), and the hurt routine's gravity is$30.Codesonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
85678 move.w #-$400,y_vel(a0) ; make Sonic bounce away from the object 85679 move.w #-$200,x_vel(a0) ⋮ 85689 blo.s Hurt_ChkSpikes ; if Sonic is left of the object, branch 85690 neg.w x_vel(a0) ; if Sonic is right of the object, reverse
s2.asm lines 85677–85690 at 4ef457c · upstream ↗ 38222 jsr (ObjectMove).l 38223 addi.w #$30,y_vel(a0)
s2.asm lines 38222–38223 at 4ef457c · upstream ↗ 394 move.w #-$400,obVelY(a0) ; bounce Sonic vertically 395 move.w #-$200,obVelX(a0) ; bounce Sonic horizontally
_incObj/Sonic ReactToItem.asm lines 394–395 at 15dfa3a · upstream ↗ addi.w #gravity-8,obVelY(a0)
_incObj/01 Sonic.asm#L1869 · 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.
- ^A hit sets
invulnerable_timeto$78(120) and landing sets it to 120 again; it counts down only in the control routine, so Sonic has 120 frames of blinking invulnerability after he lands.Codesonicretro/s2disasmHow we know
85696 move.w #$78,invulnerable_time(a0)s2.asm line 85696 at 4ef457c · upstream ↗ 38262 btst #status.player.in_air,status(a0) 38263 bne.s return_1B1C8 ⋮ 38271 move.w #$78,invulnerable_time(a0)
s2.asm lines 38262–38271 at 4ef457c · upstream ↗ 36325Sonic_Display: ⋮ 36328 subq.w #1,invulnerable_time(a0) ; decrease invulnerability frames 36329 lsr.w #3,d0 ; check every 3 or 4 frames
s2.asm lines 36325–36330 at 4ef457c · upstream ↗ 85635 tst.w invulnerable_time(a0) 85636 bne.s Touch_NoHurt
s2.asm lines 85633–85636 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.
- ^The North American manual says enemies can't destroy Sonic while he has a Ring, that Rings Tails collects are added to the total, that a hit costs the Rings, and that 100 and 200 Rings each earn an extra Life.ManualSonic 2 US manual
How we know
Enemies can’t destroy you when you have … Rings. “Tails “collects Rings, too, that are … added to your total. You'll lose Rings if you
Race for the Rings! · archived copy ↗ an extra Life when you collect 100 Rings and … 200 Rings.)
Super Items · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^The North American manual says that touching a Star Post with 50 Rings or more makes a Star Circle appear, which leads to the Special Stage, a run around a chute collecting enough Rings at each checkpoint while dodging Bombs, with a Chaos Emerald for finishing it; the same Star Post can't be used again.ManualSonic 2 US manual
How we know
Touch a Star Post when you have 50 Rings (or … Once you've been to the Special Stage, you can’t
Star Posts · archived copy ↗ Speed around the chute, picking up as many … If you get the required number of Rings at each … a magnificent Chaos Emerald.
Special Stage · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^The North American manual says that while Sonic holds any rings, an enemy's attack costs him all of them instead of a life, that 100 rings earn an extra life, and that collecting enough rings lets him warp to a Secret Zone, a rotating maze holding one of six Chaos Emeralds.ManualSonic 1 US manual · Mean Machines 10 (1991-07)
How we know
As long as you have | Rings, you won't be hurt when you get attacked or touch an enemy. (But you will lose all your Rings.)
Reach for the Rings! · archived copy ↗ Note: Picking up 100 Rings also earns you an extra chance.
power-ups · archived copy ↗ If you collect a certain amount of Rings, you can warp to the Secret Zone where you'll ricochet off multi-colored blocks ina 360° rotating maze! … There are six Secret Zones. In each Zone, your goal is to touch the Chaos Emerald.
Secret Zone · archived copy ↗ If Sonic collects over 50 rings when he hits the end of a level, a massive ring appears.
p. 42, "Special Stage" · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Mean Machines Sega's review says the first game's rotating special zones were replaced in Sonic 2 by high-speed races between Sonic and Miles down brightly colored chutes, entered with fifty rings at a Star Post.MagazineMean Machines Sega 2
How we know
The special zones, strange, rotating psychedelic affairs, have been replaced in Sonic II by high speed races between Sonic and Miles down brightly coloured chutes … They are entered if Sonic has fifty rings in his possession when he touches O Star Post.
p. 60 · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Two-player mode's zone select offers Emerald Hill, Mystic Cave, and Casino Night, and its level-order table chains Emerald Hill to Casino Night to Mystic Cave, two Acts each, ending after Mystic Cave's second Act.Codesonicretro/s2disasm
How we know
LevelOrder_2P: zoneOrderedTable 2,2 … zoneTableEntry.w emerald_hill_zone_act_2 … zoneTableEntry.w casino_night_zone_act_1 … zoneTableEntry.w mystic_cave_zone_act_2 … zoneTableEntry.w -1 … zoneTableEntry.w casino_night_zone_act_2 … zoneTableEntry.w mystic_cave_zone_act_1
s2.asm#L28141-L28193 · upstream ↗ 11925LevelSelect2P_LevelOrder: 11926 dc.w emerald_hill_zone_act_1 11927 dc.w mystic_cave_zone_act_1 11928 dc.w casino_night_zone_act_1 11929 dc.w $FFFF
s2.asm lines 11925–11929 at 4ef457c · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Checked by a second AI model, 2026-10-26.
- ^In Game Informer's 2017 feature Yuji Naka said a two-player mode had been tried late in the development of Sonic the Hedgehog, and he was glad the team carried it on and achieved it in the sequel; he also said Sonic 2 lifted the first game's limit on speed.WebGame Informer, Sonic 2 behind the scenes
How we know
This game also had a 2P mode that we tried to install in Sonic The Hedgehog at the later phase of development. I'm very glad that we continued this and achieved it in the sequel. … In Sonic The Hedgehog 2, we lifted up the limit of speed from the previous title.
Yuji Naka · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Time Extension reported in 2022 that Tails's designer, Yasushi Yamaguchi, said in a Twitter thread that it was Yuji Naka's idea to make the character a beginner's character anyone could pick up rather than a rival, so that Naka could play with his younger sister, and that Yamaguchi added the second tail when his first design wasn't striking enough.WebTime Extension, Tails origins
How we know
Yamaguchi shared that it was Yuji Naka's idea to make the character less of a rival and more of a beginner character that anyone could pick up. … The impetus for this was so that he could play the game with his younger sister. … his first take on the design wasn't impactful enough, so he decided to add two tails to the character instead of one.
article · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Mark Cerny, who founded the Sega Technical Institute, said in 2006 that by September 1991 he had brought Yuji Naka and Hirokazu Yasuhara to the institute; Sega of America's marketing told him another Sonic was "much too soon", then in November asked for it at once, so the team lost two months of an eleven-month schedule.InterviewSega-16, Mark Cerny interview
How we know
In September 1991, four months after Sonic The Hedgehog‘s release in North America, I’d managed to reunite two of the three key Sonic Team members (Yuji Naka, the Sonic programmer and team leader, and Hirokazu Yasuhara, the designer) at my Sega Technical Institute. … “no, it’s much too soon.” … So the team lost two months out of an eleven month schedule!
answer on Sonic 2 · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Yoshii said he took over the Sega Technical Institute in the year Mark Cerny left, without remembering when, and joined Sonic 2 partway through, when he thought about half of it was done; he put the real start of development at around the beginning of 1992, with the game finished about a month before release.InterviewHitotsubashi, Yoshii interview
How we know
私が STI を引き継いだのは、マーク・サニーが辞めたのと同じ年だったと思います
p. 13, Yoshii · archived copy ↗ 引き継いだ時には、プロジェクト全体の半分ぐらいは出来上がっていたと思いますが
p. 14, Yoshii · archived copy ↗ 発売の 1 ヶ月前ぐらいにはマスターアップしましたから、 … おそらく本格的に始まったのは発売した年、92 年の年明け頃からでしょうね。
p. 13, Yoshii · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Yoshii said that to make Sonic 2 quickly about five to ten development staff were brought from Japan, that at its peak about 20 people worked on the project, and that because this time the game was developed in the United States, in-house, everyone at Sega of America saw it as their own project.InterviewHitotsubashi, Yoshii interview
How we know
るために日本から開発からスタッフを 5 人~10 人ぐらい連れて来て、最盛期にはこのプロ … ジェクトだけで 20 人ぐらいました。
p. 12, Yoshii · archived copy ↗ 「ソニック 2」は初めてアメリカ国内で、しかも自社で開発をしましたから、SOA
p. 13, Yoshii · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Sega-16's 2007 history of the Sega Technical Institute says Cerny's plan was to pair experienced developers from Japan with inexperienced Americans; that on Sonic 2 the Japanese staff arrived late over visas and language, culture, and working styles divided the two sides; and that after Sonic 2 shipped the group split, the Japanese staff working on Sonic sequels. It quotes former STI artist Tim Skelly saying everyone on Sonic 2 ultimately worked for Naka, who would have been happier with an all-Japanese team.WebSega-16, Sega Technical Institute
How we know
He would bring over seasoned talent from Japan and have them work with inexperienced Americans
on Cerny's plan · archived copy ↗ the Japanese hadn’t arrived yet due to visa complications. Differences in language and culture added to their woes, but the team pressed on. … by the time Sonic 2 shipped, Naka had had enough. … the Japanese concentrating on Sonic sequels, like Sonic 3 and Sonic & Knuckles.
on Sonic 2 · archived copy ↗ Everyone attached to to Sonic 2 ultimately worked for Yuji Naka. I think Naka would have been much happier if he was working with an all-Japanese team, but just because of the language barrier and some cultural differences.
Tim Skelly · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^ abTakashi Iizuka, head of Sonic Team in 2017, who hadn't worked on the game, told Game Informer that, though it hurt him as someone who worked on Sonic 3, he felt Sonic 2 was the best of the classic series, and credited its mix of American and Japanese staff.WebGame Informer, Sonic 2 behind the scenes
How we know
As someone who worked on Sonic 3, it kind of hurts me to say it, but I do feel that Sonic 2 really is the best of the classic Sonic series … Sonic 2 happened in America with the perfect mixture of U.S. development staff along with Japanese development staff
Takashi Iizuka · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Yoshii said that shortly before release Sonic 2 ran out of room; it had been planned for two 2-"mega" ROMs, 4 in all, and Sega president Hayao Nakayama approved adding a third to make 6 rather than lose two or three weeks cutting the game down.InterviewHitotsubashi, Yoshii interview
How we know
「ソニック 2」は発売直前で容量が足りなくなってしまったったんです。 … を増やして 6 メガにしました。
p. 14, Yoshii · archived copy ↗ 「もういい、そのまま出せ。今さら直す時間を使うのはもったいないから」
p. 15, Yoshii · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Al Nilsen told Game Informer in 2017 that the game could have been three times its size had everything made been left in, and that Naka's team weren't afraid to take out work that wasn't working.WebGame Informer, Sonic 2 behind the scenes
How we know
The game probably could have been three times the size if we left in everything that was there … 'I've been working on this for four months, it's not working. Let's take it out.'
Al Nilsen · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Video Games Chronicle reported in December 2023 that the Video Game History Foundation had partly reconstructed a cut stage, Cyber City Zone (at one point Genocide City Zone), from artist Tom Payne's design documents and designer Hirokazu Yasuhara's map of it, and had shown artist Brenda Cook's VHS portfolio, with a cut desert stage, Sand Shower Zone, and a winter stage; VGC says Cook had said in earlier interviews that she worked on three cut zones.WebVGC, Sonic 2 lost stages
How we know
Cyber City Zone (also known at one point as Genocide City Zone), has been partially reconstructed after the VGHF scanned a number of design documents from the collection of Sonic 2 artist Tom Payne … game designer Hirokazu Yasuhara’s map for the stage … she had worked on three zones that were cut from the game – a tree-based stage called Wood Zone, a desert stage called Sand Shower Zone and a winter stage. … Cook’s portfolio shows an animated version of Sand Shower Zone and the first ever look at the winter stage
article · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Asked in 2020 who finally decided to launch Sonic 2 around the world at the same time, Yoshii said he thought it was the Japanese side, though it might have been the American side.InterviewHitotsubashi, Yoshii interview
How we know
日本側だったと思います。もしかしたらアメリカ側だったかもしれませんが
p. 15, Yoshii · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Chip and Jonathan Carter's year-end list in the Chicago Tribune of 25 December 1992 put Sonic the Hedgehog 2 second, saying that with more time to play it they might have had a three-way tie for first.MagazineChicago Tribune, best of 1992
How we know
2. Sonic the Hedgehog 2 (By Sega, for Genesis. $50-$70). … we might have had a three-way tie for first.
list, no. 2 · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Yoshii said in 2020 that he thought about a million copies had probably sold by the end of 1992, and that thanks to Sonic 2 the Genesis console itself began to sell well.InterviewHitotsubashi, Yoshii interview
How we know
多分、年内のうちに 100 万本ぐらいは売れていたと思います。 … のおかげで結構売れるようになったと思いますよ。
p. 16, Yoshii · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^TouchArcade reported in December 2013 that a remastered Sonic the Hedgehog 2 for iOS, made with Sega's blessing, added Hidden Palace Zone, which it describes as a planned stage cut shortly before the 1992 release.WebTouchArcade, Sonic 2 remaster
How we know
the inclusion of Hidden Palace Zone for the first time ever in an official capacity … one of the planned environments in the game which was cut out just prior to the game's original release in 1992. … with the blessing of Sega
article · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^Sega's site for Sonic Origins, before its release, announced the collection for 23 June 2022 with remastered versions of Sonic the Hedgehog 2, Sonic the Hedgehog, Sonic 3 & Knuckles, and Sonic CD.PublisherSonic Origins official site
How we know
Relive the classic adventures of Sonic The Hedgehog, Sonic The Hedgehog 2, Sonic 3 & Knuckles, and Sonic CD in the newly remastered Sonic Origins! … Available June 23, 2022
home page · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-26.
- ^The spin dash is Sonic 2's, with the same
$200a press to$800, the same 1/32 decay, and the same release speeds from$800to$C00.Codesonicretro/skdisasm · sonicretro/s2disasmrevisedHow we know
23741 move.b spin_dash_counter(a0),d0 23742 add.w d0,d0 23743 move.w word_11CF2(pc,d0.w),ground_vel(a0)
sonic3k.asm lines 23740–23743 at 73de97c · upstream ↗ 23773word_11CF2: 23774 dc.w $800 23775 dc.w $880
sonic3k.asm lines 23773–23782 at 73de97c · upstream ↗ 23799 lsr.w #5,d0 23800 sub.w d0,spin_dash_counter(a0) ⋮ 23811 addi.w #$200,spin_dash_counter(a0) 23812 cmpi.w #$800,spin_dash_counter(a0)
sonic3k.asm lines 23798–23814 at 73de97c · upstream ↗ 37688SpindashSpeeds: 37689 dc.w $800 ; 0 ⋮ 37697 dc.w $C00 ; 8
s2.asm lines 37688–37697 at 4ef457c · upstream ↗ 37715 lsr.w #5,d0 37716 sub.w d0,spindash_counter(a0) ⋮ 37726 addi.w #$200,spindash_counter(a0) 37727 cmpi.w #$800,spindash_counter(a0)
s2.asm lines 37714–37729 at 4ef457c · 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.
- ^In the air
Sonic_ChgJumpDirstill adds$18a frame, but a Sonic already faster than the top speed keeps his speed; Sonic 1 and Sonic 2 pulled him down to it.Codesonicretro/skdisasm · sonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
23134 sub.w d5,d0 ; add acceleration to the left ⋮ 23139 add.w d5,d0 ; remove this frame's acceleration change 23140 cmp.w d1,d0 ; compare speed with top speed 23141 ble.s loc_11682 ; if speed was already greater than the maximum, branch 23142 move.w d1,d0
sonic3k.asm lines 23129–23155 at 73de97c · upstream ↗ 20850 add.w d5,d0 ; remove this frame's acceleration change 20851 cmp.w d1,d0 ; compare speed with top speed 20852 ble.s loc_126F2 ; if speed was already greater than the maximum, branch
s3.asm lines 20845–20866 at 73de97c · upstream ↗ 37219 move.w d1,d0 ; limit speed in air going left, even if Sonic was already going faster (speed limit/cap)s2.asm lines 37214–37219 at 4ef457c · upstream ↗ 951 sub.w d5,d0 ; increase leftward movement speed ⋮ 954 cmp.w d1,d0 ; is new speed exceeding maximum? 955 bgt.s .notleft ; if not, branch 956 move.w d1,d0 ; cap leftward X-speed to maximum
_incObj/01 Sonic.asm lines 951–956 at 15dfa3a · 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.
- ^Unlike Sonic 1 and Sonic 2, a standing player slides on a slope whose push, sine ×
$20, is at least$D; the walking and rolling factors stay$20and$50.Codesonicretro/skdisasm · sonicretro/s2disasm · sonicretro/s1disasmrevisedHow we know
23868 muls.w #$20,d0 23869 asr.l #8,d0 23870 tst.w ground_vel(a0) 23871 beq.s loc_11DDC ⋮ 23875 add.w d0,ground_vel(a0) ⋮ 23882 add.w d0,ground_vel(a0) ⋮ 23888loc_11DDC: 23889 move.w d0,d1 23890 bpl.s loc_11DE2 23891 neg.w d1 ⋮ 23893loc_11DE2: 23894 cmpi.w #$D,d1 ⋮
sonic3k.asm lines 23866–23896 at 73de97c · upstream ↗ 23914 muls.w #$50,d0sonic3k.asm line 23914 at 73de97c · upstream ↗ 37763 tst.w inertia(a0) 37764 beq.s return_1ADCA
s2.asm lines 37763–37764 at 4ef457c · upstream ↗ 1334 tst.w obInertia(a0) ; check Sonic's ground speed 1335 beq.s .return ; if he's standing still, branch
_incObj/01 Sonic.asm lines 1334–1335 at 15dfa3a · 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.
- ^On flat ground, Sonic 3 & Knuckles changes when Sonic rolls and stands: Down curls him only from
$100, not Sonic 2's$80, and, off objects, crouches him while he is still moving slower, where Sonic 2 crouched only from a standstill; a roll stands up under$80with that speed kept, where Sonic 2's rolls on to 0 (both outside pinball mode). In the air he keeps a speed above the top while steering, where Sonic 2 pulled him down to it; a second press after a roll jump gives back steering, which Sonic 2's jump never did; a wall push moving sideways no longer ends the frame's checks; and a head 20 px into a ceiling moving left is pushed off a right wall instead, a check Sonic 2 lacks. Standing over a drop, not Super, he turns toward it at once, where Sonic 2 turned only if the floor 6 px the other way was also low.Codesonicretro/skdisasm · sonicretro/s2disasmrevisedHow we know
23271 cmpi.w #$100,d0 ; is Sonic moving at $100 speed or faster? 23272 bhs.s Player_ChkRoll ; if so, branch 23273 btst #Status_OnObj,status(a0) 23274 bne.s locret_1177E 23275 move.b #8,anim(a0) ; enter ducking animation
sonic3k.asm lines 23271–23275 at 73de97c · upstream ↗ 37345 mvabs.w inertia(a0),d0 37346 cmpi.w #$80,d0 ; is Sonic moving at $80 speed or faster? 37347 blo.s Obj01_NoRoll ; if not, branch
s2.asm lines 37345–37347 at 4ef457c · upstream ↗ 36788Sonic_Duck: 36789 btst #button_down,(Ctrl_1_Held_Logical).w ; is down being pressed? 36790 beq.s Obj01_ResetScr ; if not, branch 36791 move.b #AniIDSonAni_Duck,anim(a0) ; use "ducking" animation
s2.asm lines 36788–36791 at 4ef457c · upstream ↗ 23012 cmpi.w #$80,d0 23013 bhs.s loc_115C6 23014 tst.b spin_dash_flag(a0) 23015 bne.s loc_115B4 23016 bclr #Status_Roll,status(a0)
sonic3k.asm lines 23012–23016 at 73de97c · upstream ↗ 37097Sonic_CheckRollStop: 37098 tst.w inertia(a0) 37099 bne.s Obj01_Roll_ResetScr ⋮ 37102 bclr #status.player.rolling,status(a0)
s2.asm lines 37097–37102 at 4ef457c · upstream ↗ 23139 add.w d5,d0 ; remove this frame's acceleration change 23140 cmp.w d1,d0 ; compare speed with top speed 23141 ble.s loc_11682 ; if speed was already greater than the maximum, branch 23142 move.w d1,d0
sonic3k.asm lines 23139–23142 at 73de97c · upstream ↗ 37214 sub.w d5,d0 ; add acceleration to the left 37215 move.w d6,d1 37216 neg.w d1 37217 cmp.w d1,d0 ; compare new speed with top speed 37218 bgt.s + ; if new speed is less than the maximum, branch 37219 move.w d1,d0 ; limit speed in air going left, even if Sonic was already going faster (speed limit/cap)
s2.asm lines 37214–37219 at 4ef457c · upstream ↗ 23438 bclr #Status_RollJump,status(a0)sonic3k.asm line 23438 at 73de97c · upstream ↗ 37461Sonic_JumpHeight: 37462 tst.b jumping(a0) ; is Sonic jumping? ⋮ 37475 move.w d1,y_vel(a0) ; immediately reduce Sonic's upward speed to d1 ⋮ 37477 tst.b y_vel(a0) ; is Sonic exactly at the height of his jump? 37478 beq.s Sonic_CheckGoSuper ; if yes, test for turning into Super Sonic 37479 rts
s2.asm lines 37461–37479 at 4ef457c · upstream ↗ 24207 sub.w d1,x_pos(a0) 24208 move.w #0,x_vel(a0) ; stop Sonic since he hit a wall 24209 move.w y_vel(a0),ground_vel(a0) ⋮ 24211Player_HitCeiling: 24212 bsr.w sub_11FEE
sonic3k.asm lines 24207–24212 at 73de97c · upstream ↗ 38016 sub.w d1,x_pos(a0) 38017 move.w #0,x_vel(a0) ; stop Sonic since he hit a wall 38018 move.w y_vel(a0),inertia(a0) 38019 rts
s2.asm lines 38016–38019 at 4ef457c · upstream ↗ 24215 neg.w d1 24216 cmpi.w #$14,d1 24217 bhs.s loc_12054
sonic3k.asm lines 24215–24217 at 73de97c · upstream ↗ 38022Sonic_HitCeiling: 38023 bsr.w Sonic_CheckCeiling ⋮ 38026 sub.w d1,y_pos(a0) ⋮ 38029 move.w #0,y_vel(a0) ; stop Sonic in y since he hit a ceiling
s2.asm lines 38022–38029 at 4ef457c · upstream ↗ 22587loc_111CE: ⋮ 22591 bclr #Status_Facing,status(a0)
sonic3k.asm lines 22587–22591 at 73de97c · upstream ↗ 36717+ move.b #AniIDSonAni_Balance3,anim(a0) ; set Sonic's animation to "Balance3" ⋮ 36719 subq.w #6,d3 ⋮ 36721 cmpi.w #$C,d1 36722 blt.w Obj01_ResetScr ⋮ 36724 bclr #status.player.x_flip,status(a0)
s2.asm lines 36717–36724 at 4ef457c · upstream ↗ 21731 bsr.w CheckLeftWallDist ⋮ 21736 move.w y_vel(a0),ground_vel(a0) ⋮ 21738Player_HitCeiling: ⋮ 21743 cmpi.w #$14,d1
s3.asm lines 21730–21743 at 73de97c · upstream ↗ 21115 bclr #Status_RollJump,status(a0)s3.asm line 21115 at 73de97c · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
Sources
Code
- 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. “s1disasm: Sonic the Hedgehog (16-bit) disassembly (sonicretro/s1disasm).” Commit 15dfa3a. sonicretro/s1disasm @ 15dfa3a · licence, all uses
- Sonic Retro contributors. 2026. “skdisasm: Sonic 3 & Knuckles disassembly (sonicretro/skdisasm).” Commit 73de97c. sonicretro/skdisasm @ 73de97c · licence, all uses
Primary
- Corporation, Sega. 2024. “ソフトウェア一覧(セガ発売)| メガドライブ (Sega Hardware Encyclopedia).” original · archived · licence, all uses
- Institute, Sega Technical. 1992. “Sonic the Hedgehog 2 instruction manual (US, Sega Genesis).” Sega of America. original · archived · licence, all uses
- America, Sega of. 1991. “Sonic the Hedgehog instruction manual (Sega Genesis, US).” original · archived · licence, all uses
- staff, Sega-16 and Mark Cerny. 2006. “Interview: Mark Cerny (Founder of STI).” Sega-16. original · archived · licence, all uses
- Moriyuki, Shigehara,, Ikuine, Fumihiko, Shimizu, Hiroshi, Yoshii, and Masaharu. 2020. “吉井正晴インタビュー第2回後半:セガおよびセガ・オブ・アメリカにおけるゲーム開発・販売業務についての証言.” Hitotsubashi University Institute of Innovation Research. original · archived · licence, all uses
- Sega. 2022. “Sonic Origins official site.” Sega. original · archived · licence, all uses
Secondary
- Famicom Tsūshin editors. 1992. “Weekly Famicom Tsūshin, no. 206 (1992-11-27): Sonic the Hedgehog 2 cross review page.” Weekly Famicom Tsūshin (週刊ファミコン通信), no. 206, p. 42. ASCII Corporation. original · archived · licence, all uses
- Dina, Rabinovitch,. 1992. “A prickly object of desire: Zapped Sonic the hedgehog beats Mario the Italian plumber at his own game.” The Independent (UK), 17 December 1992. The Independent. original · archived · licence, all uses
- Sega Visions editors. 1992. “Sega Visions, issue 10 (November/December 1992).” Sega Visions, vol. 1, no. 10 (November/December 1992), news page and Sonic 2 feature. Sega of America / IDG Communications. original · archived · licence, all uses
- Shea, Brian. 2017. “The Behind-The-Scenes Story Of How Sonic 2 Became Sega's Ace In The Hole.” Game Informer. original · archived · licence, all uses
- staff, Mean Machines Sega. 1992. “Mean Machines Sega, issue 2 (November 1992): Sonic the Hedgehog 2 review, p. 63.” Mean Machines Sega, no. 2, p. 63. EMAP. original · archived · licence, all uses
- staff, Mean Machines Sega. 1992. “Mean Machines Sega, issue 2 (November 1992): Sonic the Hedgehog 2 review.” Mean Machines Sega, no. 2, pp. 60-63. EMAP. original · archived · licence, all uses
- Boutros, Daniel. 2006. “A Detailed Cross-Examination of Yesterday and Today's Best-Selling Platform Games.” Game Developer (Gamasutra). original · archived · licence, all uses
- Sonic Retro contributors. n.d. “Sonic Physics Guide: Running.” Sonic Retro. original · archived · licence, all uses
- Sonic Retro contributors. 2023. “Sonic Physics Guide: Jumping.” Sonic Retro. original · archived · licence, all uses
- Sonic Retro contributors. n.d. “Sonic Physics Guide: Air State.” Sonic Retro. original · archived · licence, all uses
- Images, EMAP. 1991. “Mean Machines, issue 10 (July 1991).” Mean Machines, issue 10. EMAP Images. original · archived · licence, all uses
- Yarwood, Jack. 2022. “Tails Designer Shares Character's Origins 30 Years After Sonic The Hedgehog 2.” Time Extension. original · archived · licence, all uses
- staff, Sega-16. 2007. “Developer's Den: Sega Technical Institute.” Sega-16. original · archived · licence, all uses
- staff, VGC. 2023. “Sonic 2 'lost stages' discovered via old design docs and a VHS portfolio.” Video Games Chronicle. original · archived · licence, all uses
- Chip, Carter, and Carter, Jonathan. 1992. “The Best of '92 That Kept You Playing and Playing...” Chicago Tribune, 25 December 1992. Chicago Tribune. original · archived · licence, all uses
- staff, TouchArcade. 2013. “'Sonic The Hedgehog 2' Remastered Hitting this Week, Features Long Lost Hidden Palace Zone.” TouchArcade. original · archived · licence, all uses