This is a good lesson about the benefit of time when it comes to software development. Mario 64 could have been a much much better game on the same hardware, but the time cost would have resulted in a release late enough that the entire game might have been considered irrelevant.
Game consoles have had the benefit of the platform freezing for a few years allowing improvements to accumulate and later titles utilizing knowledge gained from the earlier titles.
Much of the software we use every day could benefit from this level of scrutiny but the pressure to deliver on time means we won't get to see such benefits unless it becomes a crazy persons labour of love.
There are externalities to consider that make a later release less likely, too - it was a launch title, to match the pack-in of SMB in the NES and Super Mario World as one of two games available when the SNES launched.
Wikipedia’s entry on SM64 tells me that the N64’s launch was delayed because Miyamoto wanted more time to polish the game. I don’t think a later release would have been possible. This was the flagship title, the system seller. Come play Mario. In 3d.
I watched the video through only once, but unless I'm mistaken (the video is a little confusing on this point), the claim is that the original game did run consistently at 30fps (the design framerate of the console), and the point of these hacks is to improve framerate for mods and devices that can play the game at higher rates. Unless I misunderstood something, it sounds like the original game was exactly as good as it needed to be, as released. And that's before you get to the fact that the mods require the RAM expansion pack.
> ... unless it becomes a crazy persons labour of love
Or there are valid business reasons to keep chipping away, in particular on performance-per-dollar problems at scale. If you're spending $1M/month on hardware to run something, each 10% win is worth enough to employ a couple senior engineers.
Much of the software we use every day does benefit from this level of scrutiny. There was a popular post today about changing C++ std::sort for more perf. There's JavaScript engines running 100x faster for a given CPU than they were in the 90s? gcc and llvm optimize more than ever?
Super Mario 64 was a launch title for the N64. One of two launch titles in North America. There really was no way to delay the game without delaying the console.
With that in mind, SM64 is a pretty impressive game for a console launch title. It makes good use of the N64 controller, performs well, and is pretty fun. It's not the best game of all time but it's definitely not a bad game.
"roll those loops back up and don't compile in debug mode to achieve significant performance gains" is not the takeaway I thought I'd have going in, heh.
Unrolled loops trade instruction cache for cycles. Whether it's good depends on what your bottleneck is, in this case ram access is a bigger bottleneck than cpu due to being shared with the rendering coprocessor. I wonder if we'll hit this crossover point again in the future.
He did so much more than that. The not compiling in debug mode was well known before this video, and he addresses that. His speedups are independent of not compiling in debug mode.
It was common belief in that era that you made code faster by making it longer and more complicated. The opposite is true now (because of cache size and deep OoO) - simple predictable loops are great - but even then people tended to overdo it.
Of course, it's a way worse problem that they compiled at -O0.
Now that's a 10x programmer if I ever saw one. I'm sure the compiler helped too. The generated code of C compilers from the 80's and 90's versus the generated code created by something like modern GCC -- it's like night and day. We're able to build faster tinier software than we ever have before, and it really helps to illuminate the impact modern tools have had when we apply that advantage to something old we already know.
None of the games I play these days are CPU intensive so while I understand FPS is important to a large group of gamers I have never paid attention to it. Before clicking I thought "does frame rate really matter for Mario 64? How big of a difference can it make?" I'm absolutely blown away, I can't believe how smooth this looks. I don't know what else to say, I'm speechless. Stellar job. Vroom vroom.
High framerates are cool but often I wish more games had the option to cap framerate at 30/40/45 and use less battery/produce less heat instead of racing to 120fps.
Heh, but even then, 6x is still impressive. I doubt in 26 years you could optimize a tripe A title from today to the same extent. It seems that the vast majority of optimizations is actually achieved manually and not through Compiler magic and other modern tools. But then again maybe in 26 years we will have magic tools that will get the job done. ;)
There are ongoing projects by other people for Mario Kart 64, Goldeneye, Perfect-Dark, Banjo-Kazooie and others although I think the next target for completion may probably be either Majora's Mask or The Minish Cap.
Not on game consoles, and perhaps not even for PC games more generally (hedging my bets in case Walter Bright waltzes in and starts talking about how he wrote Empire in C in 1972 or something :P ). It wasn't until the mid-90s that C ate the game industry. Recall that C wasn't standardized until 1989, that C compilers weren't free or ubiquitous or good, that plenty of now-forgotten contemporaneous languages existed, and that making entire games in assembly was still quite popular and liable to get you better performance anyway.
He is planning to release the source code at a later date. He is waiting because the source code is intertwined with a ROM Hack he made, and he is unable to release the improvements without releasing the ROM Hack in an unfinished state.
The overhauled version will run on a real N64 as long as it has the RAM expansion pack.
It will run on a real N64 but it needs the memory expansion. So that's one thing he mentioned but people do gloss over. It (the extra memory) helped a lot in reducing memory contention between the CPU and the GPU.
Great work, but a significant fraction of the improvement comes from installing and using the 4MB RAM expansion pak, which isn’t really a fair comparison.
Very interesting video and it brought back a lot of nostalgia. At the time this came out I was blown away by it. Remember watching some kid play the bbomb level at the department store. Looking back as an adult I no longer feel the awe, but have the greater satisfaction of learning about the ram bus and low level programming considerations
I remember playing it at the store thinking we had reached the pinnacle of computer graphics, and that there was no way they could get better. Boy was I wrong! Still one of my favorite games of all time.
Does this mean that Nintendo could have theoretically shipped Mario 64 as a 60 Hz game on N64? I know some of this stuff requires the RAM expansion, but not all of it.
This is a serious amount of effort for what I imagine is little payout. I really enjoy work like this and hope that he is able to make a living off it.
Anyone have thoughts on how to make projects like this more sustainable?
Someone on HN once said, if you want to build a reputation and a brand, do interesting things and talk about it. This is the perfect example. No, this will not make him money because there is not a large market for superior Mario 64 performance, but you sure as hell know who he is now, don't you?
And I will say his youtube skills are top notch. The video is very entertaining and informative. I just cannot imagine this person will have trouble making money in the future.
This seems to clearly be a passion project. The author is being paid in the satisfaction that he gets in improving this famous game way beyond what the original creators managed to do, all while being bound by the same technical limitations. He also gets to show off his skills to a fairly large (in absolute numbers at least) global audience of people who are also really into this particular game. I doubt you would see someone going to such great lengths for an obscure title that few other people would appreciate or care about.
People often do things for their own merits and not just in exchange for money.
But the guy has a Patreon and this video already has a half a million views which should be at least $1000 in revenue, possibly 2-3x and it's still quite new.
Time of day and day of the week can impact such things.
Lastly, that's just the fickleness of social media sometimes. Sometimes a thing will take off and sometimes it won't.
A recent example is Among Us was released for 1+ year as almost a 'failure' with very little players. Received no major updates and just went by unnoticed until the right people pushed for a thing and now it's seeped into so many other things.
e.g. Among us player count https://i.imgur.com/M1j0UOw.png
At some point, these older games should be open source. They can follow the doom/quake model where textures/art aren't included, and Nintendo can also still sell the games on newer consoles for convenience because not everyone will want to compile it themselves
I guess you could argue a mario 64 custom levels mod competes directly with a new mario game. But halo and cod sell fine. Maybe I have a bias that thinks Nintendo is fearful that custom mods for old games will be more popular than anything new and official
[+] [-] Lerc|3 years ago|reply
Game consoles have had the benefit of the platform freezing for a few years allowing improvements to accumulate and later titles utilizing knowledge gained from the earlier titles.
Much of the software we use every day could benefit from this level of scrutiny but the pressure to deliver on time means we won't get to see such benefits unless it becomes a crazy persons labour of love.
[+] [-] egypturnash|3 years ago|reply
Wikipedia’s entry on SM64 tells me that the N64’s launch was delayed because Miyamoto wanted more time to polish the game. I don’t think a later release would have been possible. This was the flagship title, the system seller. Come play Mario. In 3d.
[+] [-] bscphil|3 years ago|reply
[+] [-] finnh|3 years ago|reply
Or there are valid business reasons to keep chipping away, in particular on performance-per-dollar problems at scale. If you're spending $1M/month on hardware to run something, each 10% win is worth enough to employ a couple senior engineers.
[+] [-] gernb|3 years ago|reply
[+] [-] giantrobot|3 years ago|reply
With that in mind, SM64 is a pretty impressive game for a console launch title. It makes good use of the N64 controller, performs well, and is pretty fun. It's not the best game of all time but it's definitely not a bad game.
[+] [-] phillipcarter|3 years ago|reply
[+] [-] infogulch|3 years ago|reply
[+] [-] butwhywhyoh|3 years ago|reply
[+] [-] astrange|3 years ago|reply
Of course, it's a way worse problem that they compiled at -O0.
[+] [-] jart|3 years ago|reply
[+] [-] pupppet|3 years ago|reply
[+] [-] Timpy|3 years ago|reply
[+] [-] antifa|3 years ago|reply
[+] [-] simooooo|3 years ago|reply
[+] [-] vmception|3 years ago|reply
[+] [-] iforgotpassword|3 years ago|reply
[+] [-] jccalhoun|3 years ago|reply
[+] [-] amatecha|3 years ago|reply
[+] [-] YesBox|3 years ago|reply
[+] [-] Gravyness|4 years ago|reply
[+] [-] Forgeties79|3 years ago|reply
[+] [-] soulbadguy|3 years ago|reply
[+] [-] nebula8804|3 years ago|reply
The game was reverse engineered as 1-1 compilable to the original rom.
[1]:https://github.com/n64decomp/sm64
Fun fact: The people who did this moved on to Zelda 64 Ocarina of time and recently completed that project as well
[2]:https://zelda64.dev/
There are ongoing projects by other people for Mario Kart 64, Goldeneye, Perfect-Dark, Banjo-Kazooie and others although I think the next target for completion may probably be either Majora's Mask or The Minish Cap.
[+] [-] BizarroLand|3 years ago|reply
[+] [-] tambourine_man|3 years ago|reply
In the 90s? It was 20 years old by then and mostly ruling the world already.
[+] [-] kibwen|3 years ago|reply
[+] [-] IntelMiner|3 years ago|reply
It's also apparently unclear if the overhauled version will run on a real N64 or if it only runs in an emulator
[+] [-] Quillbert182|3 years ago|reply
The overhauled version will run on a real N64 as long as it has the RAM expansion pack.
[+] [-] djmips|3 years ago|reply
[+] [-] sonicggg|3 years ago|reply
[+] [-] randomifcpfan|3 years ago|reply
[+] [-] fareesh|3 years ago|reply
[+] [-] lynguist|3 years ago|reply
[+] [-] darepublic|3 years ago|reply
[+] [-] gnutrino|3 years ago|reply
[+] [-] modeless|3 years ago|reply
[+] [-] arriu|3 years ago|reply
Anyone have thoughts on how to make projects like this more sustainable?
[+] [-] magpi3|3 years ago|reply
And I will say his youtube skills are top notch. The video is very entertaining and informative. I just cannot imagine this person will have trouble making money in the future.
EDIT: Added a missing word
[+] [-] eigenvalue|3 years ago|reply
[+] [-] colechristensen|3 years ago|reply
But the guy has a Patreon and this video already has a half a million views which should be at least $1000 in revenue, possibly 2-3x and it's still quite new.
[+] [-] panic|3 years ago|reply
[+] [-] jandrese|3 years ago|reply
[+] [-] tantalor|3 years ago|reply
[+] [-] Cloudef|3 years ago|reply
[+] [-] namrog84|3 years ago|reply
A recent example is Among Us was released for 1+ year as almost a 'failure' with very little players. Received no major updates and just went by unnoticed until the right people pushed for a thing and now it's seeped into so many other things. e.g. Among us player count https://i.imgur.com/M1j0UOw.png
[+] [-] vmception|3 years ago|reply
[+] [-] ydnaclementine|3 years ago|reply
I guess you could argue a mario 64 custom levels mod competes directly with a new mario game. But halo and cod sell fine. Maybe I have a bias that thinks Nintendo is fearful that custom mods for old games will be more popular than anything new and official