Androidを変愚蛮怒専用機にする

これは?

以前Raspberry Pi Zeroを使った携帯型の変愚蛮怒専用機を作成しました。

inajob.hatenablog.jp

しかし、よく考えてみると、ここまで頑張って作ることなく変愚蛮怒を遊ぶ方法がありそうです・・・ そうです スマートフォン を利用するのです。

といっても、遊びたいゲームのiPhone/Android版が存在しないときはどうすればよいでしょうか?

ちょっと調べるとAndroidDebian Linuxを動作させる方法があるようです。

これを利用してAndroid変愚蛮怒を遊ぶ方法を考えてみました。 

f:id:inajob:20191010221624p:plain

AndroidLinux 「GNU Root」

まずはRoot権限なしでAndroid上でLinuxユーザランドを動かす方法を探します。

play.google.com

これを使いました。

注意としては、GNU Rootはもうメンテナンスされていません。そのため新しいAndroid端末ではインストールできません。

代わりにUserLAndというソフトが使えそうです。(ただし僕は古いAndroid端末しかもっていなかったのでGNURootしか使えませんでした。)

play.google.com

 

おそらくこれから紹介する方法はUserLAndでも動作するのでは?と思いますが、確証はないです。

 

GNURootはもう古いアプリなので説明は手身近に・・

 (ここからGNURoot特有の記載です)

Rootfsとして DeibanのWheezyを選択し「Create New Rootfs」をタップ。

するとGNURoot Wheezyというソフトをインストールする画面になるので、そのままインストールします。

その後再びGNURootを起動し「Launch Rootfs」をタップすることでコンソールが起動します。

Root権限が必要な場合は「Launch as Fake Root」にチェックを入れて「Launch Rootfs」をタップするとRoot権限のコンソールが起動します。

必要に応じて2つのコンソールを使い分ける必要があります。 

Debian Wheezyはすでにパッケージリポジトリがarchiveのものしか存在しないのでまずは/etc/apt/source.listを下記のように編集する必要があります。(本当はアップグレードしたいのですが、GNURootがすでにメンテされていないので・・)

dev http://archive.debian.org/debian/ wheezy main contrib non-free
dev-src http://archive.debian.org/debian/ wheezy main contrib non-free

 編集したらapt-get updateしておきます。

さて、ここまででAndroid上にDebianユーザランドを用意することができました。 

 (ここまでがGNURoot特有の記載です)

変愚蛮怒のビルド

変愚蛮怒Linux版はソースコードで提供されています。そのためビルドする必要があるので、必要なライブラリをインストールします。(後で使うのでmake, unzip, curlも入れておきます) 

# apt-get install libncurses5-dev make unzip curl

依存関係でgccやらいろいろ入ります。

 

ここからは一般ユーザで操作します。

変愚蛮怒をダウンロードしてビルドします。

$ cd /home
$ curl -L https://ja.osdn.net/projects/hengband/downloads/10331/hengband-1.6.2.tar.gz/ > hengband-1.6.2.tar.gz
$ tar xzf hengband-1.6.2.tar.gz
$ cd hengband-1.6.2
$ ./configure --without-x
(時間がかかります)
$ make
(すごく時間がかかります)

これで./src/hengbandにバイナリが生成されます。

ここで、./src/hengbandを実行すると、確かに起動するのですが、全体的に文字化けてしまいます。(SHIFT+Qなどで終了できます。)

これは変愚蛮怒EUC-JPにしか対応していないからです。加えてAndroidのTerminalはUTF-8の日本語は表示できますがEUC-JPには対応していません。

 

ここで、役に立つのがcocotです。

cocotのビルド

vmi.jp

cocotは、端末とプロセスの間に割り込んで文字コード変換を行うツールです。これはまさに今欲しい機能です。EUC-JPで動作する変愚蛮怒の出力を受け取り、端末にはUTF-8を返すことで、文字化けを解消できそうです。

こちらもAndroid用のバイナリは存在していないので、自分でビルドします。

$ cd /home
$ curl -L https://github.com/vmi/cocot/archive/master.zip >cocot.zip
$ unzip cocot.zip
$ cd cocot-master
$ ./configure
$ make

特に問題なくcocotもビルドできました。

あとはcocotを通して変愚蛮怒を起動すればよいだけなのですが、なぜか一般ユーザで実行すると「Error: openpty()」などと表示されて実行できないので、rootの端末で作業が必要でした。

 さて、ドキドキしながら起動します。

# cd /home
# cd hengband-1.6.2
# ../cocot-master/cocot -t UTF-8 -p EUC-JP -- src/hengband

 日本語も表示された!

ということでこれでAndroidでも簡単に変愚蛮怒で遊べるようになりました。

ただ、この方法をもってしても、まれに表示の一部が文字化けする起きるようです。まぁゲームの進行に支障がないレベルのものなので、この点は妥協するとしましょう・・

別解: Xで変愚蛮怒を使う

前回Raspberry Piで試したときはX11環境をセットアップしました。Androidでもこの方法で変愚蛮怒を利用することができますが、Androidの容量を非常にたくさん消費するので、あまりお勧めしません。

しかし、もし上記の方法でうまくいかない場合はX環境での実行を試してみるのもよいでしょう。

(といいつつ、詳しい方法はここでは書きません だいたい前回記事のRaspberry Piと同じ方法になると思います。)

f:id:inajob:20191012174818p:plain

おまけ: 3Dプリンタでケースを作る

前回の変愚蛮怒専用機と同様、3Dプリンタでケースを作りました。

f:id:inajob:20191012174138p:plain

f:id:inajob:20191012174201p:plain

スマートフォンの中にバッテリーもディスプレイもCPUも内蔵されているため、非常に簡単な作りで、しかもコンパクトに設計できました。

ちなみにここで使ったキーボードはこちら↓

 まぁ作ってみたのですが、、 意外と使いづらい。キーボードと本体は分離してたほうが遊びやすいですね・・また今後改良していきたいと思います。

まとめ

ということで、物理キーボード付きの変愚蛮怒専用Androidが完成しました。

これで、気軽にどこでも変愚蛮怒が楽しめます!