NEOGEO CDZ Emulator 0.2.1 for PSP

現在使用しているPSPSDKは SVN revision 1812 です。

バグ報告はこちらまでお願いします。 neocdz@infoseek.jp

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

※ファームウェアVer.2.0以上で、EBOOT Loader等を使用する場合の制限
  スリープはできませんのでご注意ください。実行するとフリーズします。
  NEOGEO CDZ Emulator側で対応することも不可能ですので、ご了承ください。


※フォルダの設定とかがわからない方がいるようですが、基本的にはNeoCDPSP 0.5と同じです。
  NeoCDPSP 0.5のフォルダがあればそのまま使用可能です。

/PSP/GAME/NCDZPSP/
                  + EBOOT.PBP
                  + loading.png (無くても動作します / 配布ファイルには入っていません)
                  + logo.png    (無くても動作します)
                  + NEOCD.BIN   (BIOS / NEOGEO CDZのBIOSのみ対応)

※ startup.bin, patch.prgは不要です。
※ BMP形式の画像ファイルはサポートしていません。

ゲームはZIPファイル/フォルダに全てのファイルを取り出したもののいずれかが使用可能です。
ISOイメージは使用できません(今後も絶対に対応はしません)。
音楽はMP3形式に変換して、以下の様に"neocd.mp3"サブフォルダに置く必要があります。

ゲーム用のフォルダはどんな名前でも構いません。
NCDZPSPフォルダの下に置かなくても(例えば、/PSP/MUSICに作成しても問題なし)動作しますが、
ファイルブラウザで移動の手間が増えるのでお勧めしません。

例: ZIPファイルを使用する場合

/PSP/GAME/NCDZPSP/MetalSLug/
                            + mslug.zip
                            + neocd.mp3/
                                       + Metal Slug - Track 02.mp3
                                       + Metal Slug - Track 03.mp3           
                                       + Metal Slug - Track 04.mp3
                                       ....
                                       + Metal Slug - Track 20.mp3

例: ZIPファイルを使用しない場合

/PSP/GAME/NCDZPSP/MetalSLug/
                            + ABS.TXT
                            + ARTC_OBJ.SPR
                            + ARTC_OTB.PRG
                            +      ･
                            +      ･
                            +      ･
                            + TTL_OTBL.PRG
                            + neocd.mp3/
                                       + Metal Slug - Track 02.mp3
                                       + Metal Slug - Track 03.mp3           
                                       + Metal Slug - Track 04.mp3
                                       ....
                                       + Metal Slug - Track 20.mp3

MP3ファイルは、ファイル名の最後を"xx.mp3"(xxは02〜99までのトラック番号)のファイル名で
作成してください。

=> "mslug-02.mp3", "track02.mp3", "02.mp3" はgood
=> "02-mslug.mp3", "track_2.mp3" はwrong

------------------------------------------------------------------------------------
0.2.1

・24bitカラーのPNG画像読み込みでフリーズしていた不具合を修正。

------------------------------------------------------------------------------------
0.2.0

・メニュー等の背景及びロード画面の画像をPNG形式に変更しました。
  8bitカラー(256色)または24bitカラー(16bitカラーに変換されます)の画像が使用可能です。
  logo.png/loading.pngというファイル名で、EBOOT.PBPと同じフォルダに置いてください。
  BMP形式のサポートはしばらく残しておくつもりでしたが、予定を変更して0.2.0で廃止
  しました。
・PSPのシステムの日付を取得する方法がようやく判明したため、ステートデータを更新
  しました。PSPに表示されている日付/時刻をそのまま記録します。
・0.1.9で追加したコントローラの切り替えですが、毎回メニューから開いて選ぶのは
  格闘ゲーム等でVSモードを利用して練習したりする場合にやや手間がかかるため、
  キーコンフィグにプレイヤー切り替えボタンを追加しました。(一番下のSwitch Player)
・BIOS起動時にスリープを行うと。メニューを閉じる時にフリーズしていた不具合を修正。
  これでフリーズの問題は完全に解消されたと思われます。
・バッテリー残量をメニューに表示するようにしました。
・バッテリー残量が残り少なくなった時に、警告メッセージを表示するようにしました。
・ゲーム画面更新前に画面全体をクリアするよう修正しました。
・zlibを1.2.3に更新しました。

※VSYNCの調整も行う予定でしたが、当分の間見送ることになりました。
  処理速度の関係上、MP3の再生でファイルを少しずつ読み込みつつデコードを行って
  いますが、この読み込みがVBLANK中に発生してしまった場合に、読み込みの負荷により
  画面更新処理が遅れて画面の乱れが発生するようです。
  (ブリキンガーのオープニングデモをCDDA再生ありと無しで比較してみると良くわかる
  と思います。333MHzでフレームリミットを解除して実行するとMP3再生ありでも150%以上
  の速度が出るため、処理速度の問題でもないことがわかります。)

