The Nintendo 64 has always been a difficult machine to emulate correctly. But in 2025 - we should be well and truly past all of it right? Not exactly. Issues with Plugins, performance, graphical glitches, stutters. Unless you have a very powerful machine, these are common things many of us will run into when emulating the Nintendo 64. But why? And Is there any hope for fast, accurate N64 emulation in 2025 and beyond?

  • pixxelkick@lemmy.world
    link
    fedilink
    English
    arrow-up
    38
    arrow-down
    2
    ·
    1 day ago

    The core if it boils down to, when emulating older machines, is the consoles processor speaks language A, and our computers all speak language B

    The emulator has to translate back and forth between A<->B faster than the speed the original processors would’ve just spoken A

    So translating A<->B is a way tougher task than just reciting A. So you need a tremendously better CPU than what the console had to emulate it.

    It’s kinda like, Dropping a rock in a pile of sand is easy. Simulating dropping that rock into the pile of sand in real time accurately is really challenging.

    • magic_lobster_party@fedia.io
      link
      fedilink
      arrow-up
      19
      ·
      1 day ago

      Not only that. Emulators must often ”cheat” to achieve high speeds. This means emulators doesn’t try to achieve a 1:1 replication of what’s happening inside the hardware, but something that’s gives close enough results and better tailored for modern hardware.

      The reason why N64 is particularly difficult is because each game must be optimized individually (due to the heavy reliance on microcode). The emulator must replicate the hardware at a much lower level for an accurate emulation of all games. Emulator developers can apply optimizations on each individual game, but it’s incredibly time consuming to do so for every game in the N64 library.

      • umbrella@lemmy.ml
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        20 hours ago

        why is its reliance on microcode making it so difficult? i tought this was the case across the board?

        • yetAnotherUser@discuss.tchncs.de
          link
          fedilink
          English
          arrow-up
          4
          ·
          10 hours ago

          According to: https://emulation.gametechwiki.com/index.php/Nintendo_64_emulators

          One of the biggest hurdles to emulating the Nintendo 64 was the Reality Display Processor (RDP), which used a custom design that had to be fine-tuned to get higher performance out of the system using microcode. To emulate the RDP accurately, one would have to execute said microcode the way the RDP did, which differed from the PC graphics cards of the day. To complicate matters further, API standards available on PCs two decades ago were nowhere near as flexible as they’re today. If you wanted to make an accurate GPU-accelerated RDP plugin in 2003, you simply couldn’t with the APIs of the time (OpenGL 1.x and Direct3D 9).

          Accurate low-level emulation would only come to the GPU in 2020 when a new version of the Mupen64Plus-based ParaLLEl libretro core was released containing a rewritten RDP plugin using compute shaders in Vulkan.

      • TachyonTele@lemm.ee
        link
        fedilink
        English
        arrow-up
        6
        ·
        1 day ago

        And that’s the reason MVG is telling other devs: stop using those cheats, if the sceen is going progress they have start using low level standards.

    • Feyd@programming.dev
      link
      fedilink
      English
      arrow-up
      11
      ·
      1 day ago

      It’s even more complicated than that, because for full accuracy, it must also emulate the clock speed at which the emulated processor ran, as well as the various memory busses etc

    • CileTheSane@lemmy.ca
      link
      fedilink
      English
      arrow-up
      7
      arrow-down
      1
      ·
      1 day ago

      Emulators exist for the Switch. So it’s not just the fact that the emulator needs to translate, there is something specific about the N64’s ‘language’ that makes translating more difficult and time consuming.

      • Ledivin@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        6 hours ago

        The easiest way I could describe it, is that the languages are much, much more similar. Translating for the switch is like going from Spanish to Latin, while the N64 is more like going from Chinese to Latin - much less 1-to-1 and objective.

      • Fondots@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        10 hours ago

        The “language” that the n64 used was basically in a totally different language family than what PCs and later Nintendo consoles use.

        Think of it as if the N64 spoke Japanese, while PCs speak Spanish. There’s a lot of things that don’t translate cleanly from one language to the other, you can’t just feed it into google translate and expect what comes out the other end to make sense, you’re going to need someone who understands both languages to go over it, rewrite some of it to make sure all of the nuance is coming through, add some asterisks and translation notes to explain some concepts that don’t really have a direct equivalent in the other language, etc.

        Later Nintendo consoles spoke something more like Portuguese or maybe even Mexican Spanish instead of PC’s Castilian Spanish. They’re much more similar languages that translate more directly and some things may not even really need translation as long as both parties slow down, speak clearly, and maybe throw in some hand gestures here and there, and google translate will get you like 99% of the way there, without the translator needing to add as many explanatory notes.

        All those translation notes are what the emulator is doing, and the N64 to PC emulator has to do a lot more interpreting than the Switch to PC emulator.

      • rhombus@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        6
        ·
        18 hours ago

        There isn’t actually a ton of translating going on with the Switch, as it’s basically just a computer (an ARM computer, but still). The N64 had a very different architecture that doesn’t work like modern computers do. On top of that, games on it relied on low level graphics code that makes it very difficult to cheat like other emulators do.

      • otp@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        4
        ·
        edit-2
        22 hours ago

        EDIT: Sorry, I mixed up my comment chains.

        Is Switch emulation HLE? Because if so, the Switch isn’t relevant to what the other commenter is explaining.

        HLE just means the emulator needs to have the same output as the Switch.

        LLE means the Emulator is kind of running an entire Switch.

        There’s a difference.

        EDIT: I think it’s more that the Switch’s “language” is much closer to a computer’s “language” today. Older consoles were complex beasts built completely differently from contemporary computers, let alone modern ones.