{"id":80883,"date":"2025-03-15T06:00:33","date_gmt":"2025-03-15T10:00:33","guid":{"rendered":"http:\/\/pappp.net\/?guid=3f93acc0e9c7f15a76963517b4bc05ce"},"modified":"2025-03-15T06:00:33","modified_gmt":"2025-03-15T10:00:33","slug":"why-snes-hardware-is-running-faster-than-expected-and-why-its-a-problem","status":"publish","type":"post","link":"https:\/\/pappp.net\/?p=80883","title":{"rendered":"Why SNES hardware is running faster than expected\u2014and why it\u2019s a problem"},"content":{"rendered":"<p class=\"syndicated-attribution\">Source: <a href=\"https:\/\/arstechnica.com\/gaming\/2025\/03\/this-small-snes-timing-issue-is-causing-big-speedrun-problems\/\">Ars Technica<\/a><\/p>\n<div style=\"background-color : #fff7d5;\n\t\t\tborder-width : 1px; padding : 5px; border-style : dashed; border-color : #e7d796;margin-bottom : 1em; color : #9a8c59;\">Article note: Neat.  \nI always half-joke that we could easily teach an entire upper-division class about oscillators\/frequency generators\/ clock manipulation (resonant circuits, ring oscillators, ceramic oscillators, crystals and their drive modes, dividers, PLLs, multi-phase clocks, a little bit of the beat\/heterodyne stuff that radio people care about, etc.), this goes in my example bank.<\/div><p>Ideally, you'd expect any Super NES console&mdash;if properly maintained&mdash;to operate identically to any other Super NES unit ever made. Given the same base ROM file and the same set of precisely timed inputs, all those consoles should hopefully give the same gameplay output across individual hardware and across time.<\/p>\n<p>The <a href=\"https:\/\/tas.bot\/wiki\/Main_Page\" rel=\"noopener noreferrer\">TASBot community<\/a> relies on this kind of solid-state predictability when creating <a href=\"https:\/\/arstechnica.com\/gaming\/2016\/01\/how-a-game-playing-robot-coded-super-mario-maker-onto-an-snes-live-on-stage\/\" rel=\"noopener noreferrer\">tool-assisted speedruns<\/a> that can be <a href=\"https:\/\/arstechnica.com\/gaming\/2020\/01\/inside-tasbots-semi-secret-probably-legal-effort-to-control-the-nintendo-switch\/\" rel=\"noopener noreferrer\">executed<\/a> with <a href=\"https:\/\/arstechnica.com\/gaming\/2017\/01\/how-a-robot-got-super-mario-64-and-portal-running-on-an-snes\/\" rel=\"noopener noreferrer\">robotic precision<\/a> on <a href=\"https:\/\/arstechnica.com\/gaming\/2016\/07\/how-to-beat-super-mario-bros-3-in-less-than-a-second\/\" rel=\"noopener noreferrer\">actual console hardware<\/a>. But on the SNES in particular, the team has largely struggled to get <a href=\"https:\/\/arstechnica.com\/gaming\/2011\/08\/accuracy-takes-power-one-mans-3ghz-quest-to-build-a-perfect-snes-emulator\/\" rel=\"noopener noreferrer\">emulated speedruns<\/a> to sync up with demonstrated results on real consoles.<\/p>\n<p>After significant research and testing on dozens of actual SNES units, the TASBot team now thinks that a cheap ceramic resonator used in the system's Audio Processing Unit (APU) is to blame for much of this inconsistency. While <a href=\"https:\/\/snes.nesdev.org\/wiki\/SNES_Development_Manual\" rel=\"noopener noreferrer\">Nintendo's own documentation<\/a> says the APU should run at a consistent rate of 24,576 Hz (and the associated Digital Signal Processor sample rate at a flat 32,000 Hz), in practice, that rate can vary just a bit based on heat, system age, and minor physical variations that develop in different console units over time.<\/p><p><a href=\"https:\/\/arstechnica.com\/gaming\/2025\/03\/this-small-snes-timing-issue-is-causing-big-speedrun-problems\/\" rel=\"noopener noreferrer\">Read full article<\/a><\/p>\n<p><a href=\"https:\/\/arstechnica.com\/gaming\/2025\/03\/this-small-snes-timing-issue-is-causing-big-speedrun-problems\/#comments\" rel=\"noopener noreferrer\">Comments<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Ideally, you&#8217;d expect any Super NES console\u2014if properly maintained\u2014to operate identic&#8230;<\/p>\n<p> <a href=\"https:\/\/pappp.net\/?p=80883\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[226],"tags":[],"class_list":["post-80883","post","type-post","status-publish","format-standard","hentry","category-news-2"],"_links":{"self":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/80883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=80883"}],"version-history":[{"count":0,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/80883\/revisions"}],"wp:attachment":[{"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=80883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=80883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=80883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}