On this page
  1. How it plays
  2. Two players
  3. Making it
  4. Reception
  5. Across the series
  6. Related
  7. Mechanics
  8. References
  9. Sources

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.

Interactive: movement-lab (needs JavaScript)

Sonic 2’s run, roll, and jump

#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

MechanicKindHow
JumpOne speedout of water every jump takes off at one speed
GravityOne gravityone pull of gravity whether the button is held or not, lighter underwater
Variable jump heightRelease capletting go of the button slows a fast rise to a set speed
RunningMomentumspeed builds and fades slowly to a top speed, and on the ground holding forward lets him keep a speed above it
Air controlMomentumthe 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
HitboxPoints and a boxpoints that touch the level, and a 16 px wide box that touches enemies
Invincibility framesFrame timerafter a hit he blinks, safe, for a while counted from his landing
KnockbackLauncha hit throws him up and back, under lighter gravity
RollingSlopes onlyDown while moving curls Sonic up; on flat ground a roll only slows
Spin dashChargedcrouching, jump presses rev up a roll that letting go of Down launches, faster the harder it was revved
Slope physicsMoving onlyslopes push a running or rolling Sonic and leave a standing one alone; too slow on a wall or ceiling, he drops off
Rings as healthDrop allwithout a shield, a hit scatters his rings, and a hit with none kills him
ShieldsOne hitone shield, which takes a hit in place of the rings
Extra lifeOther condition100 rings earn a life, and 200 another
Bonus stagea checkpoint post touched with 50 rings opens a race down a chute for a Chaos Emerald
Coyote timeNonea jump works only while he's on the ground
Every claim about this game, by concept (83)
generalIn the No-Intro Sonic The Hedgehog 2 (World) (Rev B) ROM, Sonic's object (Obj01) is the code s2disasm builds with gameRevision = 2, item for item, apart from absolute addresses, RAM variables at other addresses, branch displacements, and offset table entries, and less one jump table entry the build has after Sonic_HurtStop; the collision routines it calls (AnglePos up to Obj79), CalcSine and CalcAngle with their tables, ObjectMoveAndFall, ObjectMove, and ReadJoypads are that build's bytes. The build as a whole is not this ROM byte for byte.Code
Sega'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.Publisher
Sega 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.Magazine
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.Magazine
Masaharu Yoshii, the credited director, recalled in a 2020 interview that the game came out on 21 November, so that it would be out just before Thanksgiving, after which people take time off and the Christmas season begins.Interview
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.Web
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.Interview
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.Manual
The 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.Manual
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.Web
The 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.Manual
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.Code
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.Manual
The 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.Manual
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.Code
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.Web
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.Manual
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.Manual
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.Code
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.Web
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.Interview
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.Interview
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.Interview
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.Web
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.Interview
Famicom 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.Magazine
Mean 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.Magazine
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.Magazine
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.Magazine
The 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.Magazine
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.Interview
Daniel 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.Web
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.Web
Takashi 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.Web
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.Web
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.Web
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.Web
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.Publisher
Air controlIn the air Sonic_ChgJumpDir adds twice the acceleration, $18, either way and still caps at the top speed even when Sonic was already faster, as Sonic 1 does.Code
Sonic 2 keeps Sonic 1's air drag; Sonic_JumpPeakDecelerate is instruction for instruction Sonic 1's Sonic_AirDrag, taking X speed shifted right 5 bits while Y speed is from −$400 to −1.Code
A jump from a roll sets the roll-jump flag, and while it's set Sonic_ChgJumpDir skips the d-pad, as in Sonic 1; the drag near the top of the jump still applies.Code
Coyote timeSonic 2 has no grace window after a ledge: only the grounded modes, Obj01_MdNormal and Obj01_MdRoll, call Sonic_Jump.Code
When both floor sensors are above the floor after a ground move, AnglePos moves Sonic down onto it if it's within his X speed's whole pixels plus 4, at most 14; any farther and he's in the air. Sonic 1 reaches down 14 px at every speed.Code
Fall damageSonic dies once his Y position is more than 224 px below the camera's bottom boundary, checked by Sonic_LevelBound before each move, as in Sonic 1, but with fixBugs off Sonic 2 checks the boundary where it is (Camera_Max_Y_pos) and Sonic 1 the target it's moving to. In Emerald Hill Act 1, run in MAME, each of 18 falls into a pit killed him on the first frame after his center passed row 1024.Verified
GravityObjectMoveAndFall adds $38 subpixels/frame to Sonic's downward speed each airborne frame, and underwater the air modes take $28 back, leaving $10.Code
HitboxAgainst objects Sonic is a 16 px wide box whose half-height is his height radius minus 3: 32 px tall standing, 22 px curled up.Code
On stages built in Emerald Hill Act 1 from the act's full flat 16 × 16 block, solid on the collision path Sonic starts on, the movement lab's Sonic 2 model matches Sonic the Hedgehog 2 itself, run in MAME, on every frame of 100 random stages with random input scripts, three in four with floating blocks, and of the lab's stage presets, until a fall into a pit kills him at the bottom boundary or he nears the end of the built floor.Verified
Sonic's level collision radii are 9 × 19 px standing and 7 × 14 curled, set by Obj01_Init, the jump, the roll, and the spin dash, and his wall sensors sit 10 px from his center: Sonic 1's sizes.Code
Sonic 2's level collision is 16 × 16 px blocks whose layout words carry solidity bits for two collision paths; Sonic starts on the first, testing bit $C for floors and $D for walls and ceilings. As in Sonic 1, each search looks in the sensor's block and at most one more.Code
On flat ground and not on an object, after each ground move AnglePos sets both angle buffers to 3, then reads two floor sensors at his feet, X ± his width radius, each writing its buffer when it meets a block; the nearer distance counts, and a floor up to 14 px above his feet lifts him onto it. Standing on an object, it sets both buffers to 0 and reads no sensors; on a wall or a ceiling it turns the sensors to match (Sonic_WalkVertL, Sonic_WalkCeiling, Sonic_WalkVertR).Code
On the ground, the wall check looks from where this frame's X speed will put him, 10 px ahead of his center and 8 px below it on flat ground, as in Sonic 1 (whose 10 px is sonic_quick_size).Code
On the ground with nonzero ground speed, a wall found ahead (the sensor of wall-sensors inside a block) cuts this frame's X speed so he stops beside it, and sets his ground speed to 0, as in Sonic 1.Code
In the air Sonic_DoLevelCollision picks one of four checks by the direction of his speed: CalcAngle of X and Y speed less $20, to a quarter, as in Sonic 1, with the same angle table.Code
In the air, a wall sensor 10 px from his center inside a block pushes Sonic out by whole pixels and sets his X speed to 0; moving mostly sideways, that ends the frame's checks, as in Sonic 1.Code
Falling mostly down, Sonic lands only if one floor sensor is no deeper in the floor than his Y speed's whole pixels plus 8, as in Sonic 1; moving mostly sideways he lands at any depth while not rising, with fixBugs off.Code
Moving mostly up, a head sensor inside a block moves Sonic down out of it and sets his Y speed to 0 on a flat ceiling; moving mostly sideways it moves him down and stops a rise, and skips the floor check that frame, as in Sonic 1.Code
On the ground nothing checks above Sonic except a jump press; standing or rolling into a block's underside leaves him inside it, as in Sonic 1.Code
Standing on flat ground, not on an object, not sliding, and with d-pad control (move_lock 0), with ground speed 0 after the left and right steps and the floor under his center 12 px or more below his feet, Sonic balances on the side whose floor sensor met no block last frame (the right first). He turns to face that side only when he faces away from it and the floor 6 px back from his center is also 12 px or more below; Sonic 1 turns him at any such edge.Code
Input readingAfter Sonic has stood in his waiting animation to its 30th frame (about 175 frames), each frame with nothing held skips his movement, and the first frame with the d-pad or a jump button held but no jump press only starts a blink, which skips two more frames; from its 172nd frame he gets up instead, which skips five frames in all.Code
Invincibility framesA hit sets invulnerable_time to $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.Code
JumpSonic_Jump takes off at $680 subpixels per frame (6.5 px/frame), $800 as Super Sonic, and $380 underwater, the same take-off as Sonic 1.Code
A jump press jumps only if both head sensors find 6 px or more of room above his head, as in Sonic 1; the check writes $80 to both angle buffers first.Code
A jump adds nothing to Sonic's X speed on flat ground, and the rest of that frame's mode (the move and the floor snap) doesn't run, as in Sonic 1.Code
With fixBugs off, a jump sets the standing collision radii before checking for a roll, so a roll jump keeps them while curled, and lands 5 px early; landing then lifts his center 5 px more, as in Sonic 1.Code
Landing on flat ground sets his ground speed to his X speed and his Y speed to 0, and clears the jump, roll-jump, and in-air flags, as in Sonic 1; out of pinball mode it also uncurls him (the standing radii, his center 5 px up), as Sonic 1 always does.Code
KnockbackA hit throws Sonic up at -$400 and away from the object at $200 (half both underwater), and the hurt routine's gravity is $30.Code
Rings as healthHit 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.Code
RollingRolling, Sonic slows by half his acceleration ($6) a frame, by $20 more against the d-pad, and his X speed is clamped to $1000 (16 px/frame).Code
Sonic curls into a roll when Down is held without Left or Right and his ground speed is at least $80 either way, as in Sonic 1.Code
RunningObj01_Init sets Sonic's top speed to $600, his acceleration to $C, and his deceleration to $80 subpixels, Sonic 1's values; speed shoes and Super Sonic swap in others.Code
Holding forward no longer pulls a faster Sonic down to the top speed on the ground; Sonic_MoveRight undoes the frame's acceleration and keeps the speed he had.Code
A frame-by-frame model of Obj01_MdNormal_Checks, Obj01_MdNormal, Obj01_MdRoll, and the air modes, with Sonic_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.Verified
With neither Left nor Right held and the sliding status clear, a standing Sonic's ground speed moves 12 ($C, his acceleration) toward 0 each frame and stops at 0, as in Sonic 1; while sliding, Sonic_Move goes straight to Obj01_Traction, with no d-pad and no friction.Code
Turning against his motion on flat ground, Sonic skids (the stopping animation, still facing his old direction of motion) when his ground speed before the turning step is at least $480 going right or $381 going left, as in Sonic 1: the angle check overwrites the low byte of the speed it then compares.Code
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.Code
ShieldsSonic 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
Slope physicsOn a slope Sonic's ground speed gains the sine of the angle times $20 a frame while he runs and $50 while he rolls downhill (a quarter of that uphill), with nothing while he stands; the code matches Sonic 1's.Code
On a wall or ceiling below $280 (2.5 px/frame) ground speed, Sonic_SlopeRepel zeroes the speed, drops Sonic off, and locks the d-pad for 30 frames, as in Sonic 1.Code
Spin dashThe spin dash starts when a jump button is pressed while Sonic shows his ducking animation; Sonic_CheckSpindash runs before Sonic_Jump and skips the rest of the frame.Code
Each jump press while charging adds $200 to the spin dash counter, capped at $800, and each frame the counter loses 1/32 of itself.Code
Releasing Down sets Sonic's ground speed from the counter's high byte, $800 plus $80 a step, from 8 px/frame uncharged to 12 at full charge (Super Sonic $B00 to $F00).Code
Letting go of Down while charging curls Sonic (Y + 5), sets his ground speed from the counter's high byte (spindash-speeds, or SpindashSpeedsSuper as 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.Code
Variable jump heightWith no jump button held, Sonic_JumpHeight cuts a rise faster than 4 px/frame to exactly -$400 (-$200 underwater), as in Sonic 1.Code

