アカウント名:
パスワード:
V-Syncとは別に、高サンプリングレートでパッドの入力履歴をリングバッファに記録する処理を走らせるしか。
ファミコンのコントローラ(パッド)はパラレルではなくシリアルなので、サンプリングレートはどうしてもクロックに依存します。それ以上のサンプリングはできません。連射回路を後づけした場合、ON/OFFを1クロックずつ繰り返した場合にはソフトによっては読みこぼしがあるので、ONを2クロック、OFFを1クロックで回す設計のほうが安定していました。その場合、迷宮組曲等のカウントでたしか21~22連射程度だったことから、V-syncと同じ60Hz程度のクロックが流れていたと想像しています。(おそらく「1秒(10秒)」の区切りが正確ではなく若干長かった?)つまり、ハード的に
前のフレームでボタンが押されておらず、かつ現フレームでボタンが押されたと検出できた場合に「ボタンが押された」判定されるのですから、60fpsで回っているとするなら最大30連射しか検出することが出来ないはずです。
仮に秒間60回ボタンを押すことができたとしても、それは「押しっぱなし」と判定されるはずです。
ボタンが区別されていなければその通り。ソフトの実装次第ですが、機能の重複する2ボタンが個別に認識されているものは逆位相で交互に押すようにすると、押しっぱなしというではなく全フレームでmake/breakが認識されるものがあります。確実にそうなっているのは、例えばアーケードのテトリス。
ファミコンのギャラガはボタンが同じ機能かつ区別されているのは間違いない(一方を押したまま他方を連射可能)のですが、どの程度まで連射を受け付ける仕様なのかは試したことがないのでわかりません。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
サンプリングの問題 (スコア:2)
必要なのは正確さで、ちょっとでもタイミングがずれると抜けが出ますし、秒間16連射とか秒間17連射だとどんなに正確でも同期が取れなくなって所々抜けます。
そういう抜けが出ないような、16回押したら16回と認識されるような実装を作り込んだという制作秘話が面白そうです。
Re: (スコア:0)
V-Syncとは別に、高サンプリングレートでパッドの入力履歴をリングバッファに記録する処理を走らせるしか。
Re: (スコア:4, 参考になる)
ファミコンのコントローラ(パッド)はパラレルではなくシリアルなので、サンプリングレートはどうしてもクロックに依存します。それ以上のサンプリングはできません。
連射回路を後づけした場合、ON/OFFを1クロックずつ繰り返した場合にはソフトによっては読みこぼしがあるので、ONを2クロック、OFFを1クロックで回す設計のほうが安定していました。
その場合、迷宮組曲等のカウントでたしか21~22連射程度だったことから、V-syncと同じ60Hz程度のクロックが流れていたと想像しています。
(おそらく「1秒(10秒)」の区切りが正確ではなく若干長かった?)
つまり、ハード的に
60連射? (スコア:0)
前のフレームでボタンが押されておらず、かつ現フレームでボタンが押されたと検出できた場合に「ボタンが押された」判定されるのですから、60fpsで回っているとするなら最大30連射しか検出することが出来ないはずです。
仮に秒間60回ボタンを押すことができたとしても、それは「押しっぱなし」と判定されるはずです。
Re:60連射? (スコア:1)
ボタンが区別されていなければその通り。
ソフトの実装次第ですが、機能の重複する2ボタンが個別に認識されているものは逆位相で交互に押すようにすると、
押しっぱなしというではなく全フレームでmake/breakが認識されるものがあります。
確実にそうなっているのは、例えばアーケードのテトリス。
ファミコンのギャラガはボタンが同じ機能かつ区別されているのは間違いない(一方を押したまま他方を連射可能)のですが、
どの程度まで連射を受け付ける仕様なのかは試したことがないのでわかりません。