
Accurate N64 emulation gets resolution upscaling powered by Vulkan (RetroArch) - libretro
https://www.libretro.com/index.php/coming-soon-parallel-n64-rdp-resolution-upscaling-video-demonstration/
======
monocasa
I'd love to see how it does in Perfect Dark a few seconds after that
screenshot was taken.

There's a part in the hallway to the left where you fly a little drone into a
laboratory to take a picture. It's one of the traditionally hard places to
emulate for these sorts of emulation strategies that abstract the graphics
output from the memory pathway of the real system. That's because the effect
to make it look like a security camera that would happen these days as a post
process fragment shader, is instead done on the main CPU, just reading and
writing to the framebuffer. So the GPU emulation actually needs to write out
the framebuffer at the correct format/resolution. And then you have to read
the framebuffer from memory, not short circuited out of the GPU directly like
is the core of how this is designed to get it's benefits.

~~~
anthk
Similar to Pokémon Snap them.

~~~
artsyca
And Mario kart! Greets to all of my 64-heads! Man I still remember the late
90's.. Not a care in the world saving up all my money to buy the next
cartridge..

~~~
monocasa
The Mario Kart example is interesting, because you can achieve it's effect by
simply teeing off the GPU output both to RAM (scaled down to native) and
directly scanned out.

The neat thing about the perfect dark effect is that they read modify write
the entire framebuffer and it represents the full scanned out frame, so in
those cases you'd need to drop scan out resolution back down dynamically,
where as on the Mario Kart example you can keep the higher scan out
resolution.

------
TazeTSchnitzel
I wish people would stop referring to increased internal resolution in
emulators as “upscaling”. There is no
upscaling/resampling/interpolation/filtering happening here, it's just
rendering at a higher resolution than on the original console. Referring to it
as “upscaling” makes it sound like post-processing applied to a low-resolution
image, like on an upscaling DVD or Blu-ray player or NVidia's DLSS, which is
not what is happening here.

~~~
rowanG077
This. I read upscaling and my interest dropped. If I increase the resolution
the game renders at it's not upscaling it's rendering at a higher resolution.

------
gnyman
If you happen to have a old N64 lying around, or can find one to buy, there
are also great options for getting it working with a new TV.

