Optimized Super Mario 64 Offers Exciting Possibilities

When working on any software project, the developers have to balance releasing on time with optimizations. As long as you are hitting your desired time constraints, why not just ship it earlier? It’s no secret that Super Mario 64, a hotly anticipated launch title for the Nintendo 64 console in 1996, had a lot of optimizations left on the table in order to get it out the door on time. In that spirit, [Kaze Emanuar] has been plumbing the depths of the code, refactoring and tweaking until he had a version with¬†serious performance gains.

Why would anyone spend time improving the code for an old game that only runs on hardware released over two decades ago? There exists a healthy modding community for the game, and many of the newer levels that people are creating are more ambitious than what the original game could handle. But with the performance improvements that [Kaze] has been working on, your budget for larger and more complex levels suddenly becomes much more significant. In addition, it’s rumored that a multi-player mode was originally planned for the game, but Nintendo had to scrap the feature when it was found that the frame rate while rendering two cameras wasn’t up to snuff. With these optimizations, the game can now handle two players easily.

Luigi has been waiting 26 years for his chance to shine.

[Kaze] has a multi-step plan for improving the performance involving RAM alignment, compiler optimizations, rendering improvements, physics optimizations, and generally reducing “jankiness.” To be fair to the developers at Nintendo, back then they were working with brand new hardware and pushing the boundaries of what home consoles were capable of. Modeling software, toolchains, compilers, and other supporting infrastructure have vastly improved over the last 20+ years. Along the way, we’ve picked up many tricks around rendering that just weren’t as common back then.

The central theme of [Kaze]’s work is optimizing Rambus usage. As the RCP and the CPU have to share it, the goal is to have as little contention as possible. This means laying out items to improve cachability and asking the compiler to generate smaller code rather than faster code (no loop unrolling here). In addition, certain data structures can be put into particular regions of memory that are write-only or read-only to improve resource contention. Logic bugs are fixed and rendering techniques were improved. The initial results are quite impressive, and while he isn’t done, we’re very much looking forward to playing with the final product.

With the Nintendo 64 on its way to becoming a mainline-supported Linux platform, the old console is certainly seeing a lot of love these days.

Continue reading “Optimized Super Mario 64 Offers Exciting Possibilities”

Hackaday Links Column Banner

Hackaday Links: July 18, 2021

Tell the world that something is in short supply, and you can bet that people will start reacting to that news in the ways that make the most sense to them — remember the toilet paper shortage? It’s the same with the ongoing semiconductor pinch, except that since the item in short supply is (arguably) more valuable than toilet paper, the behavior and the risks people are willing to take around it are even more extreme. Sure, we’ve seen chip hoarding, and a marked rise in counterfeit chips. But we’d imagine that this is the first time we’ve seen chip smuggling quite like this. The smuggler was caught at the Hong Kong-Macao border with 256 Core i7 and i9 processors, valued at about $123,000, strapped to his legs and chest. It reminds us more of “Midnight Express”-style heroin smuggling, although we have to say we love the fact that this guy chose a power of 2 when strapping these babies on.

Speaking of big money, let’s say you’ve pulled off a few chip heists without getting caught, and have retired from the smuggling business. What is one to do with the ill-gotten gains? Apparently, there’s a big boom in artifacts from the early days of console gaming, so you might want to start spreading some money around there. But you’d better prepare to smuggle a lot of chips: last week, an unopened Legend of Zelda cartridge for the NES sold for $870,000 at auction. Not to be outdone, two days later someone actually paid $1.56 million for a Super Mario 64 cartridge, this time apparently still in the tamperproof container that displayed it on a shelf somewhere in 1996. Nostalgia can be an expensive drug.

And it’s not just video games that are commanding high prices these days. If you’ve got a spare quarter million or so, why not bid on this real Apollo Guidance Computer and DSKY? The AGC is a non-flown machine that was installed in LTA-8, the “lunar test article” version of the Landing Module (LM) that was used for vacuum testing. If the photos in the auction listing seem familiar, it’s with good reason: this is the same AGC that was restored to operating condition by Carl Claunch, Mike Stewart, Ken Shiriff, and Marc Verdiell. Sotheby’s estimates the value at $200,000 to $300,000; in a world of billionaire megalomaniacs with dreams of space empires, we wouldn’t be surprised if a working AGC went for much, much more than that.