------------------------------------------------------------------------------------
0.1.9

・エラーメッセージが表示された場合に、スプライトキャッシュの一部がクリアされ、
  画面が正常に表示されなくなっていたバグを修正。
・サウンドとCDDAの音量調整を追加しました。処理速度を下げたくないため、元の音量
  より小さい値しか設定できませんので、音量をあげる場合はメニューでサウンドとCDDAの
  音量のバランスを調整した上で、PSPの音量ボタンを操作してください。
  (追加メニュー項目：Sound volume, CDDA Volume)
・コントローラをプレイヤー2にも割り当てられるようにしました。
  メニューの追加項目"Controler"でPlayer 1/Player 2を切り替えてください。
・スリープが正常に動作するように修正しました。再開時にCDDAが曲の先頭から始まりますが、
  レスポンスを考慮すると避けられない問題ですので、ご了承ください。
  メニューに戻らなくても動作すると思います。

※サウンドとMP3の処理を書き直したため、新たな不具合が発生している可能性があります。
  問題がありましたらご連絡ください。

(0.1.9 bugfix 1)
・ユーザインタフェースの描画処理で一部根本的に間違っている部分があったため、修正。
  ユーザインタフェース描画のパフォーマンスが向上していると思います。
  また、画面クリア処理時にスプライト領域が破壊されていた可能性がありましたが、
  おそらくこれも修正されていると思います。

(0.1.9 bugfix 2)
・bugfix 1でサウンドとビデオで新たなバグが発生していたので修正。すみません。

(0.1.9 bugfix 3)
・24bitビットマップを背景画像として使用していた場合に、正常に表示されなくなっていた
  不具合を修正。
・ついでなので、スナップショットをPNG形式に変更しました。画像の保存にかかる時間が
  大幅に短縮されました。

(0.1.9 bugfix 4)
・zipファイル使用時にスリープを使用すると、再開後にファイル読み込みエラーが
  発生していた不具合を修正。
  (直ったとは思いますが、確実にプレイを再開したいのであれば、セーブステートを
  併用することをお勧めします。)

(0.1.9 bugfix 5)
・オートファイヤーが正しく動作していなかった不具合を修正。
  ゲームによってはボタンの押下間隔をある程度空けないと動作しないので、"Autofire Interval"の
  項目をご確認ください。（例:メタルスラッグ "4 frames" 以上でないと動作しません)

(0.1.9 bugfix 6)
・スリープの対応を一時中止しました。スリープは行わないでください。
  0.2までには何とかします。セーブステートで代用してください。

(0.1.9 bugfix 7)
・スリープ処理を頑張って修正したつもり。
  スリープからの復帰時の挙動も以前より良くなっていると思います。
・MP3の再生でフリーズしていた可能性があるので修正。

(0.1.9 bugfix 8)
・メニューを開いた状態やポーズ時にMP3が一時停止される場合にスリープを行うと
  フリーズしていた不具合を修正。簡単に修正できたので更新しておきます。

※0.2に向けてソースの全体的な修正を行っておりますので、次のソース公開は0.2まで
  お待ちください。
  (0.1.9のバグ修正は進めますが、0.2のリリースはしばらく先になると思います。)

------------------------------------------------------------------------------------
0.1.8

・ステートセーブのメニューにDeleteの項目を追加しました。
・ステートセーブをした後に×ボタンを押すことで、メニューに戻らずに直接ゲームに
  復帰できるようにしました。
・ステートセーブで、データがあるスロットでロードを選択し直後にEmptyのスロットに
  移動しセーブを実行しようとした場合に、セーブができなかったバグを修正。

※PSPの電源によるスリープ/レジュームが正常に動作しなくなっているとの報告が
  ありましたが、原因が良くわからないため現状直っていないと思います･
  原因が判明するまでメニューを開いてからスリープするか、ステートセーブをご利用
  ください。

(0.1.8 bugfix1)
・BIOS起動ができなくなっていた不具合を修正。単純なミスでした。

(0.1.8 bugfix2)
・"ERROR: lost synchronization" が表示されることがあったようなので修正。
  多分直っていると思うんですが。
・セーブ/ロードステートの実行画面を表示したままHomeボタンを押して終了しようとすると
  フリーズしていた不具合を修正。

