FCCの設計図

現状のモジュール間の関連は上の図のようになっています(主要な部分のみ)。

ほかのエミュレータと違うのが、青枠で囲まれたモジュールのあり方です。
青枠のモジュールは、トランスレータによって自動的にソースコードが生成されるモジュールを表しています。

「decompiled PRG-ROM code」が、6502のコードをあらかじめJavaソースコードに変換しておき、6502のエミュレーション高速化を行うモジュールです。
「PRG-ROM memory mapper controller emulator」「CHR-ROM memory mapper controller emulator」は、NESのマッパーの種類によって、バンクチェンジ等の処理を担当するモジュールです。

NESのマッパーの種類によって、プログラムを分岐していくのではなく、最初からそのマッパー専用のプログラムを作り出すようにするわけです。

入力されたNES ROMにあわせて、マッパー対応のコードを差し替えているようなイメージです。

これならば、マッパーの種類が増えてもプログラムのサイズが増えないし、分岐することによって速度が低下することも防げそうです。