Meanwhile, current day space exploration is going swimmingly. Just this week NASA got the Hubble Space Telescope back online, which is great news for astronomers. And on Mars, the Ingenuity helicopter just keeps on delivering during its “operations demonstration” mission. Originally just supposed to be a technology demonstration, Ingenuity has proven to be a useful companion to the Perseverance rover, scouting out locations of interest to explore or areas of hazard to avoid. On the helicopter’s recent ninth flight, it scouted a dune field for the team, providing photographs that showed the area would be too dangerous for the rover to cross. The rover’s on-board navigation system isn’t great at seeing sand dunes, so Ingenuity’s images are a real boon to mission planners, not to mention geologists and astrobiologists, who are seeing promising areas of the ancient lakebed to explore.

And finally, most of us know all too well how audio feedback works, and all the occasions to avoid it. But what about video feedback? What happens when you point a camera that a screen displaying the image from the camera? Fractals are what happens, or at least something that looks a lot like fractals. Code Parade has been playing with what he calls “analog fractals”, which are generated just by video feedback and not by computational means. While he’d prefer to do this old school with analog video equipment, it easy enough to replicate on a computer; he even has a web page that lets you arrange a series of virtual monitors on your screen. Point a webcam at the screen, and you’re off on a fractal journey that constantly changes and shifts. Give it a try.

Cosmic Ray Flips Bit, Assists Mario 64 Speedrunner

We’ve all heard about cosmic rays flipping bits here and there, but by and large, it occurs rarely enough that we don’t worry too much about it on a day-to-day basis. However, it seems just such a ray happened to flip a crucial bit that assisted a speedrunner in the middle of a competition.

The flip happened to [DOTA_Teabag], who suddenly found Mario flying upward to a higher part of a level, completely unexpectedly. Testing by [pannenkoek12] seems to indicate that this may have been due to a single-bit change to Mario’s height value, from C5837800 to C4837800, leading to the plucky Italian plumber warping upwards through the level. The leading theory is that this bit flip was caused by a cosmic ray event, though the likelihood of such an event is exceedingly rare.

It’s possible that there remains another cause for the flip, though after much work from the community replicating the situation in emulation, none has been found. Other suggestions involve electrical noise or other malfunctions causing the flip, though one would rarely expect such an occurrence to change just one bit of RAM. For now, the jury remains out, but who knows – maybe in the future we’ll find out it was a hidden, undiscovered exploit all along. Of course, if Nintendo doesn’t get you going, try speedrunning Windows 95.¬† Video after the break.

Continue reading “Cosmic Ray Flips Bit, Assists Mario 64 Speedrunner”

Super Mario 64 As Experienced By Mario

Microsoft’s Kinect, a motion-sensing peripherial originally for the Xbox 360, is almost exactly a decade old now. And in that decade it has expanded from its limited existence tied to a console to a widely-used tool for effective and detailed motion sensing, without breaking the bank. While it’s seen use well outside of video games, it’s still being used to reimagine some classic games. In this project, Reddit user [SuperLouis64] has used it to control Mario with his own body.

While the build still involves some use of a hand controller, most of Mario’s movements are controlled by making analogous movements on a small trampoline, including the famed triple jump. The kinect is able to sense all of these movements and translate them into the game using software that [SuperLouis64] built as well. The trickiest movement seems to be Mario’s spin movement, which appears to have taken some practice to get right.

We appreciate the build quality on this one, and [SuperLouis64]’s excitement in playing the game with his creation. It truly looks like a blast to play, and he even mentions in the Reddit thread that he’s gotten a lot of productive excercise with his various VR and augumented reality games in the past few months. Of course if this is too much physical activity, you could always switch to using your car as the unique game controller instead.

Continue reading “Super Mario 64 As Experienced By Mario”