(0.1.8 bugfix3)
・ステートデータの日付を元に戻しました。私のPSPの日付が1年遅れてました(笑)
  処理はあっているのに何でずれるかわからなかったんですが・・・。
  表示処理の問題なので、データ自体には変更はありません。

(0.1.8 bugfix4)
・エラーメッセージが表示された場合に、スプライトキャッシュが一部クリアされて
  描画が正常に行われなくなる不具合を修正。

※サウンド/MP3のボリューム調整の要望がありましたので、次の0.1.9で対応します。

------------------------------------------------------------------------------------
0.1.7

・セーブ/ロードステート機能を追加。
  メインメニューでL/Rトリガーを押すとページが切り替わります。
  スロットを選択し、左右でセーブ/ロードを選択、○ボタンを押すとセーブ/ロードを開始します。
  各ゲームにつき、10個まで保存が可能です。

※PSPのシステムの言語設定に合った現在時刻/日付の取得方法がわからなかったため、
  エミュレータのRegion設定がJapan以外のときはGMTの時刻で保存しています。
  Japanの場合はJSTで記録します。(システムの言語設定に合った時刻の取得方法の情報求む)

※プログラム側でMC68Kのメインメモリから画像及びPCMデータの転送が行われた場合の
  保存/復帰処理を実装していません。ゲームによっては、復帰後に画像や音声が乱れる
  場合があります。

※データのサイズが比較的大きいです。(300KB〜1MBくらい)
  NEOGEO CDの仕様上、どうしてもデータのサイズをこれ以上小さくすることができないため、
  メモリスティックの読み書きに時間がかかります。
  書き込み字はデータ圧縮のために一時メモリスティックにアクセスしなくなり、ランプが
  消灯しますが、電源等を切らずにお待ちください。
  中断した場合ファイルが破損して、Windows等でチェックディスクを実行しないと
  ファイルが消せなくなります。

------------------------------------------------------------------------------------
0.1.6

・スプライトのズーム処理を修正。KOF'94の日本ステージのスクロール表示や月華の剣士1の
  コンティニュー画面の縮小処理が正常に表示されるようになりました。
  トッププレイヤーズゴルフやラリーチェイスの画面はまだおかしいですが、これを完全に
  直すには、ラスタエフェクトを有効にしないと無理でした。
・configとsnapディレクトリがない場合に、自動的に作成する処理を作るのをすっかり忘れて
  いたのでいまさらですが追加しました。

(0.1.6 bugfix)
・NEOドリフトアウト等で描画が正常に行えていなかったバグを修正。
・スプライト縮小描画処理の際、余分なスプライトが描画されていた場合があったバグを修正。
・レンダーのズーム処理使用時に、背景の左側に拡大前の画像が表示されることがあった
  不具合に暫定的に対処。

(0.1.6 bugfix 2)
・月華の剣士2のオープニングデモBでフリーズする不具合を暫定的に修正。

(0.1.6 bugfix 3)
・サウンドが44100Hzの時、22050Hzのストリーム出力処理を行っていた不具合を修正。

------------------------------------------------------------------------------------
0.1.5

・月華の剣士2が動作しなかった不具合を修正。
・必要なコードを誤って削除してしまったため、KOF'99等で画面が崩れていた不具合を修正。
・サウンドのサンプルレートに11025Hzを追加。あまり速度は変わらない模様。
  オプションの値が変更されたため、再設定しなおしてください。
・CDDAで曲が再生される際に、前に再生していた曲が一瞬再生されてノイズになる場合が
  あった不具合を修正。

------------------------------------------------------------------------------------
0.1.4

・入力チェックのバグで、常に60psのフレーム制限がかかっていた不具合を修正。
  60fps limitをOFFにしてみると良くわかるかと。
  VsyncをONにしてもほとんどのゲームが普通に動作するかもしれない気が。
・CZ80のバグ修正が完了しました。MAME Z80コアと変わらなくなったと思います。
  というわけで、MAME Z80版は廃止。
・サウンドのサンプリングレートを指定できるようにしました。
  44100Hzが選択できるようになりましたが、あまり変わらないかも。

(0.1.4 bugfix)
・サンプルレートを変更した場合に、メニューを抜ける際に再起動するようにしました。
・VSYNCオプションが無効になっていたので修正。ただ、まだきれいに同期できているわけでは
  ないので、いい方法を模索中。

(0.1.4 bugfix 2)
・再起動がうまくいかなかった不具合の修正。
・サンプルレート以外の変更でも、必要に応じて再起動するように変更。
・起動直後にBIOS起動を実行するとフリーズしていたバグの修正。

(0.1.4 bugfix 3)
・再起動のダイアログが×ボタンでキャンセルできていた不具合を修正。
・いくつかのゲームが起動できない可能性があった不具合を修正(psp-gccのバグっぽいんですが)。

