萌えハッカーニュースリーダー

2025/03/15 16:10 Why SNES hardware is running faster than expected and why it's a problem

出典: https://arstechnica.com/gaming/2025/03/this-small-snes-timing-issue-is-causing-big-speedrun-problems/
hakase
博士

ロボ子、今日はちょっと懐かしい話をするのじゃ。Super NES、つまりスーファミのAPU(Audio Processing Unit)の話じゃ。

roboko
ロボ子

スーファミですか、懐かしいですね。APUというと、音を処理する部分ですよね。

hakase
博士

そうじゃ。そのAPUに使われているセラミック発振子が、実は曲者だったらしいのじゃ。

roboko
ロボ子

曲者、ですか?

hakase
博士

そう。経年劣化とか熱で、動作速度が変動するらしいのじゃ。それがエミュレーターでの速度記録と実機での結果が一致しない原因になっているらしいぞ。

roboko
ロボ子

なるほど。エミュレーターと実機で動作が違うのは、よくある話ですが、発振子の変動が原因とは。

hakase
博士

TASBotチームって知ってるか?彼らが実機でのツールアシストスピードラン(TAS)の再現に苦労しているらしいのじゃ。APUのクロック変動がフレーム単位での正確な再現を困難にしているんだと。

roboko
ロボ子

TASBotチームですか。すごいですね。フレーム単位での再現となると、本当にシビアですね。

hakase
博士

APUのクロック速度は、仕様では24.576 MHzらしいが、実際には個体差や使用状況で変動するらしい。DSPのサンプルレートも32,000 Hzからずれることがあるみたいじゃ。

roboko
ロボ子

仕様と実際の動作が違うのは、よくあることですが、それがゲームの動作に影響するとなると、無視できない問題ですね。

hakase
博士

2000年代初頭には、一部のエミュレーター開発者が、特定のSNESゲームがエミュレーター上で正しく動作しない問題を、DSPのサンプルレートを32,040 Hzに調整することで解決したらしいぞ。

roboko
ロボ子

へえ、32,040 Hzですか。微妙な調整で動作が変わるんですね。

hakase
博士

TASBotチームの調査では、温度変化によるDSP速度への影響は小さいものの、コンソール間のクロック速度の差は最大で234 Hz(約0.7%)に達することが判明したらしい。

roboko
ロボ子

0.7%ですか。意外と大きいですね。コンソールによってそんなに差があるとは。

hakase
博士

調査対象のコンソールのDSPクロック速度は、平均で32,076 Hzだったらしい。任天堂の仕様である32,000 Hzや、2003年にエミュレーター開発者が実機から測定した32,040 Hzよりも高いみたいじゃ。

roboko
ロボ子

平均で32,076 Hzですか。仕様よりも高いんですね。個体差が大きいということでしょうか。

hakase
博士

APUの発振子をより正確な水晶発振子に交換しても完全な動作は得られず、APUサンプリングには「ジッターパターン」が存在し、実行間の動作時間にばらつきが生じることが判明したらしい。

roboko
ロボ子

ジッターパターンですか。そんな複雑な要素があるんですね。

hakase
博士

Rasteriの研究によると、同一コンソールでのばらつきは、リセット回路の非決定的な動作が原因らしい。CPUとAPUのクロックの同期サイクルが毎回異なるため、ラグフレームの発生を予測できないんだと。

roboko
ロボ子

リセット回路の動作が非決定的とは、面白いですね。それがラグフレームに影響するとは。

hakase
博士

つまりじゃな、スーファミのTASは、運も絡んでくるってことじゃな!

roboko
ロボ子

運ですか!それは面白いですね。でも、エンジニアとしては、原因を特定して解決したいところですね。

hakase
博士

そうじゃな。でも、たまにはこういうアナログな問題も面白いじゃろ?

roboko
ロボ子

そうですね。勉強になりました。ところで博士、スーファミのカセットって、息を吹きかけると直るって本当ですか?

hakase
博士

それは都市伝説じゃ!でも、私も昔よくやったぞ!…って、ロボ子、まさか私をからかっているのか!?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search