3.FamilierとMelonでSnes9x
(自己責任で。
違法行為を推奨するものではありません。)
今まで、iPAQでLinuxとのDualBootを紹介してきましたが、
僕がiPAQにLinuxを入れたいと思ったのは実は、「WINCEでエミュレーター」さんの
総合掲示板にganさんなる方の書き込みを見た時からでした。
PocketPC及びPocketPC2002で動作するSNESエミュレーターは、
御存知のように、いくつかあります。
特に期待できるものはPocketSNES
BleedingEdgeでかなり頻繁にバージョンアップを繰り返してなんとか音有りで動くかな?くらいになっていますが、
ganさんより紹介していただいた動画では
(WINCEでエミュレーターさんの CEでEMU - Linux で紹介されてます。必見!!)
iPAQで実機並のクォリティーの映像とサウンドが…!それで、
なんとかiPAQをLinuxにしたいと、思っているところでMelonに出会いました。
(実は、これもganさんのver2からFREEになったとの情報がきっかけでした。)
それ以前に本当は、「iPAQで作る最強LinuxPDA」とシリアルケーブルを
本の発売と同時に購入していたのですが、初めの数ページで放置したままでした。
(おかげで、いまではシリアルケーブルが行方不明だったりします。)
このような経緯で再びLinuxに火がつきました。(たね火くらいの大きさでしたが…)
iPAQのSnes9xの公式サイトは、残念なことに少し以前に閉鎖されたようで
ファイルを入手することはできないのですが、
Zaurus XFree86(linux)用にポーディングされたものが入手可能で実際、
iPAQでも動作するとの、またまたganさんの情報だったりします。
用意するものは、このZaurus XFree86(linux)用にポーディングされた
snes9xとromイメージ、LinuxなiPAQです。今回は、前に紹介させていただいたCFから
BootなFamiliarとMelonでの使用を紹介したいと思います。
インストールするには、ファイルを転送して行いますので転送方法は
いくつかあると思いますが、僕を含めてこれを読んでいる方はLinuxより
WindowsやPocketPCの方が使い慣れていると思うので、
WindowsやPocketPC上でCFに直接ファイルを第一パーティションに
転送する方法で説明します。
Familiarの項で作ったCFでは、WindowsやPocketPCからもアクセスできる
第一パーティションを8MBにしてますが使い勝手を考えると8MBでは、
残りの未使用な量が少ないので20MBくらいは欲しいところです。
また、紹介したMelonでは、64MBのCFにきっちり収めるための
インストールツール(mkmelon)を使っているため、あのままでは第一パーティションは、
3MBほど残りは1MBもないほどなので、fdiskを使って
「FamiliarとDualBoot」と同じようにパーティションを変更します。
「MelonでDualBoot」を書いていた頃はハッキリ言って、自分でも何をやっているのか
よくわからなかったのですが、Melonのインストールで使ったmkmelonは、
結局自動でfdiskやイメージなどをそれぞれ展開するためのものでファイルの違いさえあれ
「FamiliarとDualBoot」と同じことをやっていただけということが、後でようやく気付きました。
つまり、使いやすくfdiskでそれぞれのパーティションを決めてフォーマットしたら
bootstrap.tar.gzを第1パーティションで展開して
rootfs.tar.gzを第2パーティションで展開するだけでOKです。
(fdisk後、mkmelon install で(y/n)? nでもいけるようですが。)
Familiarまたは、MelonのCFが用意ができたところで必要なファイルをダウンロードします。
Zaurus XFree86(linux)用にポーディングされたsnes9xは、Zaurus Software Indexさんで、
romに関しては今回思いきってサイトを紹介しちゃいます。(通報しないで下さいネ。(笑))
こちらに、あります。↓
実は、これらのイメージは全てアマチュアプログラマーの方の力作で著作権に抵触しない
フリーウェアだったりしますのでSNESのソフトをお持ちでない方も問題ありません。
今回は、この中のPACMAN.SMCを例に紹介させていただきます。
それでは、早速、CFへ転送してインストールしたいところですが、
インストールしただけではボタンに全ての必要なキーがマッピングされていないので
設定ファイルを予め作成しておく必要があります。
(ここで僕はつまずいてました…)以下のようにテキストファイルをつくっておきます。
(↓)
keycode 130 = s
keycode 131 = x
keycode 132 = d
keycode 133 = c
keycode 104 = Return
keycode 128 = space
keycode 129 = Return
(↑)
(もちろん、LinuxなiPAQ上でエディダ等を使って作ってもよいですが…)
今回は、判りやすいようにsnes9x.xmodmapとリネームしておきました。
(本当は英数字であれば.txtでもなんでもOKです。)
上の内容を説明すると下のようになります。
keycode | iPAQ | SNES |
130 = s | ボタン1 | Xボタン |
131 = x | ボタン2 | Yボタン |
132 = d | ボタン3 | Aボタン |
133 = c | ボタン4 | Bボタン |
104 = Return | アクションボタン | Startボタン |
128 = space | ボタン5 | Selectボタン |
129 = Return | 電源ボタン | Startボタン |
これで本当に準備完了で、これらのファイルを普通に
Windows(またはPocketPC)上からCFにコピーしておきます。
snes9x_1.3.9-3_arm.ipksnes9x.xmodmap
PACMAN.SMC
あとはLinuxをCFからbootさせ、terminal(Melonでは漢字端末)を起動します。
まず、Familiarの方から説明します。terminalを立ち上げ、
CFの第一パーティション(hda1として認識)を使えるようにmountして移動します。
デフォルトで/mnt/hda/というマウントポイントがあるのでこれを利用します。
sh-2.03# mount /dev/hda1 /mnt/hda/
sh-2.03# cd /mnt/hda/
ここでSnes9xをインストールします。
sh-2.03# ipkg install snes9x_1.3.9-3_arm.ipk
途中でEnterを押して、インストールを進めます。
インストールすると/home/root/snes9x/というディレクトリが
作成されますのでここにあとの必要なファイルをコピーしてます。
sh-2.03# cp snes9x.xmodmap /home/root/snes9x/
sh-2.03# cp pacman.smc /home/root/snes9x/
Familiarのmenuから
Menu - Configuration - Rotation - Landscape Left
を選択して画面を回転させておきます。
また、terminalに戻って
/home/root/snes9x/へ移動し、ボタンの設定をして
sh-2.03# cd /home/root/snes9x/
sh-2.03# xmodmap snes9x.xmodmap
Snes9xをrom名を指定して起動します。
sh-2.03# snes9x pacman.smc
懐かしいゲームがスタートします。
次はMelonでの説明をします。(38xxな方はこちらです。)
Melonで漢字端末(kterm)を起動すると
sh-2.03$
とでているので一般ユーザーとしてログインしていることがわかります。
インストールやSnes9xの起動などはrootでないとできなかったりするので、
sh-2.03$ su
password: rootme (←画面には表示されません。)
と入れrootでログインします。
sh-2.03#
Familiarと同じようにhda1をmountしてSnes9xをインストールし、
必要なファイルを/home/root/snes9xへコピーしておきます。
sh-2.03# mount /dev/hda1 /mnt/hda/
sh-2.03# cd /mnt/hda/
sh-2.03# ipkg install snes9x_1.3.9-3_arm.ipk
sh-2.03# cp snes9x.xmodmap /home/root/snes9x
sh-2.03# cp pacman.smc /home/root/snes9x
Melonでは、Familiarと同じようにボタンの設定を行っても
予めボタン1とボタン2はマウスエミュレーションをしてるとのこと(ganさん談。)
なのでこれを解除するためMelonのメニューからエディダを起動させ
/home/sikigami/sikigami ファイルを開いて.
…
…
sgwm &
これを
…
…
sgwm -middle keycode -right keycode &
…
…
へ書き換えて保存するとできるとのことです。
ここで一度rebootして、再起動します。
また、漢字端末(kterm)を起動してrootでログインして、
sh-2.03$ su
password: rootme (←画面には表示されません。)
sh-2.03# cd /home/root/snes9x/
rootではそのままではxmodmapコマンドは使えないので
使えるようにパスを通しておきます。
sh-2.03# export PATH=$PATH:/usr/X11R6/bin/
後はFamiliarと一緒です。
sh-2.03# xmodmap snes9x.xmodmap
sh-2.03# snes9x pacman.smc
(終了は、キーボードからEscで。)
(センターが少し左へずれているのでスタイラスで調整して、遊びます。)
どうでしょう?できましたでしょうか。
初めてSnes9xが動いたときは、とても感動しました。
僕が実機で遊んでた頃はTVはモノラルのものを使っていたので
イヤホンから聞こえてくるステレオな音が特に感動的です!未体験の方は、ぜひ。
ゲームが好きな方なら、これだけでもiPAQをLinux化する価値は充分あると思います。
これを機会にLinuxなiPAQに興味をお持ちになる方が増えて
PocketPCの様に、いろいろな情報がもっと手に入りやすくなったり、また、
旧機種になってしまったiPAQ36xx,38xxがまた使われるようになれば幸いです。
また、セーブデータは。Familiar、Melonともに
/root/.snes96_snapshots/*.srm
に保存されてます。
はっきりいって僕自身が自力でやれたのはSnes9xをインストールするまでで、
後はほとんどganさんに教えていただいたことだったりします。
特に、Melonのボタン問題は僕の力では解決不可能でした。
ここまで、書いてきましたが僕はまだまだLinux超初心者に毛が3本ほど
生えたレベルなことを、しみじみと実感しました。(笑)
今回、ここまで手とり足とりで価値ある情報を提供してくださった
ganさんにとても感謝しております。本当にありがとうございました。
これからも、よろしくお願いいたします。
P.S.
キリコさんよりBBSで情報をいただきました。
僕の使い方など紹介させて頂きます。
まずrootでログインし
下の内容のシェルスクリプトを作成します。
ファイル名は何でもいいですがここでは「snes」とさせて頂きます
#! /bin/sh
mount /dev/hda1 /mnt/hda
cp /mnt/hda/My\ Documents/rom/$1.srm /root/.snes96_snapshots/
/usr/X11R6/bin/xmodmap /home/root/snes9x/snes9x.xmodmap
snes9x /mnt/hda/My\ Documents/rom/$1.smc
cp /root/.snes96_snapshots/$1.srm /mnt/hda/My\ Documents/rom/
umount /mnt/hda
後はプロンプトから
sh snes ロムファイル名
と実行するだけで
1.CFのPPC領域のマウント
2.セーブデータの読み込み
3.キーマップの設定
4.指定したゲームをPPC領域から起動
5.ゲーム終了後セーブデータの書き込み
6.CFのPPC領域のマウント解除
を自動で行ってくれます。
好みでカスタマイズしてもいいと思います。
セーブデータをWindowsCEと共有できたり結構便利です!
ただコマンドを羅列しただけですが(笑)
それでは失礼します。
とのこと。snes9xをもっと便利に使うためのとても良いアイデアだと思います。
尚、\(バックスラッシュ)はLinux上でviなどのエディダを使用して入力します。
キリコさん、また良い情報をお待ちしております。ありがとうございました。
(2003年 2月1日)
(2003年 3月23日 修正)