※ちと体調を崩して辛いので、今週末は更新できないかもしれません。

------------------------------------------------------------------------------------
0.1.3

・一部のゲームでロード画面が表示されなくなっていた不具合を修正。
・Rボタンのスクリーンショットが非常に鬱陶しいので、デフォルトからはずしました。

------------------------------------------------------------------------------------
0.1.2

・龍虎の拳2がまたフリーズするようになっていたため修正。
・ADKのゲームでフリーズする、ロードエラーが表示されるなどの問題が発生していたため修正。
・その他、細かい修正をいくつか。

------------------------------------------------------------------------------------
0.1.1

・MC68000の割り込みをクリアし忘れていた不具合を修正。
  でも、C68Kの仕様上あまり関係ない模様。

・ロード画面を表示しない場合に、読み込み後に画面の一部が表示されない場合があった
  不具合を修正。

・ロード画面を使用しない読み込み及びロード画面を無効にした場合において、若干読み込み
  速度を向上。

・オプションを二つ追加。
  いずれも0.1で速度向上のために追加したスプライト管理機能のオプションです。
  通常は変更する必要はありません。

  Cache clear timing: 指定したフレーム数表示されなかったスプライトをキャッシュから削除
    速度を安定させるために、一定のフレーム数表示されなかったスプライトをキャッシュ
    からクリアしていますが、このオプションでそのフレーム数を指定します。
    キャッシュサイズをできる限り少なくするために、毎フレームチェックを行うため
    あまり小さい値にすると再登録の時間が増えて逆に重くなります。30以上を推奨します。

  Palette refresh type: パレット更新時のキャッシュクリア方法を指定
    パレット更新時に、「全てのキャッシュをクリアする」、「変更のあったパレットの
    スプライトのみをキャッシュから削除する」のいずれの方法でキャッシュをクリアするか
    指定します。通常は変更のあったパレットのみのほうがいいです。

------------------------------------------------------------------------------------
0.1 正式版

・Z80 CPUコアをMAMEのものに変更しました。
・CZ80の修正も一応終わったので、更新しました。
・サウンドの修正が完了しました。一部ゲームでおかしかったサウンドも直った模様。

------------------------------------------------------------------------------------
0.1 Release Candidate 4

※Z80の修正が進まないので、ちょっと更新しておきます。

・スプライト管理部分を変更。速度との兼ね合いで、このくらいがベストではないかと
  思います。オプションで設定を変更できるようにするかもしれませんが、ちょっと様子見で。
・ファイターズヒストリーダイナマイトで、ロード画面を無効にしていると、プレイ開始後に
  スプライトが描画されなくなる不具合の修正。
  (いつも情報ありがとうございます)

------------------------------------------------------------------------------------
0.1 Release Candidate 3

・CZ80のバグを一部修正。いくつかのゲーム(龍虎の拳2オープニングデモ等)での不具合が
  修正されました。無理な処理をしなくなったので、SSGの効果音もきれいに再生されるように
  なったかと。

※まだパワースパイクス2やダンクドリームのサウンドが再生されないので、どこか
  に不具合がある模様。週末までに間に合わせたいところ。

(RC3 bugfix)
・パレットが変更されるとスプライトが正常に描画されなくなる場合があったため、一部処理を
  一時的に元に戻しました。(パレットが徐々に変化する場合、ちょっと速度落ちてます)

------------------------------------------------------------------------------------
0.1 Release Candidate 2

・スプライト描画を最適化しました。ゲームによっては、RC1よりはだいぶ軽くなったと
  思います。

(RC2 bugfix)
・ファイルブラウザで拡張子のないファイルがあった場合にフリーズしていたバグを修正。

------------------------------------------------------------------------------------
0.1 Release Candidate

・ユーザーインタフェースの変更及びが完了しました。(多少の変更はあるかも)

・タイマ及びMC68000の割り込み周りの調整が完了しました。

・龍虎の拳2(Art of Fighting 2)のスピード変更が正常に反映されるようになりました。
　特殊な割り込み方法を使用しているため、このゲームのみ専用の処理を行っています。

・ラスタエフェクトは実装してみたものの、プレイ可能な速度ではなかったため廃止しました。
  使用予定だった000-lo.loも結局使わなかったため、現状では起動には不要となります。

・サウンドエミュレーションを変更中のため、いくつかのゲームで不具合が発生していますが、
  既知のバグですので、これに関する報告は不要です。

------------------------------------------------------------------------------------
0.1 beta 8

