Emulation Know-How
N64 Graphics & Audio Emulation
Unlike most PC hardware at the time the Nintendo 64 has the advantage of having its own stand alone graphics processor known as the Reality Co-Processor (RCP). This freed up the main CPU from having to do any graphics calculations and it could use all its processing power for the main game logic.
The RCP is actually split into two distinct parts one for the Geometry transformations known as the Reality Signal Processor (RSP) and the other for the Per-pixel calculations known as the Reality Display Processor (RDP):
-
The N64 Reality Display Processor (RDP) is used to render the Nintendo 64’s game polygons into 2D pixels that it stores in the FrameBuffer ready to be displayed on the screen.
-
The N64 Reality Signal Processor (RSP) is the part of the Reality Co-Processor that deals with data transform. It is a MIPS-based cpu like the main R4000 cpu but it also contains additional 8-bit vector opcodes. The RSP is not only used for the games graphics, it is also used for the games audio and so the developers need to have a balance between time spent for graphics processing and time spend for audio processing on the RSP. The RSP is where all the low-level audio processing is done, decoding the audio sample data and passing it on to be played through TV speakers.
There are different options available for emulating both RDP and RSP in N64 emulators. You can choose a more accurate way via LLE (Low Level Emulation) or use a more performant method via HLE (High Level Emulation). The following are the most common combinations of HLE and LLE plugins:
TYPE | API | RSP | RDP |
---|---|---|---|
LLE | Vulkan | ParaLLEl-RSP | ParaLLEl-RDP |
LLE | Software | ParaLLEl-RSP | Angrylion RDP Plus |
HLE | OpenGL | Mupen64Plus HLE RSP | GLideN64 |
N64 Dithering Emulation
RDRAM image dithering and shader dithering are mostly independent of each other. Native res + shader dithering provides authentic look, and no post processing is required.
- DitheringPattern: shader dithering is per-polygon and controlled by game.
- RDRAMImageDitheringMode: RDRAM image dithering is post-processing, dithering method controlled by user or hardcoded. The only case when shader dithering overrides RDRAM image dithering is "native res + shader dithering are both enabled".
- DitheringQuantization: quantization converts RGB to RGB555 and 8Bit alpha to 5Bit alpha if dithering is used. So in theory it should look worse, because you loose precision. On the other hand it looks right, because real hardware is doing the same thing.
Based on the above info, the most authentic look is:
- DitheringPattern = "True"
- DitheringQuantization = "True"
- RDRAMImageDitheringMode = "False"
Please do note that the above configurations will impact the system performance