References

  1. ^ 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.

    In the claim ledger

  2. ^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.

    In the claim ledger

  3. ^ 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.

    In the claim ledger

  4. ^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 claim ledger

  5. ^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.

    In the claim ledger

  6. ^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.

    In the claim ledger

  7. ^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.

    In the claim ledger

  8. ^ 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.

    In the claim ledger

  9. ^ 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.

    In the claim ledger

  10. ^ 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.

    In the claim ledger

  11. ^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.

    In the claim ledger

  12. ^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.

    In the claim ledger

  13. ^ 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.

    In the claim ledger

  14. ^ 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.

    In the claim ledger

  15. ^ 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.

    In the claim ledger

  16. ^ 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.

    In the claim ledger

  17. ^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.

    In the claim ledger

  18. ^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.

    In the claim ledger

  19. ^ 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_MoveRight and 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.

    In the claim ledger

  20. ^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 claim ledger

  21. ^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/s1disasm
    How 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.

    In the claim ledger

  22. ^A frame-by-frame model of Obj01_MdNormal_Checks, Obj01_MdNormal, Obj01_MdRoll, and the air modes, with Sonic_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/s2disasm
    How 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.

    In the claim ledger

  23. ^Sonic_Jump takes off at $680 subpixels per frame (6.5 px/frame), $800 as Super Sonic, and $380 underwater, the same take-off as Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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.

    In the claim ledger

  24. ^ObjectMoveAndFall adds $38 subpixels/frame to Sonic's downward speed each airborne frame, and underwater the air modes take $28 back, leaving $10.Codesonicretro/s2disasm
    How 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.

    In the claim ledger

  25. ^With no jump button held, Sonic_JumpHeight cuts a rise faster than 4 px/frame to exactly -$400 (-$200 underwater), as in Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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 claim ledger

  26. ^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 claim ledger

  27. ^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 claim ledger

  28. ^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 −$3C8 after 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.

    In the claim ledger

  29. ^ abObj01_Init sets Sonic's top speed to $600, his acceleration to $C, and his deceleration to $80 subpixels, Sonic 1's values; speed shoes and Super Sonic swap in others.Codesonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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 speed
    
    s2.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 claim ledger

  30. ^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.

    In the claim ledger

  31. ^ abHolding forward no longer pulls a faster Sonic down to the top speed on the ground; Sonic_MoveRight undoes the frame's acceleration and keeps the speed he had.Codesonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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.

    In the claim ledger

  32. ^ abIn the air Sonic_ChgJumpDir adds 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/s1disasmrevised
    How 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.

    In the claim ledger

  33. ^Sonic 2 keeps Sonic 1's air drag; Sonic_JumpPeakDecelerate is instruction for instruction Sonic 1's Sonic_AirDrag, taking X speed shifted right 5 bits while Y speed is from −$400 to −1.Codesonicretro/s2disasm · sonicretro/s1disasm
    How 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 claim ledger

  34. ^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 claim ledger

  35. ^In the running game, while Sonic rises no faster than 4 px/frame (Y speed −$400 to −1 before that frame's gravity), each frame subtracts his X speed shifted right 5 bits, about 1/32: an X speed of $400 written in by the probe was dragged at Y speeds −$400 and −1, and not at −$401 or 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.

    In the claim ledger

  36. ^Sonic 2 has no grace window after a ledge: only the grounded modes, Obj01_MdNormal and Obj01_MdRoll, call Sonic_Jump.Codesonicretro/s2disasm
    How 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.

    In the claim ledger

  37. ^The spin dash starts when a jump button is pressed while Sonic shows his ducking animation; Sonic_CheckSpindash runs before Sonic_Jump and skips the rest of the frame.Codesonicretro/s2disasm
    How 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.

    In the claim ledger

  38. ^ abEach jump press while charging adds $200 to the spin dash counter, capped at $800, and each frame the counter loses 1/32 of itself.Codesonicretro/s2disasm
    How 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.

    In the claim ledger

  39. ^ abReleasing Down sets Sonic's ground speed from the counter's high byte, $800 plus $80 a step, from 8 px/frame uncharged to 12 at full charge (Super Sonic $B00 to $F00).Codesonicretro/s2disasmrevised
    How 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.

    In the claim ledger

  40. ^Letting go of Down while charging curls Sonic (Y + 5), sets his ground speed from the counter's high byte (spindash-speeds, or SpindashSpeedsSuper as 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/s2disasmrevised
    How 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.

    In the claim ledger

  41. ^Sonic 1 has no spin dash; standing on the ground, Sonic_MdNormal checks only for a jump, the slope, the d-pad, and a roll.Codesonicretro/s1disasm · sonicretro/s2disasm
    How 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 spindash
    
    s2.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.

    In the claim ledger

  42. ^ abSonic curls into a roll when Down is held without Left or Right and his ground speed is at least $80 either way, as in Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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.

    In the claim ledger

  43. ^Rolling, Sonic slows by half his acceleration ($6) a frame, by $20 more against the d-pad, and his X speed is clamped to $1000 (16 px/frame).Codesonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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.

    In the claim ledger

  44. ^ abOn a slope Sonic's ground speed gains the sine of the angle times $20 a frame while he runs and $50 while he rolls downhill (a quarter of that uphill), with nothing while he stands; the code matches Sonic 1's.Codesonicretro/s2disasm · sonicretro/s1disasm
    How 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.

    In the claim ledger

  45. ^On a wall or ceiling below $280 (2.5 px/frame) ground speed, Sonic_SlopeRepel zeroes the speed, drops Sonic off, and locks the d-pad for 30 frames, as in Sonic 1.Codesonicretro/s2disasm · sonicretro/s1disasm
    How 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.

    In the claim ledger

  46. ^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).w
    
    s2.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.

    In the claim ledger

  47. ^Sonic 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

  48. ^A hit throws Sonic up at -$400 and away from the object at $200 (half both underwater), and the hurt routine's gravity is $30.Codesonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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.

    In the claim ledger

  49. ^A hit sets invulnerable_time to $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/s2disasm
    How 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.

    In the claim ledger

  50. ^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.

    In the claim ledger

  51. ^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.

    In the claim ledger

  52. ^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.

    In the claim ledger

  53. ^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.

    In the claim ledger

  54. ^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 the claim ledger

  55. ^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.

    In the claim ledger

  56. ^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.

    In the claim ledger

  57. ^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.

    In the claim ledger

  58. ^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.

    In the claim ledger

  59. ^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.

    In the claim ledger

  60. ^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.

    In the claim ledger

  61. ^ 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.

    In the claim ledger

  62. ^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.

    In the claim ledger

  63. ^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.

    In the claim ledger

  64. ^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.

    In the claim ledger

  65. ^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.

    In the claim ledger

  66. ^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.

    In the claim ledger

  67. ^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.

    In the claim ledger

  68. ^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.

    In the claim ledger

  69. ^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.

    In the claim ledger

  70. ^The spin dash is Sonic 2's, with the same $200 a press to $800, the same 1/32 decay, and the same release speeds from $800 to $C00.Codesonicretro/skdisasm · sonicretro/s2disasmrevised
    How 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 claim ledger

  71. ^In the air Sonic_ChgJumpDir still adds $18 a 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/s1disasmrevised
    How 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.

    In the claim ledger

  72. ^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 $20 and $50.Codesonicretro/skdisasm · sonicretro/s2disasm · sonicretro/s1disasmrevised
    How 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,d0
    
    sonic3k.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.

    In the claim ledger

  73. ^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 $80 with 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/s2disasmrevised
    How 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.

    In the claim ledger

Sources

Code

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