Top
Best
New

Posted by LaserDiscMan 7 hours ago

Super Mario 64 for the PS1(github.com)
172 points | 58 comments
zamadatix 7 hours ago|
If you like this port, you may also enjoy this ground-up effort to clone SM64 on the GBA https://youtu.be/nS5rj80L-pk
kibwen 5 hours ago||
Given that this is HN, I'm contractually obligated to mention that the GBA port is written in Rust: https://www.digitec.ch/en/page/the-impossible-port-super-mar...
giancarlostoro 5 hours ago|||
Interesting, 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.
takantri 36 minutes ago|||
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).

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/).

maximilianburke 4 hours ago||||
Probably. There's Tomb Raider for the GBA via OpenLara: https://www.youtube.com/watch?v=_GVSLcqGP7g
lbrito 3 hours ago|||
this guy builds a very similar engine https://www.youtube.com/@3DSage/videos
no_wizard 5 hours ago|||
While this is cool, it is really hard to look at for me.

Still bravo! I know getting it working and complete is the real goal and it is commendable.

throwaway314155 5 hours ago||
> it is really hard to look at for me.

What were you expecting?

whizzter 3 hours ago|||
Affine texture mapping is kinda jarring to look at, especially in this GBA port since there is no fixup with huge ground polygons drifting around.

One of the listed features in the PS1 port in the OP article is tesselation to reduce the issues of the PS1 HW affine texture mapper, on the GBA you have some base cost of doing manual software texture mapping but also oppurtunities to do some minor perspective correction to lessen the worst effects (such as doing perspective correction during the clipping process).

zamadatix 1 hour ago|||
The GBA version does actually leverage dynamic polygon splitting in direct reference to how PS1 games used this approach https://www.youtube.com/watch?v=1Oo2CZWbHXw&t=271s

I think the resolution makes it particularly rough though.

le-mark 3 hours ago|||
I am probably misremembering but wasn’t super Mario 64 “flat shaded” ie no textures just colors?
wk_end 3 hours ago|||
You’re misremembering. SM64 was fully textured, outside of specific models.

Also flat shading (vs. say gouraud shading) is isomorphic to the question of texture mapping, and concerns how lighting is calculated across the surface of the polygon. A polygon can be flat shaded and textured, flat shaded and untextured, smoothly shaded and textured, or smoothly shaded and untextured.

wk_end 32 minutes ago||
(Too late to edit but did not mean “isomorphic”, meant “orthogonal”. Wrong smart person word trying to look smart, how embarrassing, sigh.)
mikepurvis 2 hours ago|||
Like a lot of N64 titles, there were many solid colour objects to save on RAM, but lots of things in the environment especially were textured too.
no_wizard 1 hour ago|||
Nothing. I have zero expectations. Giving an honest take on what I saw is all.
ddtaylor 4 hours ago||
Does anyone know where the source to this is? It seems to have been nuked.
Larrikin 7 hours ago||
Are there any pictures or video of it running? I understand why they are not on the GitHub page
platevoltage 6 hours ago||
here's another video that showed good gameplay shots that I happened to see last night.

https://www.youtube.com/watch?v=kscCFfXecTI

ginko 6 hours ago|||
The distorted textures and weird triangle clipping issues are exactly what you'd expect from an unoptimized port to a platform that doesn't support perspective correct texturing or depth testing.
LarsDu88 4 hours ago|||
John carmack complained about this same issue for the Playstation DOOM port: page 337 https://fabiensanglard.net/b/gebbdoom.pdf

Playstation rendered with affine texturing which made it impossible to get perspective correct rendering without hacks. The porting team ultimately did a very interesting hack where they would use polygons to render 1 pixel wide strips effectively simulating how non-hardware (that is CPU-based/integer) acclerated rendering was done on the PC.

bluedino 4 hours ago||||
It looks pretty decent but seeing the texture warping and glitching reminds me of why I was team N64
krispyfi 1 hour ago|||
I had the opposite reaction. As someone who was on team PSX, the wobbly jank is pleasingly nostalgic. Didn't someone say that the limitations and artifacts of the obsolete media of the past become the sought-after aesthetics of the future?
mpyne 33 minutes ago||
They are certainly sometimes a key part of the retro look that makes things nostalgic.

But even during the PSX era I found it distracting and annoying to look at so I can't say I have any nostalgia for it even now in the way I do for N64-style low-poly 3-D games or good pixel art.

