トピック

3DSのフレームレート

プチコン3号のTIME$は、基本的に60フレームごとに秒を改めるのですが、3DSのフレーム数自体が、厳密には60fpsよりも微妙に少ない(59.8fps強)ので、約90秒ごとに「45フレーム」で秒が改まるという謎仕様を持っています。 よって、3DSの1秒あたりのフレーム数は、概算ですが、 (1-0.25/90)*60= 約59.833333… ということになります。
2そうだね
プレイ済み
返信[1]
親投稿
MIKI ifconfig
vsync の周期は 0.016715[s] くらいとのこと。(約59.827Hz) ソースはネットで見た、じゃなくて、れいさん。↓ https://miiverse.nintendo.net/replies/AYMHAAACAAADVHkgWMTkxg 周期をどうやって測ったは不明。オシロとかで見たのかな? 90秒ごとに 45フレームの理由は ・vsync 割り込み(CRTC由来?)と time$ (RTC由来) はそもそも同期してない ・time$ の更新が vsync 15 回に一回だけ という仕様による復号技。
2そうだね
プレイ済み
返信[2]
親投稿
MIKI ifconfig
あ、一般の水晶発振器は普通に +-10~20ppm(=+-10^-5~20^-5[s]) くらいの誤差があるし、温度特性も悪いので、上記数値は目安ね。 冬など電源入れて温まってくるとどんどん周期がかわったりします。安定した速度を得るには電源投入後 1 時間くらいしてから測定するといいです。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
以前、私が計測した時には1秒≒VSYNC 59.835回でした。(3回計測してすべて値が一致) 個体差、計測誤差、環境による違いがあるため小数第3位の信頼性は低いので59.83~59.84程度という感じでしょうね。 したがって、秒単位でしか表示しない時計だからメインループにVSYNC 60を入れると正しく表示されない場合が出てきます。
0そうだね
プレイ済み
返信[4]
親投稿
いやあ、なにせ作ったプログラムが「時報」あってのアプリなので、まさかTIME$にこんな罠が仕掛けられてるとは思いませんでした…
0そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
あらら、指数間違ってました。 × +-10~20ppm(=+-10^-5~20^-5[s]) ○ +-10~20ppm(=+-10^-6~20^-6[s]) 失礼しました。
0そうだね
プレイ済み
返信[6]
親投稿
ひろ yf2mn276
VSYNC/WAITでは45f割り込みがあるので若干「60f=1sec」とは言えないかも知れませんね。 MICでの同期をするとしても、いずれPOW(2,x)fpsになってしまいます。 MAINCNTも45fずれるのでしょうか?そうだとすればジャイロに断面差ができて崖のようになると思います。 どうすれば60fpsぴったりになるのでしょうか…?
0そうだね
プレイ済み
返信[7]
親投稿
れい rei-nntnd
みき氏 10ppmで温度特性がわるい…だと… 測定はtektroのスペクトルアナライザ。 型番は…まぁなんでもいいだろ。 ひろ氏 世界にピッタリの時計なんて無いんだよ
1そうだね
プレイ済み