------------------------------------------------------------------------------
	gpSP for WindowsCE v2.7
	2025 TMK
------------------------------------------------------------------------------

●このソフトについて

PSP用ゲームボーイアドバンス(GBA)エミュレーターであるgpSPを、WindowsCEに移植したものです。
このエミュレーターは動的リコンパイル方式のため、従来のWindowsCE向けGBAエミュレーターとは比較にならないほど非常に高速で、
第二世代Brain以降では、フルスピードのエミュレーションが可能です。

元は自分で使うために移植したものでしたが、出来がいいので公開することにしました。

移植元のバージョンから存在するバグも発見した限り修正し、できるだけ安定動作するように修正しています。

バージョン2.7にて:
移植元バージョンで非対応だった、ROMアドレスにパッチするPARv1チートコードを独自サポートしました。これにより動作するコードは大幅に増えたはずです。
また、ゲームの.cfgファイル、.svsファイル(セーブファイル)をROMと同じディレクトリに置くよう変更しました。従来のバージョンでは　これらは実行ファイルがあるディレクトリに置かれていますので、v2.7に移行する場合は、ROMがあるディレクトリにファイルを移動してください。


●準備

・ゲームのROMファイル
これはエミュレーターなので、当たり前ですが必要です。
ROMカセットからの吸出しについてはインターネットに情報が沢山あります。

・BIOSイメージ
エミュレーターの動作にはGBAのBIOS ROMのイメージ(gba_bios.bin)が必要です。
このエミュレーターには以下のフリーな代替BIOSイメージが同梱されています:
https://github.com/Nebuleon/ReGBA/tree/master/bios
ただしあくまでこれは代替品なので、実機から吸い出したイメージに置き換えると一部の動かないゲームが動くようになるかもしれません。

・game_config.txt
ゲームROMごとに、セーブ領域のサイズやアイドルループのアドレスを指定します。
うまくセーブされなかったり動作が遅いゲームは、ここへのROM情報の追加を試してください。


●使用方法

メモリを十分開けた状態(48MB以上が理想)で、gpSP.exeを実行してください。
起動するとすぐファイル読み込み画面が表示されます。
ROMを選択してEnterキーを押すとロードします。ROM容量やストレージの速度にもよりますが10秒近くかかります。

・キー割り当て(エミュレーターメニュー内)
上下左右キー カーソル
Enter     決定
ESC       戻る
その他、下記のゲーム内キー割り当てでも適切に動作します。

・デフォルトのキー割り当て(ゲーム内)
Dパッド    上下左右キー
A         A
B         Z
L         Q
R         P
Start     ハイフン
Select    M
メニュー   ESC
早送り     U
ロード     I
セーブ     O
これらは設定で変更可能です。
また、画面タップでメニュー表示が可能です。

・早送り(Fastforward)
ゲームの同期を無効にし、可能な限り早送りで実行します。
動作が微妙に不安定なのであまりおすすめはしません。
既に描画が追い付いていない場合は効果がないので、その場合はフレームスキップを適度に増やしてください。

・メインメニュー
ゲーム実行中にメニューキーを押すか画面タップでメニューを表示できます。
諸々の設定やゲームのセーブ/ロードなどか可能です。

・セーブ/ロードステート(Load/Save state)
ゲームの状態をそのままファイルに保存可能です。
スロットは0-9の10個あり、メニュー上で左右キーを使って切替可能です。
ゲーム内のセーブ機能がうまく機能しない一部のゲームでは、この機能で保存してください。

・画面スケーリング(Display scaling)
ゲーム実行時の画面の拡大比率を指定できます。
1倍から3倍までありますが、拡大するとフレームレートは下がります。
第二世代Brainなら2倍、三/四世代Brainなら3倍スケールで画面いっぱいになります。
ただしマシンの画面解像度より大きくなるスケールを指定するとフリーズするので注意。
ちなみに第二世代以降のBrainなら、1倍スケールでほぼフルフレームで実行できます。
見やすさを取るかフレームレートを取るか、お好みでどうぞ。

