Something very strange is happening inside Super Nintendo (SNES) consoles as they age: a component you’ve probably never heard of is running ever so slightly faster as we get further and further away from the time the consoles first hit the market in the early ‘90s. The discovery started a mild panic in the speedrunning community in late February since one theoretical consequence of a faster-running console is that it could impact how fast games are running and therefore how long they take to complete. This could potentially wreak havoc on decades of speedrunning leaderboards and make tracking the fastest times in the speedrunning scene much more difficult, but that outcome now seems very unlikely. However, the obscure discovery does highlight the fact that old consoles’ performance is not frozen at the time of their release date, and that they are made of sensitive components that can age and degrade, or even ‘upgrade’, over time. The idea that SNESs are running faster in a way that could impact speedrunning started with a Bluesky post from Alan Cecil, known online as dwangoAC and the administrator of TASBot (short for tool-assisted speedrun robot), a robot that’s programmed to play games faster and better than a human ever could.

[…] So what’s going on here? The SNES has an audio processing unit (APU) called the SPC700, a coprocessor made by Sony for Nintendo. Documentation given to game developers at the time the SNES was released says that the SPC700 should have a digital signal processing (DSP) rate of 32,000hz, which is set by a ceramic resonator that runs 24.576Mhz on that coprocessor. We’re getting pretty technical here as you can see, but basically the composition of this ceramic component and how it resonates when connected to an electronic circuit generates the frequency for the audio processing unit, or how much data it processes in a second. It’s well documented that these types of ceramic resonators are sensitive and can run at higher frequencies when subject to heat and other external conditions. For example, the chart [here], taken from an application manual for Murata ceramic resonators, shows changes in the resonators’ oscillation under different physical conditions.

As Cecil told me, as early as 2007 people making SNES emulators noticed that, despite documentation by Nintendo that the SPC700 should run at 32,000Hz, some SNESs ran faster. Emulators generally now emulate at the slightly higher frequency of 32,040Hz in order to emulate games more faithfully. Digging through forum posts in the SNES homebrew and emulation communities, Cecil started to put a pattern together: the SPC700 ran faster whenever it was measured further away from the SNES’s release. Data Cecil collected since his Bluesky post, which now includes more than 140 responses, also shows that the SPC700 is running faster. There is still a lot of variation, in theory depending on how much an SNES was used, but overall the trend is clear: SNESs are running faster as they age, and the fastest SPC700 ran at 32,182Hz. More research shared by another user in the TASBot Discord has even more detailed technical analysis which appears to support those findings.

  • Imacat@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    5
    ·
    8 hours ago

    Does this mean the game plays faster or just that audio plays faster? Does the frequency of the apu affect the frequency of the main cpu?

    • oni ᓚᘏᗢ@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      7 hours ago

      It says that load the audio faster. What I wanna know is the same as you .Does the CPU handle that “new speed” with no hassle at all?

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

        Custom electronic systems like retro consoles operate in a cycle that can be influenced by only one part of that cycle moving faster than the others. Think of it like a relay race. If one runner in the middle of the race can run faster than normal, the combined time of the entire team running goes down.

        This is a gross oversimplification, but it illustrates the point well enough. The audio being processed faster can and will influence how fast each cycle runs. That will then mean extra FPS in at least some cases.

        Another thing to consider about original hardware is that no two units are exactly the same, even when they were brand new. The differences between them will only grow as the hardware ages (and the differences in their operating environments also matter).

        • pivot_root@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          edit-2
          4 hours ago

          The audio being processed faster can and will influence how fast each cycle runs. That will then mean extra FPS in at least some cases.

          It won’t. The main game loop is driven by waiting for VBLANK, which is in simplified terms the analog equivalent to vsync.

          The speed of the main CPU in the SNES also isn’t affected by the speed of the audio coprocessor. They operate independently from each other, with the CPU providing commands to control the program running on the SPC700.

          What it might do, however, is affect gameplay. The SPC700 clock variance is one of the major reasons why Super Metroid tool assisted speedruns had so much trouble being verified on real consoles. IIRC, Super Metroid waits for some sound effect to finish before performing certain actions, and that can cause the game state to differ from the state expected by the prerecorded inputs for that moment in time.