Raspberry PiでPlayStationエミュレータを動かす

DSC_5488.jpg

RPiでプレステのエミュレータを動かしている記事を見かけたので、試してみました。

Better PlayStation Emulation on the Raspberry Pi | Shea Silverman's Blog

Windows用のエミュレータのPCSXをARM Linuxに移植したもののようです。

上記のページにあるリンクから、pcsx_rearmed.zipをダウンロードします。
これをUSBメモリか何かでRPi上に持って行き、解凍します。
また、実行ファイルのExecuteビットが消えてしまっているので、chmodします。

 unzip -x pcsx_rearmed.zip
cd pcsx_rearmed/
chmod +x ./pcsx

起動は

./pcsx

ですが、現状では、サウンド出力がうまく動かないようです。
そこで、サウンドのプラグインをNULLに設定します。

起動後、メニューからOptions→[BIOS/Plugins]と選択し、SPU Pluginのところでカーソルキー左右で「spunull.so」を指定してください。

あとは、PlayStation用ソフトのCDROMイメージ(ISOファイルなど)を指定すればゲームを起動できます。
エミュレータのキー操作は、初期状態では
・v, c    … Select, Start
・カーソル  … 上下左右
・d, s, z, x … コントローラ右側の4つのボタン
・w, e, r, t … L1,L2,R1,R2
となっています。

昔は、この手のエミュレータはPlayStationのBIOSのイメージファイルが必要だったものですが、このエミュレータは互換BIOSが入っていて、大抵のゲームは動くようです(一部のゲームは正規のBIOSが必要とのこと)。

エミュレーション能力ですが、RPiの性能から想像していたよりも結構速くて、少し驚きました。
フルスピードとは行きませんが、そこそこ遊べる程度の速度で動いてくれます。
PlayStationはCPUは確かMIPSの33MHzくらいでしたので、700MHzのARMでエミュレートはできないことはないかもしれませんが、グラフィックのほうはRPiのGPUの3D機能も使っているのかもしれません。

音が出ないのは残念ですが、問題はRPiのサウンドドライバとの組み合わせにあるようです。
手持ちの古いUSB Audioアダプタを接続してみたところ、遅延やブツ切れはひどいものの、音はちゃんと出ました。

USBサウンドアダプタのドライバは自動認識されますが、先に認識されているRPi側のデバイスが優先されてしまいますので、

sudo modprobe -r snd_bcm2835

で強制的にデバイスを外してUSB Audioのほうを使わせます。

ちなみに、このエミュレータは画像・音関係はSDLを使っているらしく、X Windowなしでも動作します。
ただし、コンソールから起動してエラーになると、コンソールが使えなくなってしまう可能性が高いので、動作が確認できるまではX Window上で動かすことをお勧めします。

Raspberry PiをWindowsのシンクライアントにしてみる

RPiは、RAMも少ないしCPUも弱いので、まともなWebブラウザひとつ使うのも結構辛い感じですが、VNCクライアントとしてWindowsを使うならばどうか? と思って試してみました。

VNCは、ネットワーク越しに画面とキーボードやマウスの入力を送受信することで、他のコンピュータを操作するツールです。
Windowsのリモートデスクトップが汎用の仕組みになったようなものです。
RPiは画面表示に専念することになりますので、RAMが少ないことはあまり問題ならないと思われます。

raspbianで利用できるVNCクライアントとしては、xtightvncviewer、gtkvncviewer、gvncviewerなどがあります。
VNCクライアントとしての動作自体には大きな違いはありませんが、GtkなどのGUIツールキットを使ったソフトは、関連ライブラリを読み込むためか、起動はちょっと重たい感じがします。

まず普通のVNCクライアントとして、TightVNCを使ってWindowsを操作してみます。
これはX Window上で動作するソフトで、

sudo apt-get install xtightvncviewer

でインストールします。

操作される側のPCには、VNCサーバをインストールする必要があります。
実は、意外にパフォーマンスに影響が大きいのは、Windows側にインストールするVNCサーバです。