・フレームスキップ(Frameskip)
基本はautomaticで問題ありません。
上記の早送り機能を利用する場合などはフレームスキップを手動(manual)にしてスキップ数を指定してください。

・オーディオ出力
CPUに余裕がなくなるとプツプツ途切れます。
あまり綺麗に出力できるとは言えないので、オマケ機能です。

・チート(Cheats)
PAR(Gameshark)v1からv3のコードをサポートしています。
以下の形式で <ゲームROMファイル名>.cht として保存すると、メニューから有効化できます。

PAR_v1 CheatA
AAAAAAAA BBBBBBBB

PAR_v3 CheatB
CCCCCCCC DDDDDDDD

...

ただし、すべてのチートコードがこのエミュレーターでうまく動くわけではありません。
ROMエリア書き換えコードに関して、一度有効化した後に無効化しても(リセットではなく)ROMを再読み込みするまで効果が持続します。また、実機PARとは異なりROMエリア書き換えコードの数に制限はありません。


●最小システム要件

WindowsCE .NET 4.0
32MBの空きRAM
Thumb命令対応のARM系CPU 200MHz
480x272の16ビットカラーディスプレイ
キーボード

ExecutabilityCheck等でSDL.DLLとZLIBCE.DLLのバージョンを書き換えればCE3.0でも動くかもしれません。


●推奨システム要件

WindowsCE .NET 4.0
48MBの空きRAM
Thumb命令対応のARM系CPU 300MHz
480x320の16ビットTFTカラーディスプレイ
タッチパネル/キーボード


●動作確認機種

Sharp Brain PW-SH5 (imx28 ARM926EJ-S 454MHz ARMv5TEJ)
Sigmarion3 (PXA255 400MHz ARMv5TE / ATi IMAGEON 3200)

実行ファイルは以下のバージョンを用意しています:
Brain (ARM926EJ-S/ARMv5TEJ)用
Sigmarion3 (Xscaleシリーズ/ARMV5TE)用
ARMv4T (ARM720T/ARMv4T)用

ただし、動的リコンパイル方式である以上、CPUキャッシュ周りなどハード自体とシステムの実装に
依存する部分があり、機種によってはクラッシュするなどして正常に実行できない可能性は十分にあります。


●移植元バージョンからの変更

・キーボード操作対応
・内部処理のUnicode化
・一部ゲームがクラッシュする問題を修正
・おもにカレントディレクトリまわりのWindowsCE対応
・一部タッチ対応
・その他、大量の細かなバグ修正と安定化


●Q&A

・ROMが動かない
まず吸い出しが上手く行っているか確認してください。
次にgame_config.txtの追記を試してください(上記)。
ダメならBIOS ROMを実機のものに置き換えてください(上記)。
それでもダメならこのエミュレーターでは動きません！

・そもそもエミュレーターが起動しない
RAMが足りないとなにも起きず終了するかもしれません。

・ゲームを起動すると落ちる
ROMのロード直後や、ゲーム中の一定の場面に落ちるなら、そのゲームとは相性が悪いかもしれません。
それ以外の場合はおそらくRAM不足です。

・メニューキーをどこに設定したかわからないのでメニューに戻れない
私も開発中に何度かそうなったので、画面タップでメニューが表示されるようにしたんです。

・ゲーム内セーブが動かない
上記の セーブ/ロードステート の項目をお読みください。
また、ゲーム内セーブ直後に正常ではない方法でエミュレーターを強制終了する(リセットなど)と、
セーブが保存されないかもしれません。


●変更履歴

2025/5/14
バージョン2.3初公開。

2025/5/25
バージョン2.4公開。
・WindowsCE .NET 4.2より前のバージョンで動作するように修正

2025/6/1
バージョン2.7公開。
・ROMアドレスにパッチするPARv1チートコードを独自サポート
・ゲームの.cfgファイル、.svsファイルをROMと同じディレクトリに置くよう変更
・その他バグ修正
