アカウント名:
パスワード:
V-Syncとは別に、高サンプリングレートでパッドの入力履歴をリングバッファに記録する処理を走らせるしか。
ファミコンのコントローラ(パッド)はパラレルではなくシリアルなので、サンプリングレートはどうしてもクロックに依存します。それ以上のサンプリングはできません。連射回路を後づけした場合、ON/OFFを1クロックずつ繰り返した場合にはソフトによっては読みこぼしがあるので、ONを2クロック、OFFを1クロックで回す設計のほうが安定していました。その場合、迷宮組曲等のカウントでたしか21~22連射程度だったことから、V-syncと同じ60Hz程度のクロックが流れていたと想像しています。(おそらく「1秒(10秒)」の区切りが正確ではなく若干長かった?)つまり、ハード的には各ボタンを毎秒60回検出して最高30連射までですが、どの程度までを認識するかはソフトの実装次第です。
ここからは感覚的な話ですが、ゲーマーなら 60/30/15fps の区別は出来ていて、スターフォースでは描画も入力も60Hzだったような記憶があります。間違っていたらすみません。実際、私の約14連射程度では取りこぼしなく、それ以上が要求される局面もありました。一方フレームレートが遅いゲームの例を挙げると1942やエグゼドエグゼス等です。私の知る限りではギャラガの応答が早く、A/Bボタンを区別して検出しているので、これに限ってはもしかしたら合計60連射も可能だったかもしれません。
>ファミコンのコントローラ(パッド)はパラレルではなくシリアルなので、サンプリングレートはどうしてもクロックに依存します。それ以上のサンプリングはできません。
ゲームとしてのコントローラ状態のサンプリング(ソフトの実装に強く依存する)と、コントローラからの読み取り方式(ソフトの実装にちょっとは依存する)は別の話です。 他の処理を考慮しないならば、ファミコンでも秒間1万回程度のコントローラ状態の読込は十分に可能なはずです。
#ソフトウェアでシリアルに読み込む必要がある分、ポートを1回読むだけでコントローラ1の全情報をとれるSG-1000等に比べれば不利ですが。
前のフレームでボタンが押されておらず、かつ現フレームでボタンが押されたと検出できた場合に「ボタンが押された」判定されるのですから、60fpsで回っているとするなら最大30連射しか検出することが出来ないはずです。
仮に秒間60回ボタンを押すことができたとしても、それは「押しっぱなし」と判定されるはずです。
ボタンが区別されていなければその通り。ソフトの実装次第ですが、機能の重複する2ボタンが個別に認識されているものは逆位相で交互に押すようにすると、押しっぱなしというではなく全フレームでmake/breakが認識されるものがあります。確実にそうなっているのは、例えばアーケードのテトリス。
ファミコンのギャラガはボタンが同じ機能かつ区別されているのは間違いない(一方を押したまま他方を連射可能)のですが、どの程度まで連射を受け付ける仕様なのかは試したことがないのでわかりません。
A/Bボタンを区別して検出するのであれば、ABを毎フレーム交互に押し下げればAボタンで30連射 Bボタンで30連射 の合計60連射ができるかも、ということでは。
これ [famicom.biz]を使うんですかね
違います。AもBも同じショットですが、Aを押したままBを連打しても普通に撃てる独立仕様だったのでAとBのon/off逆転させた30連打で合計60連射できたかも?という話です。
実際、ABずらし押しで弾を極端に繋げて撃てました。まぁ、1画面に2発しか撃てないゲームなんですけどね。
> 前のフレームでボタンが押されておらず、かつ現フレームでボタンが押されたと検出できた場合に「ボタンが押された」そうすると楽ちんだしそこまで早押ししないだろうからそうしているソフトが多かろうというだけで、複数回確認してるソフトの存在は否定できないでしょう
それが他で書かれている迷宮組曲の計測モードなんかがその例なんだけれど、CPUでI/Oポートをポーリングする必要があるんで当然ながら重くなります。連打系のゲームなどを除いて、おおよそメリットのある処理ではないですし、そんな実装はしないでしょう。
1フレーム毎に8ビット分溜めて、前フレームの値をxor取って立ち上がったビットを判定するのがありがちなパターン。AボタンとBボタンを区別する意味もないから、2bitマスクして立っていれば弾発射、なんて書くので、交互に入力できれば毎フレーム発射は可能になるわけですな。
高橋某の記憶とは裏腹に、スターフォースもきちんとハードでシンクロ連射 [twitter.com]すれば32連射できるそうで。http://www.nicovideo.jp/watch/sm10467304 [nicovideo.jp]
V-Syncとは独立してカウントしている迷宮組曲ではこの通り。http://www.nicovideo.jp/watch/sm10467159 [nicovideo.jp]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
サンプリングの問題 (スコア: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回検出して最高30連射までですが、どの程度までを認識するかはソフトの実装次第です。
ここからは感覚的な話ですが、ゲーマーなら 60/30/15fps の区別は出来ていて、スターフォースでは描画も入力も60Hzだったような記憶があります。間違っていたらすみません。
実際、私の約14連射程度では取りこぼしなく、それ以上が要求される局面もありました。
一方フレームレートが遅いゲームの例を挙げると1942やエグゼドエグゼス等です。
私の知る限りではギャラガの応答が早く、A/Bボタンを区別して検出しているので、これに限ってはもしかしたら合計60連射も可能だったかもしれません。
Re:サンプリングの問題 (スコア:1)
>ファミコンのコントローラ(パッド)はパラレルではなくシリアルなので、サンプリングレートはどうしてもクロックに依存します。それ以上のサンプリングはできません。
ゲームとしてのコントローラ状態のサンプリング(ソフトの実装に強く依存する)と、コントローラからの読み取り方式(ソフトの実装にちょっとは依存する)は別の話です。
他の処理を考慮しないならば、ファミコンでも秒間1万回程度のコントローラ状態の読込は十分に可能なはずです。
#ソフトウェアでシリアルに読み込む必要がある分、ポートを1回読むだけでコントローラ1の全情報をとれるSG-1000等に比べれば不利ですが。
60連射? (スコア:0)
前のフレームでボタンが押されておらず、かつ現フレームでボタンが押されたと検出できた場合に「ボタンが押された」判定されるのですから、60fpsで回っているとするなら最大30連射しか検出することが出来ないはずです。
仮に秒間60回ボタンを押すことができたとしても、それは「押しっぱなし」と判定されるはずです。
Re:60連射? (スコア:1)
ボタンが区別されていなければその通り。
ソフトの実装次第ですが、機能の重複する2ボタンが個別に認識されているものは逆位相で交互に押すようにすると、
押しっぱなしというではなく全フレームでmake/breakが認識されるものがあります。
確実にそうなっているのは、例えばアーケードのテトリス。
ファミコンのギャラガはボタンが同じ機能かつ区別されているのは間違いない(一方を押したまま他方を連射可能)のですが、
どの程度まで連射を受け付ける仕様なのかは試したことがないのでわかりません。
Re: (スコア:0)
Re: (スコア:0)
A/Bボタンを区別して検出するのであれば、ABを毎フレーム交互に押し下げれば
Aボタンで30連射 Bボタンで30連射 の合計60連射ができるかも、ということでは。
Re: (スコア:0)
これ [famicom.biz]を使うんですかね
Re: (スコア:0)
違います。
AもBも同じショットですが、Aを押したままBを連打しても普通に撃てる独立仕様だったので
AとBのon/off逆転させた30連打で合計60連射できたかも?という話です。
実際、ABずらし押しで弾を極端に繋げて撃てました。
まぁ、1画面に2発しか撃てないゲームなんですけどね。
Re: (スコア:0)
> 前のフレームでボタンが押されておらず、かつ現フレームでボタンが押されたと検出できた場合に「ボタンが押された」
そうすると楽ちんだしそこまで早押ししないだろうからそうしているソフトが多かろうというだけで、
複数回確認してるソフトの存在は否定できないでしょう
Re: (スコア:0)
それが他で書かれている迷宮組曲の計測モードなんかがその例なんだけれど、CPUでI/Oポートをポーリングする必要があるんで
当然ながら重くなります。
連打系のゲームなどを除いて、おおよそメリットのある処理ではないですし、そんな実装はしないでしょう。
1フレーム毎に8ビット分溜めて、前フレームの値をxor取って立ち上がったビットを判定するのがありがちなパターン。
AボタンとBボタンを区別する意味もないから、2bitマスクして立っていれば弾発射、なんて書くので、交互に入力できれば
毎フレーム発射は可能になるわけですな。
Re: (スコア:0)
高橋某の記憶とは裏腹に、スターフォースもきちんとハードでシンクロ連射 [twitter.com]すれば32連射できるそうで。
http://www.nicovideo.jp/watch/sm10467304 [nicovideo.jp]
V-Syncとは独立してカウントしている迷宮組曲ではこの通り。
http://www.nicovideo.jp/watch/sm10467159 [nicovideo.jp]