01HNNWZ0MV43FF 3 hours ago|||
The N64 definitely has the nicer GPU of the two. An N64 with a CD-ROM drive would have been amazing.
klipklop 1 hour ago||
And a bit more texture memory!
anthk 5 hours ago|||
That was an issue in tons of PSX games.
vereis 5 hours ago||
yeah this is the distinctive ps1 look I think all games look like this, at least polygonal games
zoeysmithe 5 hours ago|||
Its incredible to how compltely unwatchable modern youtube norms are, to me at least. I feel like youtubers now aim almost exclusively for the 12-18 demographic. I mean, this person is doing some kind of character or affectation instead of using a normal voice. Everything is some kind of grift or character or PR or persona now it seems. I understand they do this to get viewers, but its just depressing how much more content I'd enjoy if the PR gimmicks and lowest-common-denominator tricks were stopped.

I just saw techtips Linus interview Linus Torvalds and the constant manboying and bad jokes was just embarrassing and badly hurt the interview. I really wish people like this would turn it way, way down. I think we all love some levity and whimsy, but now those gimmicks are bigger and louder than the actual content.

viraptor 2 hours ago|||
Torvalds didn't hold back either though, so not sure what the complaint is... If you watch some WAN you'll see you're not getting some weird persona in that video, just the same guy with a bit of extra energy - which is just what you want to do for presentations / shows / whatever. It was a genuine experience.
kanzure 5 hours ago||||
To me this sounds like a computer-generated voice for obvious pro-privacy reasons for this kind of project. If it bothers you, then maybe work on better voice synthesis tech! I assume it sounds not-leading-generation because it was locally rendered but I could be wrong.
brailsafe 5 hours ago|||
> I just saw techtips Linus interview Linus Torvalds and the constant manboying and bad jokes was just embarrassing and badly hurt the interview.

If you've been watching LTT for any amount of time, it wouldn't be surprising that that's just LTT Linus' nervous awkward style, he's just a person. The jokes can be cringe as hell, but I thought the video was great, I don't think most nerds would be any different in front of a camera.

ranger_danger 7 hours ago||
https://www.youtube.com/watch?v=6f92hKbz5Eo
zamadatix 7 hours ago||
For those that prefer pure gameplay to skip through https://youtu.be/kkJWZlAjZp0
threethirtytwo 6 hours ago||
This 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 5 hours ago|||
It 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/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 4 hours ago||
nah, 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.
anthk 4 hours ago|||
CRT's smoothed out the image a little bit. Also, the screens were much smaller back in the day.
amlib 6 hours 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.

malucart 5 hours ago||
right now there is basically no preprocessing of level polygons and they are copied as is, but when it is implemented, the largest polygons will be split to solve this

this is also necessary to fix the occasional stretched textures, as texture coordinates are also limited to a smaller range per polygon on PS1

mewse-hn 5 hours ago|||
I 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
spicyjpeg 5 hours ago|||
The 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... - 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

LarsDu88 4 hours ago||
Darn I posted the same thing in another thread
wk_end 5 hours ago||||
The 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.

malucart 5 hours ago|||
it's not possible to have either subpixel vertex precision or perspective correct mapping with the PS1 GPU, as it only takes 2D whole-pixel coordinates for triangle vertices. (contrary to popular belief, N64 also uses exclusively fixed point for graphics btw, it just has subpixel units.) better tessellation can mitigate the perspective issues by a lot, but the vertex snapping is unsolvable, and it is indeed present here. look closer and you might see it.
wk_end 5 hours ago||
It 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.

schlauerfox 1 hour ago||
There is an explosion of decompilation projects spawning new ports, but was there something that enabled better decompilations? I see it across many retro games.
spicyjpeg 35 minutes ago||
It has been enabled mainly by the the advent of streamlined tooling to assist with 1:1 byte-by-byte matching decompilations (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.

barbs 1 hour ago|||
Perhaps AI has made it easier?
coro_1 1 hour ago||
AI
DrewADesign 50 minutes ago|||
Aye, AI.
arcanemachiner 1 hour ago|||
AI what?
mywittyname 5 hours ago||
Obligatory 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

BugsJustFindMe 7 hours ago||
No screenshots :(
ranger_danger 7 hours ago||
There 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-decompila...

bena 6 hours ago|
They just finished a Star Fox 64 port as well
itomato 5 hours ago||
“Finally, Super Mario 32”
aussieguy1234 4 hours ago||
And they said it could never be done
SpaceManNabs 4 hours ago|
this 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.