ネオジオエミュレータを試してみる

サムさんとこでNEO GEOエミュレータ GnGeoのQt+SDL版が紹介されてたので早速ザウルスで遊んでみる。
http://ochan4.blog.ocn.ne.jp/blog/2006/04/qtneogeo_c2e7.html
ちなみに結論から先に言えば、結構普通に遊べてビックリ。これがCycloneの68000コアの威力なのか!?PCエンジンエミュレータの zpce よりも若干速いんちゃうかな?環境はSL-C3100で、スペシャカーネルやbvdd対応SDL等は未使用。

GnGeo のインストール

いつものように完全消去(通常)した標準カーネルのままのSL-C3100(1.02 JP)を用意して、gngeo 0.6.11 のipkをプログラムエリア(本体メモリー)へインストール、他のソフトウェアを必要としていますとか言われるけど無視。(control ファイルを見ると Depends は Qtopia-base($Qtopia_VERSION) って書いてあるので無視して問題ないハズ。)
GnGeoはターミナルから起動しなきゃなんないので付属CD-ROMから qpe-terminal-ja 1.5.0-3 をプログラムエリアへインストール。

関連ライブラリのインストール

ターミナルを開いて「gngeo」と打って起動させてみると、libSDL_image-1.2.so.0が無いと怒られた。
ONScripter 関連ライブラリに libSDL_image-1.2.so が含まれてるそうなので、onscripter-lib 20031201 をプログラムエリアへインストール。
http://ogapee.at.infoseek.co.jp/zaurus/#package-onscripter-lib
再度、ターミナルを開いて「gngeo」と打って起動させると、今度は libz.so.1 が無いと怒られた。
てな訳で、A Way Outからzlibのパッケージをダウンロードして、zlib 1.2.3-1 をプログラムエリアへインストール。
http://club.h14m.org/kenji/diary/?20050722&to=200507225#200507225
ターミナルを開いて「gngeo」と打って起動させると、使い方のヘルプが出た。
libpng12 1.2.5-10 は無くても大丈夫みたい。SL-C3100って最初から入ってるんだっけ??(あとで確認したけど、SL-C700 でも必要なかった。

GnGeo の起動方法

早速、SD カードに入れた NEO GEO 用ゲームの ROM が圧縮された ZIP ファイルを指定して「gngeo /mnt/card/viewpoin.zip」のように起動させてみると、/mnt/cf/geo ディレクトリに NEO GEO 本体の BIOS ROM の各ファイルが無いと怒られる。
BIOSMAME 等で使う neogeo.zip のように圧縮された状態では使えないようなので、本体ディスク(本体メモリー)に geo フォルダ作って解凍した内容を入れておく。
今度は BIOS のパス指定も行って GnGeo を起動させると、画面中央に小さく画面が出てきて、アーケードゲームの電源投入時のような乱れた画面の後、ネオジオのロゴと音楽が〜。無事起動。

bash-2.05$ gngeo -i /home/zaurus/Documents/geo /mnt/card/viewpoin.zip

SL-C700 だとメモリ不足で起動しない

標準カーネルSL-C700(1.50 JP)でも動かしてみたら、起動せずに Out of Memory(メモリ不足)でターミナルも巻き込んで落ちてしまった。
てな訳で、スワップ作ってメモリ不足を解消すべく、MemoryMonitorApplet をダウンロードして、qtopia-memoryapplet 1.1.2b を本体メモリーにインストール。
http://ochan4.blog.ocn.ne.jp/blog/2006/03/memorymonitorap.html
タスクバーの時計表示の隣に出来た部分をペンでタッチして真ん中のタブでSD Cardを選択して適当なサイズ(今回は 512Mb で作ってみた)のスワップファイルをGenerateで作成(結構、時間がかかる)して、Onでスワップを有効にしてから、再度 GnGeo を起動させると無事起動した〜。

GnGeo の操作方法

3でクレジット投入、1で1Pスタート、カーソルキーで上下左右に移動、Zでショット、Xでボム、CancelキーでGnGeoを終了させられる。クレジットが入らない場合は何か適当なキーを押した後とかだと入ることが多いっぽい。

画面いっぱいに表示する

ネオジオの画面はほぼQVGAサイズなのでVGAのザウルスだと画面中央に小さく表示されてしまう。これを避けるためにファミコンエミュレータ znester等でもお馴染みのZ Emu FrontEnd Exをダウンロードし、zemufe 0.1.1-3ex をプログラムエリアにインストールする。ゲームのタブが出来て、Z Emu FrontEnd Exのアイコンが出来るので、これを長くペンで押して出てくる「アプリケーションをVGAの画面に最適化…」のチェックをはずしておく。
http://www.ogonigo.com/
ついでにゲーム中にキーを押した時、速度が落ちるのでキーリピート抑止が出来るようにKeyHelper Appletをダウンロードし、keyhelper 1.2.2-1 をプログラムエリアにインストールする。
http://tbox.jpn.org/linuzau/keyhelper/
Z Emu FrontEnd ExのVisualBoyAdvance用起動スクリプト /opt/QtPalmtop/bin/zemufeex_gba.sh を /opt/QtPalmtop/bin/zemufeex_txt.sh の名前でコピーし、これを下記のように編集する。(Tree!Explorer と ZEditor を使うと簡単カモ)

#!/bin/bash

khctl killrepeat
cd "$1"
gngeo -i /home/zaurus/Documents/geo "${2%.*}.zip"
khctl repeat
exit 0

あとはZ Emu FrontEnd Exを起動して、「設定」のメニューから「フロントエンド」を選んで、「対応する拡張子の追加」に「*.txt」を追加しておく。
これで遊びたいゲームの ZIP ファイル(例:viewpoin.zip)と同名の TXT ファイル(例:viewpoin.txt)を用意しておけば、この TXT ファイルを Z Emu FrontEnd Ex から選択するだけでゲームが遊べるようになった。
これで起動時は QVGA に自動的に変更してくれるので画面いっぱい(フルスクリーン)で表示されるものの、QVGAモードではONScripter関連ライブラリに含まれるSDLではSL-Cシリーズのカーソルキー操作が上下左右すべて逆になってしまうので、この辺を考慮してキーの割り当てを変更してくれる阿川さんのSDLを上書きで導入する。ダウンロード後、libsdl 1.2.5-slzaurus20050731 をプログラムエリアへインストール。
http://atty.skr.jp/sdl.html
これで上下左右のキー操作が逆になる問題も解決できた。

GnGeo のアイコン作成

起動中に Home キー押すと、GnGeo を止められなくなるのでアイコン作っておこう。
アイコンが割り当てられるのは /opt/QtPalmtop/bin 以下の実行ファイルだけなので、GnGeo の実行ファイル /usr/local/bin/gngeo を /opt/QtPalmtop/bin/gngeo でシンボリックリンクしておく。
イコン画像は GnGeo 公式サイトにあるロゴ画像の上下左右の白い部分を切り取って、64×64と32×32のPNGファイルにして、ザウルスの /opt/QtPalmtop フォルダにある pics フォルダに 32×32 のを、pics144 フォルダに 64×64 のを入れておく。
http://m.peponas.free.fr/gngeo/
ホーム画面設定からゲームのタブに新しいアイコンを作成して、名前を GnGeo、アイコンを gngeo、ソフトウェアを gngeo に指定して作成。
これで Z Emu FrontEnd Ex から GnGeo を起動させても、アイコンを選択することで元のゲーム画面に戻って・・・あれ?戻れないまま、GnGeo が終了しちゃう。んー、よくわからんけどまあいいか。

Z Emu FrontEnd Ex 用 GnGeo 対応パッケージ

これまでの手順をパッケージにまとめてみた。GnGeo のアイコン作成から、Z Emu FrontEnd Exへの設定追加と、起動用スクリプトの追加を行うようになってる。http://www.areanine.gr.jp/~nyano/archives/slzaurus/zemufeex-txt_1.0_arm.ipk