VNCサーバは、UltraVNCRealVNCを試してみましたが、どちらかというとRealVNCのほうが良さそうな感じです。
画面の広い範囲を書き換えるのは遅いのですが、文章を書いたりする場合には反応が早いと感じました。

TightVNCの起動は

vncviewer

です。

起動するとサーバのIPアドレスを聞かれますので、WindowsマシンのIPアドレスを入力します。
パスワードはWindowsのログオンパスワードです。

使ってみた感じ、テキストで書き物をする程度ならば、まあ使えなくはないかと思います。
ウインドウを切り替えるような、大幅な画面書き換えはかなり遅いですが、テキスト編集程度であれば我慢できる速度です。
動画などは、もちろん紙芝居状態になります。

このほか、krdcというソフトもあります。
これはVNCのほかに、WindowsのRemote Desktop Protocolにも対応しています。

Remote Desktopで試してみたところ、反応はVNCよりも良好で、画面の更新が早く感じられます。
また、X Windowのクリップボードの内容をWindows側へペーストすることが出来るのも便利です。
RDPでは音声をクライアント側(RPi側)から出力させることもできるのですが、さすがに処理が追いつかないのか、ノイズだらけで使い物になりませんでした。

大量のライブラリがリンクされているため、インストールにかなり時間がかかりますが、リモートでWindowsに接続させたいなら、試してみる価値はあるソフトだと思います。

以上のソフトはX Windowの中の1つのウインドウの中でVNCが動作することになりますが、X Windowを立ち上げず、画面全体をVNC専用にしてしまう方法もあります。

それには、DirectFBで動作するdirectvncを使います。

X Windowを使わないからといって、大幅に高速になるわけではありませんが、起動に手間がかからず、お手軽ではあります。

directvncを使用する場合は、DirectFBの設定が必要な場合があります。
DirectFBの画面解像度は/etc/fb.modesに設定があり、この中から選択できますが、私が使っている1920×1200という設定が入っていませんでした。

コンソール自体が1920×1200で動作していますので、この状態をfb.modesに追記します。

fbset

を実行すると

mode "1920x1200"
geometry 1920 1200 1920 1200 16
timings 0 0 0 0 0 0 0
rgba 5/11,6/5,5/0,0/16
endmode

という出力が得られますが、これを/etc/fb.modesに追記してやればOKです。
簡単には

sudo fbset >> /etc/fb.modes

となります。

そして、このモードを使用するようにDirectFB用の設定ファイルを書きます。
設定ファイルは$HOME/.directbrcです。

私は以下のように設定しました。

mode=1920×1200
depth=16
hardware
vsync-none

ただしハードウェアアクセラレーションは効いてないような気がします。

以上の設定に加えて、さらに/dev/tty0の読み書きができるようにする必要があります。

sudo chmod go+rw /dev/tty0

これでようやく起動できます。

directvnc ipaddr -p password -m xxx -b 16

xxxのところは、存在しないファイルを指定してください。
本来はキーボードマッピングを記述したファイルを指定する箇所ですが、何も指定しないとエラーになってしまうので、ダミーで指定しています。

この記事はWindowsにRDP接続したRaspbery Piで書いてみました。
なかなかしんどいところもありますが、全く無理と言うわけでもない…と思いました。

raspbmcでXBMCを動かしてみた(続き)

DSC_5473.jpg

ネット上でXBMCについて調べていたら、日本語設定のやり方を見つけたので試してみました。

AirPlay対応でAppleTV要らず!DVDISOやAVIファイルなどを再生できるXBMCで行った方がいい設定。|MacWin Ver.0.7

SYSTEM→Setting→Appearanceに移動。
Skin→Fonts→Arial basedに設定。
International→Language→Japaneseに設定すると日本語表示になります。

raspbmcでも問題なく日本語化されました。

しばらく使って少し慣れてきたのか、動作のもたつき等はあまり気にならなくなってきました。
スタンドアロン環境でも利用できるように、SDカードの空きにコンテンツを詰め込んでおけば、旅先などでテレビに接続して使えるかもしれませんね。