質問

Wii用のエミュレーターを作成している人々について読んでいますが、それは強化されたGameCubeまたはNintendo64にすぎないので、これらのシステム用のエミュレーターの作成を難しくしているのはなぜですか?

ちょっとした補足として、これらのシステムのハードウェアは驚くほど低いです:
Wii:
<!> nbsp; <!> nbsp; <!> nbsp; 729MHz PPC CPU
<!> nbsp; <!> nbsp; <!> nbsp; 88MBメモリ
<!> nbsp; <!> nbsp; <!> nbsp; 243MHz GPU
N64:
<!> nbsp; <!> nbsp; <!> nbsp; 93.75MHz CPU(64ビット)
<!> nbsp; <!> nbsp; <!> nbsp; 4MBメモリ

役に立ちましたか?

解決

ゲームコンソールのCPUアーキテクチャは、平均的なデスクトップマシンと比較して、ややエキゾチックです。 エミュレーションとは、元のハードウェアが実行したすべてをソフトウェアで実行することを意味します。つまり、元のコンソールには専用のグラフィックス、オーディオなどのチップと、異なる命令セットを備えたCPUが搭載されている場合がありますが、エミュレーターはこれらの並列リソースのすべての機能を高速で実行する必要があります。

コンソールのGPUが古い場合を除き、最新のグラフィックカードは、たとえ安価なものであっても、最も高価なマルチコアCPUの何倍ものスループット(グラフィックワークロードの場合)を持っているため、ほぼ確実にホストマシンのGPUでエミュレートする必要があります。この困難をさらに悪化させるのは、CPU、GPU、その他のオンボードDSP、およびメモリ間の通信がコンソール上でおそらく高度に最適化され、ハードウェア構成の特性を活用するため、これらのリソースもレートマッチングする必要があるという事実です。

これらすべての難しさを複雑にしますが、通常、コンソールのハードウェアの詳細についてはほとんど知られていないため、これは設計上非常に困難になっています。リバースエンジニアリングは、愛好家がやることがますます少なくなっています。

物事を把握するために、アーキテクチャシミュレーター(たとえば、x86マシンでPowerPCプログラムを実行し、それに関するあらゆる種類の統計を収集できるプログラム)は、リアルタイムよりも1000倍から100000倍遅く実行される可能性があります。最新のCPUのRTLシミュレーション(チップを構成するすべてのゲートとフリップフロップのシミュレーション)は、通常10Hzから数百Hzの間でのみ実行できます。非常に最適化されたエミュレーションでさえ、ネイティブコードの10〜100倍遅い可能性が高いため、今日特に説得力をもってエミュレートできるものが制限されます(特に、ゲームコンソールエミュレータによって暗黙のリアルタイムインタラクティビティが与えられる場合)。

他のヒント

エミュレーションが難しい理由はいくつかあります。

  1. システムをエミュレートするには、ターゲットシステムよりもはるかに多くの電力が必要です

ホストシステムには、ターゲットシステムよりも1桁大きい電力(速度)が必要な場合があります。ホストマシンが元のシステムのすべての作業を行う必要があると考える場合、これは簡単に理解できます。さらに他のアプリケーションとシステムリソースを共有しながら、コンポーネント間のすべての通信を管理します。これが、わずか21MHzで動作するSNESを忠実にエミュレートするのに2GHzプロセッサが必要な理由です。

  1. 時々、命令セットやサブシステムの動作が人々に知られていない

ほとんどのハードウェアは本質的にブラックボックスであり、その動作の理解は、多くの時間と忍耐を要するリバースエンジニアリングによって把握されます。言うまでもなく、企業はリバースエンジニアリングを困難にするために最善を尽くし、企業はこのポストステーション1の時代にはるかに良くなっています。

  1. エミュレータを構築する人々の不足

エミュレーションは、多くの分野で多くの実用的な知識を必要とするかなりニッチな領域です。率直に言って、現代のシステムの多くをエミュレートできる人は多くありません。これらのシステムをエミュレートするには多くの時間と労力がかかり、実際に行うのは最も熱心な人だけです。

エミュレータでの記述は、ソフトウェアでのOSの動作を含め、前述のハードウェアの動作を正確/完全/絶対に複製する必要があるため困難です。

古いコンソール用のエミュレーターの作成は、最新のコンソール用のエミュレーターの作成よりも困難な場合がありました。なぜなら、最近のコンソールの多くは何らかの形のLinuxまたは* nixを使用しているため、ハードウェアがエミュレートされると、ソフトウェアはマシンのBIOSをダンプし、制御を処理する問題になります。

古いコンソールはハードウェアですべてを行いました。つまり、リバースエンジニアリングがはるかに大きな役割を果たしました。古いコンソールがどのように機能し、各マジックナンバーが何を意味していたかを文書化するために、非常に優秀な低レベルのハッカーが必要でした。

今日、魔法の数字は少なくなりましたが、代わりに標準のGFXカードとCPUがあります。最新のハードウェアには、より多くの命令とエミュレートする光沢のあるものがありますが。古いコンソールとは異なり、最新のコンソールが行うことの多くは、十分に文書化されています。

ゲームプログラムがその特定のハードウェア用に作成されているため、ハードウェアのすべての利点を活用できます。スーパーコンピューターを使用している場合でも、スーパーコンピューター自体のハードウェアと通信できない特定のプログラムを適切に実行することはできません。 PS3 / 4やxbox OneなどのコンソールでPCゲームを実行する場合も同じ状況です。 99%動作する唯一のエミュレータはSnesエミュレータとPS1です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top