Changes

Jump to navigation Jump to search

Nintendo 64 emulators

35 bytes added, 11:52, 25 July 2018
Emulation issues: Simple video link for Factor 5 & tag for 'Texture Filtering'.
One of the biggest hurdles in the road to proper N64 emulation has been accurately emulating the N64's graphics hardware, known as the Reality Display Processor, itself a part of the N64's Reality Co-Processor. The N64's RDP was the first real 3D accelerator GPU on consoles. In fact, it was the most powerful consumer-grade GPU in the world at the time it came out. It is very hard to emulate all of its functions accurately due to the RDP's complexity & flexibility. In addition, many RDP functions have to be reproduced in software for accuracy, which takes a lot of processing power.
For this reason, most developers have instead opted to approximate the RDP's functions using high-level emulation (HLE) through various APIs such as Direct3D, OpenGL, and even Glide. While this results in much more reasonable system requirements for emulation, along with prettier, higher resolution graphics, this method can be hit and miss. It often requiring per-game tweaks and settings to prevent graphical glitches on many games. Some games implemented custom graphics microcode which had yet to be reverse-engineered. Although many or even all of them have already been implemented in HLE mode in 2016-2018 with dedicated work from GLideN64's lead programmer, gonetz, and one or two assistants.<ref name="gliden64_blog-1">{{cite web|url=https://gliden64.blogspot.com/2017/|title=Public Release 3.0|publisher=Blogspot|accessdate=2018-06-17|date=2017-12-29}}</ref><ref name="ZSortBOSS">{{cite web|url=https://github.com/gonetz/GLideN64/issues/1685#issuecomment-364436534|title=Initial implementation of BOSS ZSort ucode (WDC, Stunt Racer)|publisher=GitHub|accessdate=2018-06-17|date=2018-02-10}}</ref> For example, [https://youtu.be/HfCOnmRHI0o Factor 5]'s games do now work, specifically when using GLideN64 plugin's high-level graphics mode.<ref name="Indiegogo">{{cite web|url=https://www.indiegogo.com/projects/indiana-j-infernal-machine-high-level-emulation#/updates/all|title="Indiana J. & Infernal Machine" HLE|publisher=Indiegogo|accessdate=2018-06-17|date=2018-05-17}}</ref><ref name="gliden64_blog-2">{{cite web|url=https://gliden64.blogspot.com/2018/05/hle-implementation-of-microcodes-for.html|title=HLE implementation of microcodes for "Indiana Jones" and "Battle for Naboo" completed.|publisher=Blogspot|accessdate=2018-06-17|date=2018-05-26}}</ref> Other games may have issues with such RDP quirks as frame buffer/depth buffer access (issues with how the frame buffer is used as well as performance issues), VI emulation as well as issues with how combiner/blender modes are emulated (such as noise issues and combiner accuracy).
Low-level emulation can be handled in two ways, complete low level software emulation or a hybrid approach of LLE RDP emulation, which involves using graphics APIs to simulate the RDP while using low level RSP emulation to emulate the graphics microcode. Low level software emulation of the RDP involves replicating all RDP functionality in software, which allows for very high accuracy but can suffer from major performance issues unless optimizations such as vectorization and multi-threading are performed. Hybrid LLE emulation can allow for performance enhancement over low level software RDP emulation but can suffer from various problems due to things such as replicating the N64's numerous blending/combine modes, emulating frame buffer access and replicating how polygons are rasterized to the screen (due to how the RDP renders primatives on a low level).
</gallery>
===[[Texture filtering]]===
The N64 was the first console to feature texture filtering of any kind. However, unlike PC graphics hardware and every console after the N64, its implementation of bilinear texture filtering was unique, in that, in order to reduce strain on the system, it only used three samples as opposed to four, resulting in slightly jagged textures. Instead of faithfully applying this "imperfect" version of bilinear, HLE plugins instead apply conventional bilinear filtering, interpolating straight from the source texture up to the output resolution, much like on PC games. While technically this method of bilinear filtering is superior to the N64's, it can also result in textures that look even blurrier than on real hardware.
1,359
edits

Navigation menu