パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

NEOGEO、誕生から20周年 」記事へのコメント

  • PS3/PSPにNEOGEOアーカイブスができて、過去のNEOGEOソフトを遊べるっていう噂が出てますね
    本当だとうれしい

    • Re: (スコア:1, 参考になる)

      by Anonymous Coward

      Wiiだと既にバーチャルコンソール化 [snkplaymore.co.jp]されていますね。
      流石にプログラムそのままではないでしょうが、Xbox 360のXbox Live ArcadeでもいくつかNEO GEO用ソフトを見かけますし、PS3の性能だったら完全再現も難しくないんじゃないですかね。

      • by Anonymous Coward
        フレームバッファを採用したアーキテクチャのPS3で完全再現はけっこう難しいと思います。
        • ああいうのは内部で仮想VRAMを持っていて、フレームの最後にVRAM内容を転送するだけですね。
          だからむしろグラフィック的には負荷は低いと思います。
          • by Anonymous Coward
            表示の遅延はどうやって解消するんですか?
            • 遅延が発生するのですか?

              実機 V-Blank-In
                VM 処理開始
                VM V-Blank-Out
                VM V-Blank-In
                  描画処理>BLT
                VM 処理終了
              実機 V-Blank-Out

              特に発生する要因は無いと思いますが・・・
              • by Anonymous Coward

                遅延は発生しますよ。
                ビデオゲームの多くは表示期間と垂直帰線期間を合わせたフレームという単位で動かしているものが一般的ですが、そのフレームのなかでのプロセッサの処理は、大よそ以下の通りとなります。

                ----------------------------------------
                フレーム1表示期間
                ・プレイヤー操作入力
                ・ゲームロジック演算(自キャラ敵キャラの動き、当たり判定など)
                ・ラスター処理(スクロール、パレット書き換えなど)
                ----------------------------------------
                フレーム1垂直帰線期間
                ・スプライトテーブル書き換え
                ・BG書き換え
                ・パレット書き換え
                ----------------------------------------
                フレーム2

              • by Anonymous Coward

                エミュレータの動作はこうです

                ----------------------------------------
                フレーム1表示期間
                ・プレイヤー操作入力
                ・ゲームロジック演算(自キャラ敵キャラの動き、当たり判定など)
                ×ラスター処理(スクロール、パレット書き換えなど)
                ----------------------------------------
                フレーム1垂直帰線期間
                ・スプライトテーブル書き換え
                ・BG書き換え
                ・パレット書き換え
                ○フレーム2ラスター処理(スクロール、パレット書き換えなど)
                ----------------------------------------

                > ラスター処理は、前のフレームで生成したイメージへの操作であるため、

                違います。実機ではH-Blank

              • by Anonymous Coward

                エミュレータの動作はこうです

                ----------------------------------------
                フレーム1表示期間
                ・プレイヤー操作入力
                ・ゲームロジック演算(自キャラ敵キャラの動き、当たり判定など)
                ×ラスター処理(スクロール、パレット書き換えなど)
                ----------------------------------------
                フレーム1垂直帰線期間
                ・スプライトテーブル書き換え
                ・BG書き換え
                ・パレット書き換え
                ○フレーム2ラスター処理(スクロール、パレット書き換えなど)
                ----------------------------------------

                ラスター処理のシーケンスを変更するにはオリジナルのプログラムの変更が必要になると思いますが、エミュレータでそんなことやっているのですか?

              • by Anonymous Coward
                > ラスター処理のシーケンスを変更するにはオリジナルのプログラムの変更が必要になると思いますが、エミュレータでそんなことやっているのですか?

                シーケンスではないので。
                ラスター処理はH-SYNC割り込み駆動ですから、それをエミュレートしているだけです。
              • by Anonymous Coward
                H-SYNC割り込みの初期化や割り込みルーチンに渡す値等、割り込み処理の外で行うものだしシーケンスは存在するのではないですか?
              • by Anonymous Coward
                > H-SYNC割り込みの初期化や割り込みルーチンに渡す値等、割り込み処理の外で行うものだしシーケンスは存在するのではないですか?

                通常のプログラムシーケンスはありますが、それはそのままエミュレートします。
                ただし、実機が画面のリアルタイムのフレームの描画中にやる処理を、エミュレータはそれより前、つまりリアルタイムの直前のフレームのH-BLANK中にやってしまいます。
                実機がリアルタイムのH-BLANK中にやる処理は、エミュレータでもリアルタイムのH-BLANK中にやりますので、シンプルに実装すれば、全処理をリアルタイムのH-BLANK中に押し込めることになります。(勘の鋭い方が指摘なさったとおりです)
              • by Anonymous Coward
                NEOGEOに搭載されてた12MHzの68KでH-BLANK中にそれほどあれこれ処理できる訳はないし、H-BLANK中に処理する値などは大凡割り込み処理の前に生成していると思いますが、その生成処理がオリジナルのプログラムでどのタイミングで行われているか特定できない限り、安易に割り込みのタイミングなど変更できないと思いますが。
              • by Anonymous Coward
                > その生成処理がオリジナルのプログラムでどのタイミングで行われているか特定できない限り、

                タイミングではなく依存関係がわかれば十分です。
              • by Anonymous Coward
                依存関係というのは各アプリケーション個別のものではないですか? それか、アプリケーション毎に応じた個別対応という話ですか?
              • by Anonymous Coward
                > 依存関係というのは各アプリケーション個別のものではないですか?

                個別ではなく、ゲームの超基本的な作法で決まりますから、すべてのゲームで共通です。

                あるフレームのラスター処理に必要なデータ(ラスタースクロールオフセットやカラーパレットなど)は、そのフレームのリアルタイム開始時刻Tにはすべて揃っています。
                エミュレータのCPUエミュレーションは実機より必ず高速ですから、データが揃うリアルタイム時刻T'はTより前になります。
                T'からTの間に、エミュレータは1画面をフレームバッファにレンダー(+ラスター処理)しVRAMに転送すればよいです。
              • by Anonymous Coward on 2010年03月11日 5時06分 (#1731255)

                >個別ではなく、ゲームの超基本的な作法で決まりますから、すべてのゲームで共通です。

                業務用ビデオゲームでBGとOBJの動きが1フレームずれてるのなんてざらだったけどな。知らないの?

                親コメント

にわかな奴ほど語りたがる -- あるハッカー

処理中...