スペカで動く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)キーだが、時々キー入力を受けつけなくなるので、
     その場合はリモートログインしてプロセスを強制終了すること

音声は出ません。オープニング動画も表示されないので、ゲーム開始まで忍耐が必要です。

開発環境の概要(補足)

  • FPA(Sun FPA 浮動小数点命令)と VFP(ベクタ浮動小数点)があって、SL-C*はFPA。違うもの同士リンクさせようとすると、リンカに怒られる。実行ファイル/共有ライブラリ(*.so)がどちらを使っているかを確認するには、"objdump -p" とすればよい
  • QtopiaSDK(1.5)は、gcc-3.* でビルドできない
    • ※ここでいう「ビルドできない」は、「ちょっといじったくらいではうまくいかない」の意

開発環境の概要

SL-C シリーズ向けの開発環境について、gccのバージョンを元に整理してみます。

  1. gcc-2.95.3 : kernel(2.4.20*), QtopiaSDK(1.5) の構築用
    • SHARP提供のクロス環境は gcc-2.95.2
  2. gcc-3.2.3 (xscale) : Special Kernel の構築用
  3. 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 でもバックアップしとくべきでしょう。

参考: Linuxザウルス開発メモ/修復方法 - Walrus,Visit.

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

SDドライバ

v18dのページに「1GB越のSDに対応するドライバ」が置いてある。
元を辿ってみたけどソースは公開されていない。カーネルソース見ても、SHARPのサイト見ても無い。OPE由来のモジュールなのかな。