----------------------------------------------------------------------

         PSP用アーケードエミュレータソースコード (20061015)

                            NJ (http://neocdz.hp.infoseek.co.jp/psp/)
----------------------------------------------------------------------

CPS1PSP/CPS2PSP/MVSPSPのソースコードです。


- 20061015 -
・CPS2PSPのソースコードにCPS1PSPとMVSPSPのソースコードを統合しました。
  あまりまとめすぎてもわかり辛くなると思うので、このくらいに留めておいた
  方が良いでしょう。
・rominfoファイルの書式変更に伴い、romcnvも更新してあります。
・MVSPSPは実はタイマーをint型で処理するため、正確なクロックで動作して
  いません。理由はdouble/floatだとFM音源のタイマーの計算でcrswordの
  動作速度が大幅に低下するため(なぜかこのゲームのみ割り込みが極端に
  多い模様)。
・AdHocは意味が無さすぎるので削除しました。

----------------------------------------------------------------------

以下、CPS2PSPのソースに関する簡単な説明です。
基本的に、他のエミュレータも同じです。

----------------------------------------------------------------------
参考にしたソースコード

基本的な処理の流れ(CPUのクロック数やメモリマップ、更新タイミング等)は
MAMEを参考にしています。

スプライトの描画順序はFBAを一部参考にしています。

ただ、上記のエミュレータをそのまま移植してもPSPではまともな速度では
動作しないため、エミュレータ自体は新規に作成しており、PSPのハードウェア
の機能を多用しています。全体的に汎用性に欠ける構造になっていますので、
他機種に移植を考えている場合はあまり参考にならないと思われます。

----------------------------------------------------------------------
キャッシュファイルの構造について

あまり複雑にすると、処理に時間をとられて速度が低下するので、実際
にはたいしたことはやっていません。

romconv.exeはメモリに読み込み後、不要なデータ(重複しているものや、空き
領域)を削除し、処理しやすいように展開処理した状態のスプライトデータを
64KB単位に分割し、データの表示フラグやマスク処理のフラグを作成した後、
ゲーム名_cache.zipに保存します。
詳しい説明はソースを公開しているので割愛します。

CPS2PSP本体では、キャッシュデータはリスト構造で管理し、使用したものは
リストの最後尾に移動します。必然的に最も使用しないデータがリストの先頭
に配置されるので、新たに読み込みが必要な場合はこの先頭のデータ(最も古い)
を削除し、空いた領域に新しいデータを読み込んだ後にリストの最後尾に移動
します。処理的にはこの繰り返しです。

スプライトデータを分割している理由は、zipファイル内ののシークができない
ためで、64KBはいろいろ試した結果最も効率が良いと思われるサイズです。
zip圧縮しないとメモリスティックの読み込み速度の遅さにより、大幅に速度が
低下すると思われます。

それと、Neo4AllのようなMMUを直接操作するキャッシュ処理は難しいでしょう。
PSPで可能なのかどうかもわかりませんが、仮にできたとしても、メモリスティ
ックの転送があまり速くないため、それほど効果は無いように思われます。

----------------------------------------------------------------------
C68K及びCZ80について

どちらも私が使いやすい形に大幅に書き換えてあり、元のソースと互換性は
ありません。流用される場合はご注意ください。CZ80は一部のバグも修整
(割り込みとSBC16にバグあり)してあります。

----------------------------------------------------------------------
バグ修正やソースの改良などされた場合は以下を利用してご連絡いただけると
助かります。申し訳ありませんが、要望はご遠慮ください。

http://neocdz.hp.infoseek.co.jp/cgi-bin/upload/upload.cgi
