・これはなに？

凄いとウワサの TGB Dual をなんとなく Linux その他で
動くであろう SDL を用いて移植したものです。

いちおう Linux と Linux Zaurus で動作確認してます。
たぶん SDL が動いてリトルエンディアンな環境なら割と動くかと。

オリジナルのドキュメントは docs の下にあります。

オリジナル同様、このパッケージは GPL2 にて配布されます。


・動かしかた。

make して cd sdl_ui して ./tgbdual <ROM> で OK。

TGB.ini は DirectInput のキーコードで指定します。
付属の dinput_sdl.h を参照するなり、
Windows 版の TGB Dual で設定して移動して下さい。

まず起動時にカレントディレクトリの TGB.ini を
読み込もうとして、無ければコンパイル時に指定したディレクトリを見ます。
次に save データですが TGB.ini の save_dir を見ます。
もしこのエントリが存在しないか、 Windows でなくて
save_dir が : を含む場合(Windowsの設定ファイルを他システムで利用時)、
$(HOME)/.tgbdual/save を使います。ああややこしい。

キー配置はデフォルトではオリジナルのものと同じですが、
いくつかキーが増えています。
[sys_key] の部分に
full_type, full_code, reset_type, reset_code, quit_type, quit_code
を設定できます。それぞれ意味はフルスクリーン、リセット、終了で、
デフォルトでは f, r, ESCAPE が割当てられています。
また、special の部分に no_dinput = 1 を指定すると
キーコードを SDL のキーコードで指定できます。


・ぼくがやったこと。

自信を持って言えます。何もやってません。
TGB Dual のコア部分は立派です。

lcd.cpp のインラインアセンブラは VC 表記でしたんで C に翻訳しました。
どうせ ARM に移植したいのでアセンブラにはしませんでした。
後で gcc のインラインアセンブラにしてみましたが、
たいして速くならなかったのでやめました。

絵は少しフォーマットを変えたらすぐにうまくいきました。

音楽は流し込めば鳴りました。

入力は普通に取りました。

TGB.ini を読み込むクラスはできています。
書き込みはまあいらないという方向で。

ROM は gz か zip も読みます。

Big Endian 対応は面倒そうです。

セーブデータは gzip 圧縮されています。
state save は gzip 圧縮されてません。 gb_core に手入れたくないので。


・まだやりたいこと。

コードクリーニング。

2. チップ の意味がわかんないよ？大丈夫？

通信。ソース見る限り厳しげ。

SL-A300 (リナザウ) 対応。(ペン入力)

他にも未実装なものがありますが、要望があれば対応するかもしれません。


・やりたくないこと。

UI にまつわる全て。

PAR。

複数 ROM 。通信さえあればいい気が。


・謝辞

オリジナル作者であり、ソースを公開された Hii さん。

阿川さんの zgnuboy の zip 読み込みを参考にしました。

Windows 対応パッチを ryoh さんにいただきました。
