9 ms·
Super Mario 64 for the PS1
- schlauerfox 9mo agoThere is an explosion of decompilation projects spawning new ports, but was there something that enabled better decompilations? I see it across many retro games.
- coro_1 9mo agoAI
- arcanemachiner 9mo agoAI what?
- DrewADesign 9mo agoAye, AI.
- barbs 9mo agoPerhaps AI has made it easier?
- spicyjpeg 9mo agoIt has been enabled mainly by the the advent of streamlined tooling to assist with 1:1 byte-by-byte matching decompilations (https://decomp.me/ https://decomp.me/ comes to mind), which allows new projects to get off the ground right away without having to reinvent basic infrastructure for disassembling, recompiling and matching code against the original binary first. The growth of decompilation communities and the introduction of "porting layers" that mimic console SDK APIs but emulate the underlying hardware have also played a role, though porting decompiled code to a modern platform remains very far from trivial. That said, there is an argument to be made against matching decompilations: while their nature guarantees that they will replicate the exact behavior of the original code, getting them to match often involves fighting the entropy of a 20-to-30-year-old proprietary toolchain, hacks of the "add an empty asm() block exactly here" variety and in some cases fuzzing or even decompiling the compiler itself to better understand how e.g. the linking order is determined. This can be a huge amount of effort that in many cases would be better spent further cleaning up, optimizing and/or documenting the code, particularly if the end goal is to port the game to other platforms.
- userbinator 9mo agoMore people have discovered Ghidra.
- musha68k 9mo agoAmazing feat. I was a very happy owner of both consoles back in the day, and this port clearly shows how much the N64 brought that "SGI at home" feel in mid‑1996; at least until Voodoo 1 / QuakeGL, maybe even up to Unreal (Glide) or Sonic Adventure on DC? I still remember gasping when I first saw the basically unattainable (for me) Japanese‑import N64 running Mario 64. Such an interesting and varied gaming landscape back then; for example, the Wipeout experience on PSX was beyond the N64 port in that particular niche, for its own set of reasons.
- masfoobar 9mo agoBeing a teenager, I honestly viewed the N64 (Ultra 64) as being an unstoppable force during the early news. We even had a 486 PC running Doom since the early-to-mid 90s. LOL. I couldn't wait to see what Doom would be like on the N64. In typical fanboyism, I viewed the main SGI systems are the superior systems to the N64.. but they were for the office.. not the home. The other was Panasonic M2. Of course.. either the N64 was released in the UK or not far away, I remember walking into PC World (a cool computer shop at the time) with a demo of Tomb Raider. I believe it was running a Voodoo1 card and the realisation kicked in. The N64 is already surpassed. Wasn't long before we had a Voodoo2 card and the first game we played was a demo of Turok:Dinosaur Hunter. It was much better than the N64 version (which I owned) Once I started playing GLQuake it was a PC master race. It was at this point I snapped out being a Nintendo 'fanboy' and accept that hardware gets you so far... its the games that make a console. I still think the N64 was a great console. Goldeneye, Ocarina of Time, etc. Great memories. Also got a Gamecube, Wii, and Switch. As I got older and snapped out of the fanboyism, I realised the Playstation was a good console. I am on the fence with the Cartridge vs CD argument. There are cases for both. If we look at Mario 64, many aspects worked well on Cartridge. I guess faster load times and transition of music. With CD.. you have CD quality music and more variation of textures and level design (generally speaking) Putting all the aside, Playstation is just as much capable of doing a good Super Mario 64 port despite the (many like) PS1 jaggy polygons.
- peterbozso 9mo agoCool stuff! Make sure to also check: https://sm64coopdx.com https://sm64coopdx.com Recently we are having tons of fun with this with a couple of friends.
- BugsJustFindMe 9mo agoNo screenshots :(
- Larrikin 9mo agoAre there any pictures or video of it running? I understand why they are not on the GitHub page
- ranger_danger 9mo agohttps://www.youtube.com/watch?v=6f92hKbz5Eo https://www.youtube.com/watch?v=6f92hKbz5Eo
- zamadatix 9mo agoFor those that prefer pure gameplay to skip through https://youtu.be/kkJWZlAjZp0 https://youtu.be/kkJWZlAjZp0
- threethirtytwo 9mo agoThis is emulated as I'm sure the other videos are, but the PS1 back in the day had no way of running anything this crisp, so the emulator is `enhancing` it here. It's not an actual representation of what the game would have looked like.
- zamadatix 9mo agoIt doesn't really work right on "normal" PS1s yet, at least when it was making the rounds a few weeks ago, so you need either an emulator or modded/dev PS1 with more RAM to prevent crashes and most people won't have the latter https://www.reddit.com/r/psx/comments/1p45hrm/comment/nqjtdpi/ https://www.reddit.com/r/psx/comments/1p45hrm/comment/nqjtdp.... Probably shared a few months to early. But yeah, on a "real" PS1 it would be blockier due to lower res. The main rendering problems should be the same though.
- malucart 9mo agonah, it's not even configured to use the extra RAM, though there is a compile option for that. seems like the freeze was some sort of bug in the tessellation code, but I'm rewriting that part, so the bug is gone now. it should be working fine on hardware after I publish the changes.
- ranger_danger 9mo agoThere was also just recently a Dreamcast port made, as well as Star Fox 64 for Dreamcast and also Mario Kart 64 for multiple platforms. https://github.com/CharlotteCross1998/awesome-game-decompilations https://github.com/CharlotteCross1998/awesome-game-decompila...
- bena 9mo agoThey just finished a Star Fox 64 port as well
- zamadatix 9mo agoIf you like this port, you may also enjoy this ground-up effort to clone SM64 on the GBA https://youtu.be/nS5rj80L-pk https://youtu.be/nS5rj80L-pk
- giancarlostoro 9mo agoInteresting, I'm wondering if the GBA could handle a light version of a Minecraft style game, but the N64 looks like it could be great at it too. I need to get me a SummerCart64 one of these days and experiment with my old N64.
- maximilianburke 9mo agoProbably. There's Tomb Raider for the GBA via OpenLara: https://www.youtube.com/watch?v=_GVSLcqGP7g https://www.youtube.com/watch?v=_GVSLcqGP7g
- lbrito 9mo agothis guy builds a very similar engine https://www.youtube.com/@3DSage/videos https://www.youtube.com/@3DSage/videos
- takantri 9mo agoClassiCube (https://github.com/ClassiCube/ClassiCube https://github.com/ClassiCube/ClassiCube) exists, which is an open-source Minecraft Classic reimplementation with an N64 port among dozens of others. HN discussed it two years ago (https://news.ycombinator.com/item?id=37518874 https://news.ycombinator.com/item?id=37518874). ClassiCube has a WIP GBA port, but according to commits it only hits 2 FPS as of now and is not listed in its README. On a related tangent, there's also Fromage, a separate Minecraft Classic clone written for the PS1 (https://chenthread.asie.pl/fromage/ https://chenthread.asie.pl/fromage/).
- alexisread 9mo agoRelated to this is the Atari Falcon port of Minecraft using a sparse voxel octree, might work for the GBA seeing as the Quake ports are similar performance-wise: https://www.youtube.com/watch?v=nHsgdZFk22M https://www.youtube.com/watch?v=nHsgdZFk22M
- amlib 9mo ago> Tessellation (up to 2x) to reduce issues with large polygons From the videos I've watched there is still insane amounts of affine transformation texture warping, is that because it's not enable or because 2x is not enough? I guess they will need to also redo all level geometry to be more amenable to tesselation... I guess that's why many ps1 games had blocky looking levels.
- wk_end 9mo agoIt notes in the Known Issues section that "Tessellation is not good enough to fix all large polygons". Maybe it just needs more tessellation or something else is going on, because you're right - even as someone who grew up on the PS1 and is accustomed to early 3D jank, it looks painfully janky.
- mewse-hn 9mo agoI see a lot of texture warp like you mentioned but I'm not seeing the geometry popping (wobble?) that was a hallmark of ps1 games, I'm guessing they're using soft floating point for the geometry and doing perspective-correct texture mapping would just be too expensive for decent frame rate
- wk_end 9mo agoThe README mentions that it uses both (new) fixed point as well as soft floating point. Unless I'm mistaken, the PS1 just plain doesn't support perspective correction. All texture mapping is done in hardware using a very not-programmable GPU; there'd be no way to do perspective correction, decent frame rate or not, outside of software rendering the whole thing (which would be beyond intractable). The common workaround for this was, as suggested, tessellation - smaller polygons are going to suffer less from affine textures. Of course that does up your poly count.
- spicyjpeg 9mo agoThe PS1's GPU does not support perspective correction at all; it doesn't even receive homogeneous 3D vertex coordinates, instead operating entirely in 2D screen space and leaving both 3D transformations and Z-sorting to the CPU [1]. While it is possible to perform perspective correct rendering in software, doing so in practice is extremely slow and the few games that pull it off are only able to do so by optimizing for a special case (see for instance the PS1 version of Doom rendering perspective correct walls by abusing polygons as "textured lines" [2]). [1]: https://github.com/spicyjpeg/ps1-bare-metal/blob/main/src/08_spinningCube/main.c#L286-L301 https://github.com/spicyjpeg/ps1-bare-metal/blob/main/src/08... - bit of a shameless plug, but notice how the Z coordinates are never sent to the GPU in this example. [2]: https://fabiensanglard.net/doom_psx/index.html https://fabiensanglard.net/doom_psx/index.html
- itomato 9mo ago“Finally, Super Mario 32”
- mywittyname 9mo agoObligatory mention of Kaze, who has spent the past several years optimizing Mario64 using a variety of interesting methods. Worth a watch if your interests are at the intersection of vintage gaming and programming. https://www.youtube.com/@KazeN64 https://www.youtube.com/@KazeN64
- extraduder_ire 9mo agoI was just about to post his video from August explaining how much excess ram mario 64 uses and where, which was the first serious mention I saw of a ps1 port being possible. He uses the ps1's smaller ram size as a kind of benchmark. I did not expect it to happen so soon. https://www.youtube.com/watch?v=oZcbgNdWL7w https://www.youtube.com/watch?v=oZcbgNdWL7w - Mario 64 wastes SO MUCH MEMORY
- malucart 9mo agoI've been working on it since mid 2024, so that video was a funny coincidence :)
- eru 9mo agoHe's great. (And ripped!) I wonder what someone who has PS1 knowledge equivalent to Kaze's N64 knowledge could do on that console---perhaps using Mario 32 as the benchmark. (Mario 32 = Mario 64 on PS1.)
- aussieguy1234 9mo agoAnd they said it could never be done
- SpaceManNabs 9mo agothis is the devil's work. nicely done. what stood out to me is that one of the known issues is the pause menu not working. wonder why that is. edit: whoever did the gameplay video is really good at mario n64. They were playing to and reacting to stuff that had rendered very late, if at all.
- wodenokoto 9mo agoLots of people complaining that this has warped textures and whatnot - but come on! This is amazing!