Patch for Super Mario Bros. 2 (Famicom Disk System) to restore original Spiny Egg behavior

Luke G.
Admin
 Posted 8 years ago
 

If you were to fling a ball from a moving aircraft, would you expect it to fall straight down? Or instead would you imagine it would be affected by things such as momentum, velocity, and trajectory? Lakitu Lakitu (a.k.a. ジュゲム) If you've ever played either Super Mario Bros. (NES/Famicom) or it's significantly harder, real Japanese sequel Super Mario Bros. 2 (Famicom Disk System), you'd notice that the Spiny Eggs thrown by at you by Lakitu just don't seem to honor the traditional laws of physics you and I are constrained by. Truth be told, this oddity of physics may not have been intentional. Instead, the disassembled programming code of those games (and other related titles from that same general time period) includes complex logic to determine the player's movement speed and location in relation to Lakitu.  This data is employed to calculate a trajectory to use to fling an egg ahead of you at an angle that would impede your progress. In addition, the program logic dictates that these eggs would rebound sharply off of a wall or solid surface they would hit from the side. So...why do they fall straight down in the finished games? Imagine the program to look like this:

  • Step 1: Prepare to throw egg
  • Step 2: Calculate complex laws of physics
  • Step 3: Throw egg using what we now know about physics

In this extremely simplified sample of programming logic, the physics of how the egg will be thrown are calculated each time Lakitu prepares to throw an egg. This results in the effect that he seems to be aiming to hit you or place them ahead of where you are moving with each toss. However, somewhere along the lines one of the programmers of the game inserted a new step. Notice it in bold and see how it affects our logic:

  • Step 1: Prepare to throw egg
  • Step 2: Calculate complex laws of physics
  • New Step 3: Forget everything we just calculated about physics
  • Step 4: Throw egg using what we now know about physics

Spiny Spiny & Spiny Egg (a.k.a. トゲゾー & パイポ) Again, this is just a simplified concept of what is happening. But, the result is that the entire process of calculating and applying trajectories is totally wasted. No adjustments to trajectory or any sort of variance are taken into account when the egg is thrown, so it simply falls straight down. The result? In most levels featuring Lakitu the Spinys are not really a threat, and it may even be possible to simply avoid danger from them entirely by running nonstop to the end of the level. Bumping into Lakitu may even be more of a danger than the Spinys or Spiny Eggs! With some 'adjustments' to the assembled ROM data, it is possible to restore the original physics logic and make the eggs behave as they would have under the first example above. As you can see from the video embedded below (taken from world 4-1 in Super Mario Bros. for NES), this results in the Spinys and Spiny Eggs being far more dangerous!

 

 

Notice the near-miss at 0:30 from an egg bouncing off of a wall at full speed. Considering how this changes the difficulty, it is not outside consideration that the designers determined that this level of physics made the game too difficult for entry level players. After all, this game would be the defacto pack-in game which would introduce the NES to everyone. With that in mind, it would be simple to have the developers alter the program to just skip that portion of logic.  Removing it in the original Super Mario Bros may have moved them to remove it in the Japanese sequel as well, for consistency's sake.  It would not be until Super Mario Bros 3 that we would see this behavior return. Regardless of why it was removed, a patch exists to restore this in the NES version of Super Mario Bros (NTSC). You can view the article and download the patch over at the article for this game on The Cutting Room Floor. You can also read a more in-depth analysis of the program code in the notes page there. However, I was unable to locate a patch for the Japanese Famicom Disk System version of Super Mario Bros. 2 anywhere...so...I made one! You may download it here, but please don't post it elsewhere, or take credit for it.

 

Download Download: SMB2J Spiny Fix (IPS)

 

 

This patch will need to be applied to a normal Japanese FDS dump of Super Mario Bros. 2. You're on your own to figure out how to find that, or make one yourself from a modified Japanese Famicom Disk System drive. It's a plain 'IPS' patch file, so any IPS patcher that works with FDS dumps should work. I've submitted this patch to ROMHacking.org's database, so you can visit their site to read a bit more detail about what this patch does from a technical standpoint. Grab your favorite controller and enjoy an already difficult game now made even harder!

 

* Note: Lakitu, Spiny, Spiny Eggs, Mario, et al are all property of Nintendo.