February 25, 2025

Times change, but good engineering remains.
Super Mario Brothers – a 1985 smash hit serving as many people’s first exposure to video games – used subpixel calculations. In fact, it used 16 levels of them – even though that doubled the amount of bytes used to store the player location.
Why?
It’s a good question. Resources were tight.
Early video game programmers had a very interesting job, involving tight constraints — and although our job as programmers today isn’t nearly as resource constrained, we can still learn a lot from that early balancing act.
The NES had 2048 bytes of RAM, though later games could include extra. If you do the math, these extra two bytes are the equivalent of 16 megabytes on a 16GB system. In practice, memory usage was a much bigger concern in 1985, it’s even worse than that – since nearly all of the NES’ working RAM needed to be put to productive use, every byte counts.
Therefore, the question remains: given the very tight constraints of the Nintendo system at the time, why even bother?
The answer is simple: the team had a great grasp of priorities and they understood their product.
Miyamoto, lead designer on the game and many of Nintendo’s other titles, had this to say:
“The most important thing in a game is the feeling of movement. How does it feel to move through the world? How does it feel to control the character?”
Indeed, many would-be competitors biggest flaw isn’t music. graphics, sound, or level design — it’s bad controls and bad movement. Super Mario Brothers and later games are renown for perfecting that feeling – and it’s the subpixel precision that makes that possible.
Without those sixteen levels of subpixel precision, Mario wouldn’t gracefully start and stop — he’d suddenly jerk up to speed and lurch to a halt. In the grand scheme of things, this isn’t a big deal; the actual difference in time is miniscule. However, the difference in perception, in the “feeling of movement”, is dramatic.
Of course, that’s not necessarily the exact lesson we need to take from that today. Pixels are much smaller now, and we can use floating point values easily. Likewise, we deal with a range of resolutions, not the NES’s single fixed resolution – scaling is cheap and easy.
However, that idea of understanding what is most important to your product and focusing on that — even if it costs you in time, money, disk space, bandwidth, or something else — it’s critical.
Excellent leaders, whether on the technical side, business side, or product side, realize what the most critical parts are and fight for the best result they can.
Imagine yourself as part of the technical team for SMB1.
You’re fighting for every byte – and you already have the system working with pixel-level accuracy. What do you do?
Imagine yourself on the product team.
You want to cram in as many levels and enemies as you can – do you ask the technical team to spend bytes and dev time on getting the motion perfect? Or do you focus on things that can be advertised?