Analogueの製品はFPGAという技術ベースで構築されていることもあり、そのキャッチコピーにはいずれの製品にも「No emulation(エミュレーションなし)」の文字が踊っています。そこに疑問を持ったRedditのユーザーの投稿をご紹介します。
純粋な質問です。これらの製品をもう少しよく理解したいと思っています。私は Analogue Pocket を持っています。これは素晴らしい小さなデバイスですが、ゲームによっては、あまりに激しく動かすとクラッシュしたり、あるいは起動するだけで問題が発生したりするゲームがあることに驚きました。
それで、「ゲームを入れるために SD カードか何かを入手してみようかな」と考えるようになり、「その時点で、Steam Deckにエミュレーターをインストールしただけのものと比べて、実際に違いはあるのだろうか?」と考えるようになりました。
これをもう少し理解するのは興味深いことです。
私たちが使用している用語はあまり良くありません。FPGAはエミュレーションです。FPGAはハードウェアによるハードウェアエミュレーションでもあります。これは、並列非同期処理エミュレーションでもあります。それは「正確な」エミュレーションである可能性があります。Analogue は、自社の FPGA エミュレーション製品を、不正確で妥協した「十分に優れた」ソフトウェアのみのエミュレーション製品と区別しようとしています。
ソフトウェア エミュレーションは正確ですが、並列動作するハードウェア コンポーネントの総数の倍数の演算サイクル レートが必要になります。25 MHz SNES を正確にエミュレートするには 3 GHz 以上のプロセッサが必要だという声が聞こえるのはこのためです。並列処理を逐次処理に変えると、非常に複雑になり、時間がかかる場合があります。FPGA は、必要に応じて並列処理することで、これらの処理タスクを迅速に実行します。
SD カードに ROM を置くと、エミュレーターの動作に何か違いはありますか?
ROMが使用されているかどうかは、エミュレーションという話題とは無関係です。たとえば、ROM をフラッシュ カートリッジにロードして、実際のハードウェアで使用できます。ゲームデータがSDカードから取得されているという事実にもかかわらず、それはエミュレーションではありません。ただし、ハードウェア的には、ビットは純正カートリッジにあるものと同じです。
FPGA がエミュレーションであるかどうかは、「エミュレーション」が何を意味するかによって異なります。多くの人がソフトウェア エミュレーションについて話しています (Steam Deckで実行しているとおっしゃったように)。Analogueコンソールは決してそうではありません。
Analogue Coreの作成に使用される FPGA テクノロジにより、本物のハードウェアの使用に非常に近いエクスペリエンスが得られます。ただし、次のふたつの理由により、まだ 1:1 ではありません。
- ビデオ ゲーム コンソールのチップとボードの設計は独自のものであり、リバース エンジニアリングが必要です。FPGA を使用すると回路レベルで同様の動作を得ることができますが、同一ではありません。
- たとえ回路設計が入手可能で使用が許可されていたとしても、多くのAnalogue製品の FPGA は、8 ビット時代以降のほとんどのコンソールの完全なチップ設計を再現するには十分な大きさではありません。現在得られているのは、FPGA のロジック ユニットを節約するためにいくつかの角をカットした近似値です。
そうは言っても、Analogue のマーケティング戦略は真実です…ある観点からは。これは、この用語が口語的に使用される従来のソフトウェア エミュレーションではありません。これは、より正確にはハードウェア エミュレーションと呼ばれます。
たとえ回路設計が入手可能で使用が許可されていたとしても、多くのAnalogue製品の FPGA は、8 ビット時代以降のほとんどのコンソールの完全なチップ設計を再現するには十分な大きさではありません。現在得られているのは、FPGA のロジック ユニットを節約するためにいくつかの角をカットした近似値です。
これは知りませんでした!
びっくりしました!
詳細を説明していただくか、リンクをいくつか提供していただけますか。
これはとても興味深いですね。
適切にプログラムされた FPGA 再作成と適切にプログラムされたソフトウェア エミュレータは、ほとんど違いがなく、簡単に対決することができます。それでも、異なる可能性がある指標がひとつあります。それはレイテンシーです。
繰り返しますが、適切な設定と十分なコンピューター能力があれば、この 2 つは直接競合できます。しかし、複雑なマシンの欠点は、OS が複雑であることです。最適に構成された PC であっても、命令を次々に処理する必要があります。とても早いですが。
ソフトウェア エミュレーションの場合、これにより、エミュレーターまたはコントローラーが期待どおりのインスタンスで処理されないため、遅延が不安定になる可能性があります。カスタム Linux OS を搭載した Steam Deckでも、この問題が発生する可能性があります。それは最新の OS の欠点にすぎません。
比較の反対側では、FPGA ゲーム デバイスは非常にシンプルな OS を備えており、FPGA で再現されたものは実際のハードウェアと同じように同時処理を実行できます。これにより、ソフトウェア エミュレーターで発生する可能性のある遅延の不一致が軽減されます。ゲームやプレイする人によっては、これはほとんど意味がないか、ほとんど意味がない場合があります。
しかし、実際のハードウェアに慣れている人にとっては、通常、実際のハードウェアの場合と同じ応答性と一貫性を感じることができます。したがって、Steam Deck はソフトウェア エミュレーションを通じて同じゲームをすべてプレイできますが、そのため Pocket の方が優れたエクスペリエンスであると感じるかもしれません。ただ試してみて、それがどのように感じられるかを確認する必要があります。
Analogueで使われていたマーケティング用語は「ゼロレイテンシー」だったと思います。
FPGA チップは当初、新しいチップのプロトタイピングを目的としていました。チップの FPGA バージョンが十分に機能するとすぐに、実際のチップの作成という高価な作業を開始できます。
Pocket (および MiSTer など) で使用される FPGA チップは、シミュレートしているハードウェアに「なります」。オリジナルのチップをトランジスタレベルで複製します。FPGA のプログラミングとは、元のハードウェアの詳細を記述することを意味し、ソフトウェアのプログラミングとはまったく異なり、ハードウェアの開発に似ています。
実際には、これは、元のハードウェアで並行して発生するすべてのことが FPGA 上でも並行して発生することを意味します。これにより、入力デバイスとディスプレイの遅延に応じて、遅延がゼロになります (ユーザーのアクションに対する非常に高速な応答)。
通常のエミュレーションでは、そのほとんどが CPU によって処理され、並行して実行できることは非常に限られています。これは、低遅延を実現するには、より多くの CPU パワーが必要であることを意味します。比較的低電力の Pi システムは、待ち時間を短縮するために予測トリックを使用しますが、これは必ずしも正確であるとは限りません。
FPGA 内のシミュレートされた要素間の接続の長さは、元のハードウェアのものと同じではないため、わずかなタイミングの違いが生じます。これは FPGA プログラマが考慮する必要があります。したがって、FGPA バージョンは通常、元のハードウェアの正確なコピーではなく、完全に正しく機能することはできません。
これらのタイミングの違いが考慮されると、元のハードウェアの動作を正確に複製することが可能になります。すべては、プログラマーがミスをしないことと、元のシステムを正確に複製するのに十分な情報があるかどうかにかかっています。
オリジナルのチップをトランジスタレベルで複製します。
実際のところ、これはAnalogueのやり方ではないと思います。これには元のハードウェア上のすべてのチップのキャップを外す必要がありますが、これは非常に少数の MiSTer コアで見られたことであり、Kevtis が彼のコアをどのように組み立てているかを読んだり見たりして私が信じている方法ではありません。コアの作成について話します。
トランジスタの精度は、エミュレーションがないのと同じくらいマーケティング上の話です。
比較的低電力の Pi システムは、遅延を短縮するために予測トリックを使用します。
先を走ることは予測できません。
これはAnalogueの動作であるという意味ではなく、FPGA チップの動作であり、トランジスタ レベルで動作します。ほとんどの FPGA コアは、元のチップのキャップを外すのではなく、その動作を研究することによって開発されています。
したがって、実際には、ほとんどのコアはトランジスタ レベルでまったく同じ構造を持っているわけではありませんが、潜在的にはまったく同じように機能します (配線の違いによって生じるわずかなタイミングの違いを除く)。デキャッピングに基づくコアでも、タイミング ロジックを FPGA に合わせて調整する必要があります。
私の知る限り、run先行は、考えられるすべてのユーザーアクションの結果を事前に計算します。
私の知る限り、run先行は、考えられるすべてのユーザーアクションの結果を事前に計算します。
いいえ、何も予測できません。Retroarch は、ブログと FAQ で、私が説明できる以上に、どのように機能するかについて優れた記事を書いています。
それはFPGAチップが行うものであり、トランジスタレベルで動作します。
しかし、それは実行内容が実際のハードウェアと比較してトランジスタ精度が高いことを意味するものではなく、開発者の実装がどれほど優れているかについては何も教えてくれません。
FPGA はエミュレーションではなく、FPGA がコピーしている回路になります。FPGA が「エミュレーション」であれば、コンデンサを別のブランドに変更することも「エミュレーション」です。
私は個人的には、ハードウェアに本来実行できなかったことを実行させるのがエミュレーションだと主張します。コンデンサは本来の動作を続けているため、コンデンサの交換はエミュレーションではありません(何かがオリジナルのハードウェアからクローンになるという「テセウスの船」のような状況になります)。
FPGA は「箱から出して」NES コードを実行することはできません。コードで変更する必要があります。つまり、ハードウェアエミュレーションです。
ASIC (すべての「NES on a Chip」システムと同様) は、「クローン」の定義に該当します。
FPGA は依然としてある意味エミュレーションですが、それはソフトウェアというよりはむしろハードウェア レベルです。
FPGA の説明を助けるために、Ferranti 製のセミカスタム チップである Sinclair ZX81 の「ULA」を参照したいと思います。( LowSpecGamer のそれに関するビデオ)
基本的な要点は、Ferranti がゲート間に接続のない 100 以上の論理ゲートを備えたチップを作成したということです。- つながりを引き出すのはクライアント次第でした。フェランティにとっては、1 種類のチップを製造し続けることができるため、これはより安価であり、クライアントにとっては、数分の 1 のコストでカスタム チップを効率的に製造できることになります。
シンクレアはこれを使用して、17 個のはるかに単純なチップ (それぞれに 1 桁の論理ゲート数があった可能性があります) のようなものを 1 つのチップに統合しました。
FPGA は原理の進化です。ただし、製造時に「接続を描画」する代わりに、プログラマはいつでも接続を描画 (および再描画) できます。通常、これらは新しいチップを設計するエンジニアによって使用されるか、カスタム チップの製造が高価すぎる Sinclair ZX81 のような製品に使用されます。
古いコンソールのチップが使用していたゲート アレイをコピーするためにこれを使用しているだけです。SD カードからファイルをロードすると、そのデータは基本的に、FPGA がエミュレートしている「ROM チップ」にロードされるだけです。実際のカートとの間には何の違いもないはずです。
ソフトウェアではなくハードウェア エミュレーションであると誰もが説明しています。しかし、Analogue Pocket と Steam Deck の違いは、実際にポケットに入れられるかどうかにあると言わざるを得ません。
Steam Deck エミュレーションは優れていますが、個人的には長期の旅行でない限り持ち歩きたくないデバイスです。ただし、現在では優れたハンドヘルドエミュレータのオプションもたくさんあります。世界は私たちのカキです!
実際のハードウェア、つまりコアを模倣できるふたつの FPGA チップがあります。ゲームは一般的なソフトウェア エミュレーションでは処理されません。私が魅力的だと思うのは、範囲を拡大するためにソフトウェア エミュレーション用のサードパーティ コアが存在するだろうと今頃考えていたことです。その可能性があるかどうか知っている人はいますか?
ソフトウェア エミュレーションには、実際のハードウェアやハードウェア エミュレーションに比べて多くの利点があります。状態の保存、高速実行エクスプロイトを学習/把握するためのプログラム アシスタント、アップスケーリング、フィルターとオーバーレイの豊富な選択、ROM の逆コンパイルなど。
FPGA はエミュレーションですが、ハードウェア レベルです。通常、その目的は、アップスケーリングといくつかのフィルター、場合によっては状態の保存以外の最小限の追加機能を備えた、元のハードウェアと同じ機能にできるだけ近づけることです。ソフトウェア エミュレーションと同様に、いくつかの欠点があります。
ソフトウェアの場合、主に入力ラグが原因ですが、GPU 同期を使用して回避する方法があります。FPGA には、タイミングと画面同期の問題がまだいくつかあります。これが、Super NT のようなコンソールがその後フレームをドロップする理由です。また、なぜFPGA公式のスピードランニング競技会を使用できないのかなどについても説明します。FPGA はそれに近いものですが、完璧ではありません。現在 Duo に関して、そして初期の Super NT や Mega SG に関して人々が抱えている問題を見てください。
そうは言っても、オリジナルのハードウェアには欠点もあります。通常、アップスケーリングには、現代のテレビで見栄えを良くするために高価な外部ハードウェアが必要です。コンデンサーの劣化、SNES のビデオチップの故障、改造されたゲームボーイのオーディオのノイズなどが原因です。
結局のところ、これらのゲームをプレイするための普遍的な完璧な方法は存在しないため、自分のニーズに合ったものを見つけてください。私は 3 つを組み合わせて持っています。
私は今でも Genesis、NES、そして数え切れないほどのゲームボーイを持っていますが、Super NT、Mega SG、Pocket も所有しており、私もエミュレートしていると信じていただいたほうがよいでしょう。私は RPi を搭載したスタンドアップ アーケードを持っており、常に Switch オンラインでゲームをプレイしています。
TL:DR 自分に合ったものをプレイしてください。
彼らがエミュレーションをしないと言っているのは、私たちが慣れ親しんでいるソフトウェアエミュレーションを指しているだけです。
非常に優れた画面とハードウェアを備えながら、オリジナルのゲームボーイのようにカートを使用できることがこのデバイスの主なポイントです。
ゲームボーイ ゲームや、ポケットでエミュレートできるほとんどのゲームのソフトウェア エミュレーションは、すでに長い間成熟していますが、カートリッジを差し込むだけよりもはるかに多くの工夫が必要になる場合があるため、ポケットが勝つのはそこです。
ソフトウェア エミュレーションは、FPGA と同じくらい正確である場合もありますが、FPGA はソフトウェア エミュレーターよりも精度が低い場合もあります。エミュレーションがどれだけ完璧であるかがすべてです。
FPGA の主な利点は、必要な電力がはるかに少なく、リアルタイムでカートを読み取るためのカート リーダーなどの特別なハードウェアを搭載できることです。
たとえば、Higen (bSNES) のようなサイクル精度の高い SNES エミュレータは 99.99% の精度ですが、3 GHz でクロックされる CPU を搭載した PC が必要で、数百ワットの電力を必要とする場合があります。したがって、主な利点は、FPGA が実際のハードウェアになるように再構成することでそのハードウェアを「エミュレート」するため、より効率的かつ効果的になることです。
PC よりもはるかに小型であり、バックグラウンドでの OS やその他のソフトウェアの実行によるオーバーヘッドがありません。欠点は、FPGA チップのコストが前述の 3 GHz CPU と同じくらい高く、「能力」が比較的低いことです。たとえば、Mister の FPGA を PC 上で動作する 3ghz CPU になるように構成することはできません。
ソフトウェア エミュレーションはハードウェア エミュレーションほど正確ではありません
ただし、それは理論上のみ当てはまります。何かを完全に再現できる場合は、ハードウェア エミュレーション/FPGA を使用すると、より正確な結果が得られる可能性が高くなります。
しかし、ハードウェア エミュレーション/FPGA は魔法ではありません。これは依然としてオリジナルの再作成であり、おそらくオリジナルの製造マスクにアクセスできないサードパーティによって作成されます。したがって、それはおそらく不完全であり、その時点ですべての賭けは外れます。
ただし重要なのは、接続したカートリッジ/アクセサリはソフトウェア インターフェイスを経由するのではなく、文字通り電気的にシステムの一部になるということです。これは大きなことであり、これが FPGA システムが Retron や ROM ダンパー システムよりも優れている理由です。アタリ2600+。オリジナルのカートリッジ/付属品を気にしない場合は、少し明確ではありません。
優れたソフトウェア エミュレーションは、平均的なハードウェア エミュレーションよりも優れています。Dolphin と Mesen の両方が思い浮かぶように、かなりの数のソフトウェア エミュレーターが優れています。そして、コンソールの世代が上がるにつれて、完璧なハードウェア エミュレーションを実現するのはますます難しくなるでしょう。
(実際、何十年にもわたって素晴らしいエミュレーションを実現してきた 8 ビット システム用の FPGA を入手するのはほとんど無駄です。カートリッジ内のオリジナルのサウンドチップで悪魔城伝説をプレイするのは素晴らしいことですが、実際には、次のようなシステムが必要です。セガサターンのように、ソフトウェアでのエミュレーションが不十分)
かなりの数の人が、ステートの保存、USB コントローラーのサポート、HDMI 出力/アップスケーリングなど、とにかく完璧なハードウェア エミュレーションに反する追加機能を望んでいます。(ただし、少なくともアップスケーリングと USB コントローラーのサポートは、再作成されるシステムの「外部」に実装できます)。
Analogue が FPGA であるにもかかわらずオリジナルのシステムに及ばない例としては、Duo での Everdrive サポートや Mega SG での Codemasters/Master System ゲームが挙げられます。
一方、FPGA システムは、新しい拡張チップを使用してゲームをプレイする唯一の実際の方法です。Paprium が思い浮かびます (互換性の問題はすべて Fonzie のせいにして問題ありません。Paprium は MegaSG では動作します)、または SNES での SuperRT レイトレーシングのデモです。
ソ:複雑ですね。理論的には、完璧なハードウェアの再現は完璧なソフトウェア エミュレーションに勝りますが、実際には完璧なエミュレーションは存在しないため、実際の製品を確認する必要があります。
そう、私が言ったように、彼らが「エミュレーションなし」と言うとき、彼らは「ソフトウェアエミュレーションなし」を指します。
誤解しないでください、ハードウェアエミュレーションの方が正確ですが、ゲームボーイのゲームは実質的にどのデバイスでもソフトウェアエミュレーションではうまく動作しないと本当に言い張るつもりなのでしょうか?
個人的には、このPocketを購入する主な理由が、実際のカートリッジを読み取ったり、プレミアム ハードウェアを備えた素晴らしい画面を備えているという事実ではなく、単にハードウェア エミュレーションだけである場合は、間違った理由で購入していると思います。
これらの回答の多くは、適切な説明なしに必要以上に専門的であるように感じます。注意すべき重要な点は、物理プロセッサには、データを使用して多くの特定の機能 (数学や if/then 関数など) を実行できる論理ゲートの特定のアーキテクチャがあるということです。
これらの機能はハードウェアの電気機械レベルで実行されるため、非常に高速です。プロセッサーが実行するすべての処理は、これらの基本的なハードウェア操作に基づいて構築されています。これらの操作 (論理ゲートと呼ばれる) を使用すると、意味のある変数の新しいセットを作成できます。
これらの変数を組み合わせて使用することで、より多様で意味のある変数のより高いレベルのセットを作成できます。これらの新しい変数を使用および組み合わせることにより、さらに大きく、より意味のある、より高いレベルの変数を無限に作成できます。最終的には、ユーザーがユーザー インターフェイスを使用してハードウェアと対話する最上位レベルに到達するのに十分なレイヤーが作成されます。
エミュレーションは、その環境 (すべてのレイヤーを含む) をボトムアップから再作成しようとするプロセスです。ほとんどの場合、エミュレーションというと、ソフトウェア エミュレーションを使用することを意味します。
言い換えれば、彼らは、その前の多くのレイヤーの上に構築された既存のコンピューター上の非常に高いレベルのレイヤーを取得し、特定のハードウェア プロセッサの環境を再作成し、その上にその結果として生じるすべてのレイヤーを再作成しようとしています。
ご想像のとおり、エミュレーション環境を構築しているシステムや、エミュレートされるチップの固有の特性/タイミングによっては、これは非常に難しい場合があります。ソフトウェア エミュレーションが非常にリソースを大量に消費するのはこのためです。
Analogue は FPGA チップを使用しており、これにより「ハードウェア エミュレーション」が可能になります。言い換えれば、ハードウェア チップ自体は、論理ゲート レベルで、エミュレートするチップの元の論理構成に可能な限り一致するように再構成されます。これは、基本的にハードウェア レベルで可能な限り最低のレベルがエミュレートされていることを意味します。
ソフトウェア エミュレーションはすでに高い層のスタック上に構築されていないため、ソフトウェア エミュレーションよりもはるかに少ない電力、時間、リソースではるかに高速になります。重要なのは、すべては設定がどの程度正確であるかに依存するということです。ほとんどの企業は (存在するとしても)、完全なエミュレーションを可能にするアーキテクチャ マップを公開していません。
FPGAではチップが可能な限り一致するように再構成されていると述べたのはこのためです。チップがどのように設計されているかを正確に知っていれば、おそらくそれを FPGAで完全またはほぼ完璧に再現できるでしょう。実際には、特定のチップがどのように設計されたかを試行錯誤しながらリバース エンジニアリングに全力を尽くしているだけです。そのため、FPGAチップであっても、とりわけ元のハードウェアとまったく同じように動作しないのです。
明確にしておきますが、ソフトウェア エミュレーションはサイクル精度が高く、ロジックも完璧ですが、それ自体の欠点もあります。エミュレートしているチップよりもはるかに多くの電力を必要とし、多くの場合、外部からの中断が発生する可能性がある独自の環境で実行されます。また、元のチップと一致するように適切かつ正確にプログラムする必要があります。
一般に、FPGA エミュレーションははるかに高速で、必要なリソースも少なくなります (また、外部干渉を受けません)。ただし、エミュレートされるチップの動作を再現するには、正確にプログラムする必要もあります。つまり、正確にプログラムされていれば、FPGA の方がはるかに優れている可能性があります。
ソフトウェア エミュレーションも、より正確にプログラムされ、ターゲット チップよりもはるかに強力で、それに伴う消費電力や環境のハンディキャップがある場合には、より優れたものになる可能性があります。実際のアプリケーションでは、正確にプログラムされている限り、FPGAの方が常に優れています。
間違いがあった場合は、遠慮なく修正してください。