投稿
まーくん MARK6502
皆さん、1秒以下の短い時間の計測はどうしてますか? TIME$(@命令表にも載っていませんが、(^◇^;))は1秒単位ですし。 システム秒をミリ秒オーダーで取り出せる命令はないのかと。 単純に待っていれば良いだけの処理なら、VSYNCのループ数ってのも有りかも知れませんが、さすがにそれは…。
3そうだね
プレイ済み
返信[1]
親投稿
ASA fusuian
WAITを使うか、FOR文の中にVSYNCを書くかですかね? あと、システム変数MAINCNTは、プチコンを起動してからどれだけの時間がたったか、1/60秒単位で記録されています。
1そうだね
プレイ済み
返信[2]
親投稿
まーくん MARK6502
ありがとうございます。 MAINCNTは、TIME$などと合わせて、簡易電子説明書の方に書いてありましたね。 助かりました。
0そうだね
プレイ済み
返信[3]
親投稿
フレームの周期は、画面のちらつき防止のために決められたもので、時計機能とは、微妙に異なるようです。目的が異なるので当然ですよね。(3DSの仕様に依存します。) 精度や累積誤差が問題になる場合には、注意が必要と思います。 公開された仕様では無く勝手に調べたので、いつ変わるかわからない役に立たない情報ですが、プチコン3号Ver.3.00では、89秒か90秒毎に15フレームの差が発生するようです。
1そうだね
プレイ済み
返信[4]
親投稿
まーくん MARK6502
ありがとうございます。 PCからのアクセスがサーバーエラーで、返事が遅くなりました。 そうですね。目安と考えておくのが良いですね。 長時間の時間計測であれば、秒以下の精度が必要になるケースも余りないと思うので、TIME$を使えば良い。 秒以下だと、反射神経や短時間の時間成績測定に使う等が考えられますが、ゲームですので絶対的な精度は余り重要ではなく、同じプログラム、バージョン、マシン環境で大きくばらつかなければ支障は無いと思います。 念のため、画面上にスプライトを多数表示して、処理落ちを発生させた状態で、MAINCNTの進みに影響がないか確認してみましたが、ほぼ60カウント/1秒でカウントが進むことは確認できました。 希望としては、システムクロックと同期したシステム起動後からのミリ秒数を取れるシステム変数が欲しいところです。
0そうだね
プレイ済み
返信[5]
親投稿
けい kei0baisoku
描画の周期は厳密に1秒間に60回ではなく、59.8なんとかだとか聞いたことがあるので、その仕様によるものかもしれませんね。 正確な値を書きたかったのですが、少し調べても分かりませんでした………スミマセン(´з`) 任天堂かプチコンが正式に情報を出していたら安心して利用できそうなんですけども。
1そうだね
プレイ済み
返信[6]
親投稿
まーくん MARK6502
面白そうなので、1分間のMAINCNTの差分を3DSLLで計測してみました。 TIME$変数の分の桁が変化する間隔を1分として。その間のカウント差分を継続して出してみました。 結果、3585カウントか3600カウントのどちらかが出てくるという状況。3586~3599が出てくることはなし。 250msの停滞が有ったり、無かったり、は何なんでしょうね。 ガベッジコレクションが動いたりしてるとか? 余談ですが、ビデオ映像では、白黒映像のプログレッシブ30fps、インタレース60fps映像を、NTSC方式でカラー化した際の制約で、プログレッシブ29.97fps、インタレース59.94fpsとなっているそうですが、それとは関係なさそうな話ですね。
2そうだね
プレイ済み
返信[7]
親投稿
ハード時計からソフト時計への更新タイミングの可能性も考えられます。
0そうだね
プレイ済み