スペカで動くPSエミュ(SDL版)
とりあえず動いてます。 xi が MAX 17/60fps くらい。
zpsx_slc3000.gz (gzip -d で解凍)
- このプログラムを使ったことにより発生した問題に関して、私は一切の責任を負いません
- 本家は ZPSX、フォーラム。GPLなのでソースはそのうちアップします
- libsdl-1.2.5-bvdd (ぴろさん) および bvdd_0.4.0-1(attyさん)が必要、X/Qt は不要
使い方は、
(1) 内蔵の互換BIOSを使うか、 bios/scph5000.bin を各自用意する (2) snes9xと同様に、環境変数 ZPSXKEYS でキー設定できる。例えば、 ZPSXKEYS=8,107,109,104,105,117,111,121,112,13,32,97,100,101,120,119,122,114,99,9,113 (QUIT,◯,×,□,△,L1,R1,L2,R2,START,SELECT,L,R,U,D,LU,LD,RU,RD,ACCEL,SLOW) (3) 終了はESC(上の例ではBS)キーだが、時々キー入力を受けつけなくなるので、 その場合はリモートログインしてプロセスを強制終了すること
音声は出ません。オープニング動画も表示されないので、ゲーム開始まで忍耐が必要です。
開発環境の概要(補足)
- SL-C* で使われているプロセッサ(XScale、PXA270)は、ARM v5TEアーキテクチャで、さらに iWMMXt (Intel Wireless MMX) の命令セット(MMX, SSE, XScale命令)が利用できる(1,2,3,4,5)
-
- (追記) iWMMXt は実際にはコプロセッサで処理しているが、FPAも同じコプロセッサを利用するので、iWMMXtを使うためにはsoftfloatでなくてはならない(阿川のひとりごと2004-12-03)
- FPA(Sun FPA 浮動小数点命令)と VFP(ベクタ浮動小数点)があって、SL-C*はFPA。違うもの同士リンクさせようとすると、リンカに怒られる。実行ファイル/共有ライブラリ(*.so)がどちらを使っているかを確認するには、"objdump -p" とすればよい
- QtopiaSDK(1.5)は、gcc-3.* でビルドできない
- Kernel-2.4.20* はgcc-3.{3,4}.* でビルドできない。gcc-3.2.3はO.K.(ぴろのざう日記2004-12-09)
-
- ※ここでいう「ビルドできない」は、「ちょっといじったくらいではうまくいかない」の意
- MPlayer(attyさん)は gcc-3.4.5-iwmmxt-softfloat。さらに、Intel IPP 関数ライブラリを利用している(IPPライブラリは [VFP][SoftFP])
開発環境の概要
SL-C シリーズ向けの開発環境について、gccのバージョンを元に整理してみます。
- gcc-2.95.3 : kernel(2.4.20*), QtopiaSDK(1.5) の構築用
gcc-3.2.3 (xscale) : Special Kernel の構築用- gcc-3.4.5 : 速度を要求するプログラム(mplayer,SDL,エミュレータ等)のビルド用
- gcc-4.* は未検証
(追記) 2.でビルドしたカーネル/モジュールは、gcc-2.95.*でビルドしたものと一緒に使用できないので、特殊用途です。誤解を避けるため削除しておきます。
結局、1,2,3の環境(セルフ/クロス)を必要に応じて使い分けてます。。
→ 補足につづく
バックアップとリカバリ
モジュールをいれたら/homeの容量がなくなってきたので、徐に
- find /lib/modules/2.4.20/kernel/ -name *.o | xargs strip
としたら、モジュールが動かなくなりました。stripのバージョンがまずかったかな?
そこで /home をリカバリ。問題は、そのままでは jffs2をループバックマウントできないこと。以下覚書。
# バックアップ # Zaurus Wikiさんの ROMBackupを参考にしつつ、ROMの完全バックアップ。 dd if=/dev/mtdblock2 of=/hdd2/root.jffs dd if=/dev/mtdblock3 of=/hdd2/home.jffs dd if=/dev/ram1 of=/hdd2/dev.minix # リカバリ # (1) jffs2をループバックマウントしてファイルを取り出す (えびめもさん) # → 現状では mout コマンドですら Segmentation fault が出るので× # (2) メンテナンスモード(B+D+リセットボタンを押す)で dd if=/hdd2/home.jffs of=/dev/mtdblock3
大したサイズではない(5MB)ので、 /home は tar でもバックアップしとくべきでしょう。
v18d用モジュール
一応、カーネルモジュールをv18d用にビルド。
欲しかったのは、 squashfs, acm(FOMA), nfsd(server), UDF。
# カーネルソースにv18dのパッチと squashfs2.2-patch を当ててから、 # (ちなみに、squasfs パッチを当てると zImage のビルドに失敗する) # 必要なモジュールを有効にしておく cd linux cp v18d-C3000.config .config make menuconfig # ビルド (/tmp_install_dir/ にモジュールができる) make dep make clean modules make modules_install INSTALL_MOD_PATH=/tmp_install_dir/
v18aでも同じだけど、
- (1) SHARP提供のクロス環境では GCCのオプション (-mcpu=iwmmxt) が× ( → arch/arm/MakefileをいじればO.K. )
- (2) (クロス/セルフ環境の) gcc-3.2.3 ではそのままで問題無くビルド
開発環境については、そのうちまとめます。
(追記) (1)は、binutils-2.16.1で上書きすることで "-mcpu=iwmmxt" が使えるようになります。 →2006-04-30
v18d
v18c入れたばっかりなのに…。でも速攻で入れました。問題なく動作してそう。
- (追記) CreativeStationさんが性能評価されています(2006/04/12の記事)。