・うぅぅ、バックアップメモリの読み書きができなくなっていたバグを修正しました。
  ご報告どうもありがとうございます。

・こつこつ作成してきたフォントがようやく完成したので、ユーザインタフェースを新しい
  ものに変更中です。
  フォント(とアイコン)にアンチエイリアス処理とシャドー処理を行えるようにしました。
  GUでやろうと思いましたが、ソフトウェアでも十分速度が出ているのでこのままにしようかと。
  ダイアログ等はまだ作成していないため、古いユーザインタフェースのままです(進行度50%)。
  完成するまで更新するつもりはなかったので、バージョン表記は0.1になっていますが、
  まだ正式版ではありません(今週末に公開できるといいですが)。

------------------------------------------------------------------------------------
0.1 beta 7

・起動時にZoom1,Zoom2,Fullが指定されていた場合の描画の不具合を再度修正。
・上記の問題に伴い、ユーザインタフェースの描画処理(pg.c)を暫定的に書き直し。
  エミュレーション側の描画方法と異なり不具合がおきやすいため、最終的には廃止予定。
・リスタートを選ぶと無限ループに陥っていた不具合の修正。

------------------------------------------------------------------------------------
0.1 beta 6

・メールでご報告いただいた、起動時にZoom1,Zoom2,Fullが指定されていた場合の描画の
  不具合を修正。
・ついでなので、ラスタエフェクト対応に備えてスプライト描画処理を変更。
  (※ラスタエフェクトには対応していません)
  000-lo.loが必要になります。neocd.bin同様、EBOOT.PBPと同じディレクトリに
  置いてください。
・オートフレームスキップの初期化を修正。

------------------------------------------------------------------------------------
0.1 beta 5

・サウンドタイマの処理を調整。
・ロード画面等の画面クリアの処理を修正。

※ネオジオエミュレーション部分の調整はこれで一段落です。
  次あたりでインタエースの変更を完了して、正式版にしたいところ。

------------------------------------------------------------------------------------
0.1 beta 4

・ラスタカウンタの処理を修正。ラスタカウンタをチェックする以下のゲームが動作する
  ようになりました。

  OVER TOP
  NEO Drift Out

  これで全部動作するようになったんじゃないかと。
  あとはラスタエフェクトをどうにかしないと・・・。

------------------------------------------------------------------------------------
0.1 beta 3

・タイマ処理で無限ループにはまってしまう可能性があった不具合を修正。
  ちとまずい処理だったので修正しました。

------------------------------------------------------------------------------------
0.1 beta 2

・ベクタテーブルの保存の際、ROM領域とRAM領域を間違えていたため、かなりの数のゲームが
  動作しなかった不具合を修正。
・ネオジオCDのVRAMエミュレート用のメモリが、半分しか確保されていなかった不具合の修正。
・ハードウェアレンダリングを修正。拡大縮小時のスプライトがきれいに表示されるように
  なりました。これに伴い、ソフトウェアレンダリングを廃止。
・CPUとサウンドのスケジューリングを若干変更。まだ不完全ですが、以前より多少SSGサウンド
  がきれいに再生されるようになったかと。
・設定ファイルをテキスト形式で保存するように変更。
・キーコンフィグ設定ファイルをテキスト形式で保存するように変更。
  configディレクトリに保存されます。
・スナップショットをsnapディレクトリ内に保存するように変更。
・メニュー項目をいくつか追加、変更

  (追加)
  Auto frameskip limit:
     オートフレームスキップのスキップしないスピードの下限値を指定します。
     エミュレーションスピードがこの値を下回った場合にオートフレームスキップを開始します。

  (変更)
  Restart:従来のResetです。エミュレーションを初期化からやり直します。
  Reset:エミュレーションをリセットして、タイトルに戻ります。

------------------------------------------------------------------------------------
0.1 beta 1

・ネオジオエミュレーションコアを拙作のNEOGEO CDZ Emulatorベースに全て書き直し。
  チェックしていませんが、ほとんどのゲームは動作するかと。
・ロード画面対応。
・PSP依存部分を修正。
・細かなフレームスキップ設定、オートフレームスキップを追加。
・キーコンフィグを追加。
・サウンド修正。
・startup.bin及びpatch.prgは不要に。
・タイトル画像があるゲームは、メニュー上に表示(ZIP圧縮ファイルは展開に時間が
  かかるため未対応)
・NeoCDPSPじゃなくなったので、センスのないアイコン、背景画像、メニューの背景
  を仕方なく作成。(ロード画面は作っていませんので、適当に用意してくだされ。
  ファイル名は本家と同じloading.bmpです。なくても動作しますが)
・そして、実行速度の低下(笑)