The RAD2X being a easy way to get started
[https://www.retrogamingcables.co.uk/RAD2X-CABLES](https://www.retrogamingcables.co.uk/RAD2X-CABLES)
In combination with refurbishing the original controllers with some new
plastic [https://store.kitsch-bent.com/product/n64-joystick-
gears](https://store.kitsch-bent.com/product/n64-joystick-gears) you and maybe
a everdrive you can enjoy the original experience without too much work.

Still.. It can't increase the original resolution like this, this is just
gorgeous... And so sharp

~~~
p1necone
One of the most important things those cables do is bypass the N64s built in
blur filter. This was basically a unique thing to the N64 in that generation
and it really is just a blurring of the video output, like you've smeared
vaseline on your screen.

Maybe it made sense on the already kinda distorted consumer TVs of the day as
a kind of primitive anti aliasing, I think it's horrible though.

[https://www.youtube.com/watch?v=QDiHgKil8AQ](https://www.youtube.com/watch?v=QDiHgKil8AQ)

~~~
simias
The N64 really is blur central, because of this post-processing you point out
but also because of the severe texture limitations (and primitive kinda-
bilinear-but-not-really filtering they used) meant that you had small
resolution textures stretched onto massive polygons. The fact that cartridge
ROM space was also expensive didn't help since few cartridges went above 32MB
(I think the biggest official N64 ROMs use 64MB cartridges, but those were
pretty rare). Meanwhile a CD could hold one order of magnitude more data at no
additional cost.

As a result I subjectively find that despite having significantly weaker
hardware, no perspective correction and no subpixel-precision PSX games often
end up looking a lot more impressive. And that's got a lot to do with the
incredible texture work these games use:
[https://www.mobygames.com/images/shots/l/243918-vagrant-
stor...](https://www.mobygames.com/images/shots/l/243918-vagrant-story-
playstation-screenshot-intro-with-in-game-graphics.jpg)

~~~
magicalist
> _As a result I subjectively find that despite having significantly weaker
> hardware, no perspective correction and no subpixel-precision PSX games
> often end up looking a lot more impressive. And that 's got a lot to do with
> the incredible texture work these games use:_
> [https://www.mobygames.com/images/shots/l/243918-vagrant-
> stor...](https://www.mobygames.com/images/shots/l/243918-vagrant-story-
> playstation-screenshot-intro-with-in-game-graphics.jpg)

OTOH, Vagrant Story came very late in the PS1's life (the PS2 came out like a
month later), that's from an in-engine cinematic scene, the texture swimming
issues aren't really noticeable in a screenshot, and it's hard to say for
sure, but that may be a screenshot from an emulator.

The real experience was a bit more like
[https://www.youtube.com/watch?v=5GVE4a8ULww&t=912](https://www.youtube.com/watch?v=5GVE4a8ULww&t=912)
(screenshot is from around 15:13).

Still pushing the hardware to the max, but games in a similar part of the
n64's lifecycle (especially the ones requiring the expansion pak, Majora's
Mask, Banjo-Tooie, Perfect Dark) also look pretty remarkable for the time.

~~~
p1necone
I'm pretty certain that first screenshot is from an emulator - it's too high
res (and too clean) to be a capture from real hardware.

------
dahfizz
Can someone explain the advantage of increasing the native resolution vs
upscaling after rendering?

For something like a photograph, you want as high a 'native resolution' as
possible, so that there is as much information as possible in the original
image. But for old video games, the assets and textures are still the same. Is
this a bit like taking a high megapixel photo of a low quality print? Or is my
understanding wrong?

I'm sure things like AA work better in the native renderer. Are there other
advantages?

~~~
Polylactic_acid
I don't know the details of this project but I have seen emulators use
processes more complex than a basic image upscale to get really nice results
out of low resolution textures. I think its similar to those anime upscailing
tools where its trained on a dataset of textures and is able to redraw them at
higher resolutions.

~~~
saagarjha
Sadly, those techniques aren’t nearly fast enough to work for emulation.

~~~
rossy
You'd be surprised at what image processing algorithms are fast enough to work
in realtime when they have optimised GPU implementations. Anime4K is one of
those CNN-based anime upscaling tools, and it can run in realtime as a shader
in mpv. (I'm not a fan of those upscaling tools myself, but I don't see why
they couldn't be used in emulators, for the people who like them.)

------
Pfhreak
Are there examples of before/after shots? My memory of these games is a little
fuzzy and tinged with nostalgia. The images feel crisper than I remember the
games being, but it would be great to see a side by side example.

------
Causality1
HLE has had increased internal resolution for many years now. What's the
advantage of implementing in in an LLE fashion?

~~~
p1necone
Higher accuracy, mostly. The closer you get to the behavior of the real
hardware the less game specific hacks you have to have to make everything look
correct.

------
FillardMillmore
Unfortunately, doesn't look like there's a Mac version in the works. It's
awesome that people are still working on this kind of stuff though. I somewhat
wish there were equivalent screenshots of the games as seen with the original
resolution for comparative purposes.

~~~
coldpie
Request your OS developer to support the modern graphics API that the rest of
the industry already does, instead of lodging their heads firmly up their own
asses to justify re-inventing this wheel.

~~~
proverbialbunny
OSX does support Vulkan.

~~~
coldpie
You mean MoltenVK? It's not an official Apple project and it lags pretty far
behind Vulkan on other platforms.

~~~
proverbialbunny
No, OSX supports Vulkan.

[https://www.lunarg.com/benefits-of-the-vulkan-macos-
sdk/](https://www.lunarg.com/benefits-of-the-vulkan-macos-sdk/)

[https://vulkan.lunarg.com/](https://vulkan.lunarg.com/)

~~~
proverbialbunny
edit: I was wrong. My apologies.

------
Animats
The effect is kind of strange. Some things get upscaled and others don't. The
icons retain their original jaggedness. Low-detail background objects are not
sharpened. Only the main character seems to get a full resolution upgrade.
Does this use some anime character specific algorithm?

~~~
nemetroid
The textures are unchanged, so texture details will stay blurry. However,
Mario mostly has flat textures with detail given by Gouraud shading, which is
more amenable to upscaling.

~~~
MaxBarraclough
There's been a Super Mario 64 texture pack for years now. Presumably it would
be possible, but not trivial, to combine it with this new project.

[0] [https://youtu.be/a1vnSHMjuuA?t=72](https://youtu.be/a1vnSHMjuuA?t=72)

------
orionblastar
Star Wars Rogue Squadron runs choppy in the previous emulators. I wonder if
this is the fix for it?

