パスワードを忘れた? アカウント作成
8881373 story
ゲーム

高橋名人、「ファミコンでは16連射は無意味?」という疑問に答える 107

ストーリー by hylom
なるほど 部門より
あるAnonymous Coward 曰く、

元ハドソンの高橋名人が、「ファミコンは秒間15フレームだったので1秒間16連射は無意味」という噂に対し自身のブログで答えている。

これによると、まず「ファミコンは秒間15フレーム」という点については間違っているという。ただし、「スターフォース」については1秒間に30回の頻度でボタンの状態を検出していたため、1秒間に15回以上のボタン連打は無意味となっていたそうだ。しかし、「スターソルジャー」についてはこの制限はなくなっているそうで、1秒間に16連射が可能になっているという(高橋名人によると、何連射できるかは分からないとのこと)。それ以外のゲームについてはスターソルジャーと同様、16連射以上が可能になっているという。

ちなみに、スターソルジャーで高橋名人が連射している姿を撮影した映画フィルムから数えたところ、10秒間で174発、つまり毎秒17.4連射を行っていたことが判明したそうだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 営業センス (スコア:3, 興味深い)

    by Anonymous Coward on 2013年05月17日 23時14分 (#2382558)

    「16の方がコンピュータ用語にも合っているし」(元ブログより)

    このあたりの発想はさすがです。

    • by Anonymous Coward on 2013年05月17日 23時51分 (#2382572)

      そういや当時16ビットっていうとものすごく高性能っていうイメージあったなあ

      親コメント
  • by skapontan (35455) on 2013年05月17日 20時30分 (#2382434) 日記

    16連射じゃなく、17.4連射だったんじゃないか

    • by Anonymous Coward

      高橋名人!

    • by Anonymous Coward

      バネによるアシストが1割程度あったのかもしれません。

      #そもそもの「15フレームしか出ない」ってのもどっから出てきたんだか…

      • by Anonymous Coward on 2013年05月17日 22時54分 (#2382540)

        >#そもそもの「15フレームしか出ない」ってのもどっから出てきたんだか…

        件のブログにそれらしい理由が書いてある。

        日本のTVは、NTSCという規格を採用しています。
        この規格は、1秒間に60フィールドという更新を行っていますので、最大限で考えると、1秒間に60回の問い合わせを行う事で、ゲーム画面との同期が取りやすくなります。

        今のPS3やXbpx360の様なゲーム機の場合は、その問い合わせを1秒間に60回行っていると思いますが、当時のファミコンの場合、60回にしても、全く意味がありませんでした。
        だって、そんなに精度を要求する様なゲームではなかったですからね。

        よって、この問い合わせの回数を半分に減らしたのです。
        それが1秒間に30回という数値でした。
        その問い合わせに対して、ボタンを押した信号を返すわけですから、1秒間に15回以上ボタンを押しても意味が無いのです。

        親コメント
        • by nobanner (41086) on 2013年05月18日 1時51分 (#2382651) 日記

          当時のファミコンの場合、60回にしても、全く意味がありませんでした。
          だって、そんなに精度を要求する様なゲームではなかったですからね。

          意味がないことはなくて、例えばファミコンの流行が始まったころの任天堂とハドソンのゲームを見比べてみれば、動きのなめらかさが明らかに違います。アーケードゲームのような映像芸術では、動画の品質が高いことには大きな意味があります。
          で、どうして30回にしてしまうかというと、これはプログラマの腕が原因です。
          ゲームの処理が高負荷になってフレーム内に処理が収まらないと、さらに次のフレームを待ってから処理を続ける、いわゆるフレーム落ちが発生しますが、プログラマに短いステップ数で処理を記述する技術がないと、このフレーム落ちが頻繁に発生することになります。早くなったり遅くなったりすると明らかに異常に見えるので、最初から2フレームかけて1ステップ分処理する、つまりフレームが落ちたままの状態にして回避するわけです。
          当時8ビットCPUでメジャーなのはインテル系のZ80などでしたから、ファミコンの6502に不慣れなプログラマが担当したであろうことも原因として推測できます。

          親コメント
          • by Anonymous Coward on 2013年05月18日 5時29分 (#2382683)

            「ファミコンの流行が始まったころ」のハドソンのゲームはおそらくロードランナーを指していると思いますが、あれは「元のAppleII版がそうだから」というのが大きいでしょう。
            (ファミコン版はブローダーバンドから提供を受けたAppleII版のアセンブラソースを元に制作されたそうです)
            FDと48KB RAMを前提としたゲームをファミコンの2KB RAM/32KB ROMに収めたのは十分に高い技術力だと思いますが。

            親コメント
      • by Anonymous Coward on 2013年05月17日 20時56分 (#2382446)

        垂直同期割り込み周期関係かな?
        割り込みハンドラでボタン状態をポーリングすると秒間フレーム数の半分しかON/OFFできないことになる。
        NTSCの垂直同期は約60Hzだから最大で秒間30発撃てることになるけど、表示は30pfsだから毎フレームで打つと弾がつながってしまうので間引いたのかも。

        親コメント
      • by MrGgg (46175) on 2013年05月28日 17時48分 (#2389655)

        バネによるアシストが1割程度あったのかもしれません。

        「”バネ入れてて云々で逮捕”のデマが流れたあとで実際にパッドにバネ仕込んでやってみたけど反発が強くなりすぎて駄目だった」
        ってなんかの時に言ってたような・・・

        親コメント
    • by Anonymous Coward

      あの夏の日、スイカを割るにはまだまだ鍛錬が足りなかった・・・

      もうずいぶん鈍ってしまったが、今晩アワビで練習するか。

  • by s02222 (20350) on 2013年05月17日 20時51分 (#2382444)
    高橋名人のスターフォースの解説が、30秒に1回、ボタンが押されているかどうかを判定しにいって、直前がOFFで今回がONなら押されたと判断する、という実装だったら、そもそも秒間15回の連射をシステムに拾って貰うのは至難の業ですね。

    必要なのは正確さで、ちょっとでもタイミングがずれると抜けが出ますし、秒間16連射とか秒間17連射だとどんなに正確でも同期が取れなくなって所々抜けます。

    そういう抜けが出ないような、16回押したら16回と認識されるような実装を作り込んだという制作秘話が面白そうです。
    • by Anonymous Coward on 2013年05月17日 23時01分 (#2382548)

      そもそも15FPSはどこの話なのかが問題。
      描画処理の話しなら入力とは別だから全く無関係。
      mainループが15FPSになるように調整しているなら関係してくるが。
      例えば昔のPCゲームとかするとFPS限界を設定してないのがあったりして、PCスペックの限界までFPSが上がってしまうのがある。
      200FPSとかでたりで。
      で、そういうゲームにFPSリミットをかけて60FPSにしたからって内部的には処理速度が大幅に余裕があるので制限掛ける前の200FPSで回ってたりする。
      ただ、描画部分だけは60FPSで回るように同期をとって表示するだけで。

      ついでに必ずしも入力待ちをしている時に入力をするといったこともないので
      連打は早ければ早いだけ良い。

      親コメント
      • by Anonymous Coward on 2013年05月18日 5時00分 (#2382681)

        ハードウェアが固定のゲーム機だと、メインループの周期をVSYNCに合わせると言うのは一般的です。

        ただ、たとえばメインループが16msで回っていても、I/O監視が16msかということはそんなことはなく、
        もっと高速な周期の割りこみで監視する(チャタリング除去とか、反応時間が短くてこの周期では拾えないとか言う時のために)
        というのもよくやる実装でしたから、
        「メインループが30fpsだからON/OFF判定で原理的に15ショット/sしか読めない」
        ことはないかと思います。

        高橋さんが言ってるスターソルジャー以降の実装ではそういうことをやってたんじゃないでしょうか。

        親コメント
      • by Anonymous Coward on 2013年05月18日 2時06分 (#2382657)

        ファミコンだとVRAMのバスをCPUとPPUで奪い合うので、CPU側からVRAMに書き込めるのは垂直帰線の間だけ。
        DMAなんてイキなものもなく、横1ラインぐらいのBG書き換えが限度だった筈。

        なのでゲームの作りもV-Syncで描画→次フレーム作成→ブランキング待ちのパターンがセオリーだったな。
        次のブランキングまでにフレーム作成が終わらない場合が、いわゆる「処理落ち」。

        親コメント
        • by Anonymous Coward on 2013年05月18日 10時25分 (#2382746)

          > 横1ラインぐらいのBG書き換えが限度だった筈

          というかファミコン世代はそもそもラインバッファ方式ですから、横1ラインずつしか書き換えないハードウェアですね。
          これは水平帰線時間内の話なのでその間に書き換えきれない場合スプライトの描画が消えたりする。

          親コメント
          • by Anonymous Coward on 2013年05月18日 11時41分 (#2382772)

            ファミコンはPPUのポートにアドレスを叩き、あとはデータを叩く毎に勝手にアドレスがインクリメントされる単純なPIOですな。
            加算値は縦用に+32にも設定できた筈。これを垂直帰線の間に「できるだけ」やる感じ。
            垂直帰線内でスプライトDMAとどっちを優先するかは実装によるだろうけれど、普通はスプライトDMAでしょう。

            水平帰線内はなんもやらない。0番スプライトの衝突を使って1フレーム1回なら拾えなくはないけれど。
            スプライトが8キャラ分以下しか横並びできないのはハードウェアの制限。
            点滅するのは、上記の場合に消えたままになるスプライトが出ないように、フレーム毎に描画するスプライトを変更しているため。

            親コメント
    • Re:サンプリングの問題 (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2013年05月18日 1時07分 (#2382626)
      当然の話かもしれませんが、ゲームによって実装が違うんですよね。
      当時のゲームに同じパルスを送り込んでも、Aというゲームでは綺麗に連射されて、Bというゲームではまだらな連打になったり、ほとんど押下を拾わなくなったり。
      すこしパルスをずらすとまた違う反応があって、子供心に実装の違いを肌で感じていたもんです。
      親コメント
      • by Anonymous Coward on 2013年05月18日 2時29分 (#2382662)

        なので、後期にはI/Oポートをポーリングしたときの信号を拾って連打する、同期型の連打パッドが出てましたな。
        各々のソフトの最高速度で連打できるというシロモノ。

        親コメント
    • by Anonymous Coward

      V-Syncとは別に、高サンプリングレートでパッドの入力履歴をリングバッファに記録する処理を走らせるしか。

      • by Anonymous Coward on 2013年05月18日 2時50分 (#2382665)

        ファミコンのコントローラ(パッド)はパラレルではなくシリアルなので、サンプリングレートはどうしてもクロックに依存します。それ以上のサンプリングはできません。
        連射回路を後づけした場合、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等に比べれば不利ですが。

          親コメント
      • by Anonymous Coward on 2013年05月17日 21時25分 (#2382480)

        迷宮組曲なんかはそうやったんじゃないかって元記事で書かれてますね。

        親コメント
      • by gogogo (34402) on 2013年05月18日 1時08分 (#2382627)
        大抵のゲームはそういう実装してるはずじゃないかな
        じゃないとPAL圏に輸出した時におかしくなっちゃう
        親コメント
        • by Anonymous Coward on 2013年05月18日 1時45分 (#2382646)

          そういう実装はほとんどの場合していません。PAL版では50FPSのゲームにするのです。 
          60FPSのゲームをそのまま50FPSで動かすとキャラの移動量が5/6になるので、6/6になるように調整してやるのです。

          でもNTSC→PALへの移植なんかだと面倒なので、5フレームに1回キャラの移動処理を余計に回していました。
          なんとかなるもんです。

          親コメント
    • by Anonymous Coward

      炎のコマでいいんじゃね

  • by LoadFF (27414) on 2013年05月17日 21時01分 (#2382449)

    ファミコンのCPUクロックより早い周期で連射できれば弾が消せるかもしれませんね。:)

    --
    如何なる内容であろうとACでの書き込みは一切無視します。
    • by Anonymous Coward

      つまんね

    • by Anonymous Coward

      それは何の意味もないです。

      って、本文読んでないのかな・・・。

      • by Anonymous Coward
        ゲームセンターあらしを知らない世代か・・・
        • by Anonymous Coward

          なんか無料公開中 [srad.jp]のようだし教養として読んでおくべきだな

        • by Anonymous Coward

          タイトルだけ見て、「炎のコマ」とか「真空ハリケーン打ち」とか真っ先に連想しました。

          何の意味も無いのは百も承知なんだけどさ。

          • by Anonymous Coward

            エレクトリックサンダーなんかは可能性としてはアリだと思いますがね。
            でも、制御して自由にデータを押し込むことはできないだろうなと思います。

            かといって、プスっと特定の場所にコネクタ挿して
            ICE(インサーキットエミュレータ)アタック!とかだったら
            それはそれでゲームしてるというよりチートくさいですが。

        • by Anonymous Coward

          40代じゃないと詳しく知らないでしょ
          38の俺でも既に過去の古くさい漫画として名前を知っているだけ

  • by miyuri (33181) on 2013年05月17日 21時23分 (#2382478) 日記

    元営業の人でも、こういうの書くんだね。

    • Re:畑違い (スコア:2, 参考になる)

      by Anonymous Coward on 2013年05月17日 23時26分 (#2382564)

      入社当時はバグ出しとか修正とかで開発にも駆り出されていたらしいよ。
      (当時レベルの)基本的な知識は持ってるんじゃないのかな。

      親コメント
    • 昔のゲーム業界だからそれほど専門が分かれてなかったという可能性も充分考えられますな。

      --
      LIVE-GON(リベゴン)
      親コメント
    • by MrGgg (46175) on 2013年05月28日 18時27分 (#2389682)
      あの頃は、趣味娯楽系の商品の会社だとエンドユーザの前に出る営業の人は自分が販売販促に直接かかわる製品を
      かなりのとこまで触ってたり商品開発にかかわってたりすることが少なくなかったのでは。
      (表に大きく出てくる機会の多い人はあまりいなかったかもしれないけど)
      親コメント
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...