PCSX2 0.8の頃のソースコードは、共通部分とOS依存・CPU依存の部分がキチンと分離されており、Linux版やx64版のpcsx2も比較的簡単に作ることができたのですが、0.9.1になってからWin32専用といった感じになっていました。

これは、Win32以外の他の環境に移植することが難しくなることを意味しています。

Win32専用にしてしまったのは、おそらく、性能、実行速度を最優先にするあまり仕方なく・・・。といった感じに見えます。

Memory.c、PsxMem.c、Hw.c、PsxHw,c、Vif.cがすごいことになっていました。


そこで、いきなりリコンパイラ部分の開発に入るのではなく、以下の順番で開発を進めています。


1) 共通部分と、OS依存・CPU依存部分の分離を図る。

  2つのソースファイルに分けるという意味ではなく(※本当はそうしたいのですが)、#if / #endifで囲う方法にします。

  diffツールなどで、pcsx2オフィシャルのものと、差分をとることを考慮した結果です。


2) まずはx64環境でインタプリタ版を動作させる。リコンパイラはなし。

  動きだしたら、欲しい人がいたらソースコードは公開しようと思います。非常に遅く動作すると思います。


3) リコンパイラを作る。

  やっとやりたいことができます。

  32ビット版の2倍の速度が目標です。実際には、1.2~1.4倍程度になりそうですが・・・。


ところで、先日、TLB版の方が筋がよさそうと言っていたのですが、よくよく考えてみると、VM版の方が筋がよいと意見を変えます。

勘違いしてしまったことは、TLBで管理するページのサイズを、もっと大きく(※4096から16777216)すれば、テーブルサイズが小さくなり、メモリアクセスがキャッシュにヒットしやすくなるのではと思ったことです。

実際にはページサイズを変更することはできませんでした。