2020まとめも書いてしまった後ですが、ちょっと記事を書きたくなっちゃいました。
縁あってレビューした、下記記事のGamePi20というゲーム機ですが、これを使って Fantasy Computerである「TIC-80」のゲームを動かす方法が分かったので、紹介していこうと思います。
TIC-80って?
実はTIC-80については、ずいぶん前に記事を書いたことがありました。
要は、レトロ風ゲーム実行環境です。実際のレトロゲームは「専用ハード」があり、そこで動くゲームでしたが、TIC-80などのFantasy Computerと呼ばれる仮想のゲーム機は、本体を持たず、PCなどで遊ぶことが前提とされています。
この手の仮想ゲーム機で最も有名なものは PICO-8 Fantasy Consoleです。ブラウザでゲームを遊ぶのは無料でできますが、ゲーム開発や、ネイティブアプリでの実行に関しては有料のソフトウェアです。
一方、TIC-80 tiny computerはオープンソースで開発されており、特にお金を払うことなく開発・実行ができます。
GamePi20って?
こちらは自分が書いた下記レビュー記事を見て欲しいのですが、ざっくりいうとRaspberry Pi Zeroを内蔵したポータブルゲーム機です。
もともと、このゲーム機はファミコンや、メガドライブなど、レトロゲームのエミュレータを動作させるためのものですが、この記事では、仮想ゲーム機であるTIC-80のゲームを動かす方法を紹介していきます。
ゲームエミュレータ用OS 「Recalbox」とは?
GamePi20のようなLinuxを基にしたゲームエミュレータ専用機というのは、ほかにもたくさん存在し、世界中に愛好者がいます。
そのため、このようなLinuxマシンを簡単にセットアップするためのLinuxディストリビューションも存在しています。この手のOSでは、メニューなどの操作をすべてゲーム用コントローラで操作できたり、簡単にROMファイルをゲーム機に転送するための仕組みが用意してあったりと、ゲームエミュレータ利用者が欲しい機能が一通り実装されています。
そのようなOSとしてメジャーなものとしてRetroPieとRecalboxがあります。
実はこのRecalboxのバージョン6.1から TIC-80のゲームが実行できるようになったのです。
ということで、この記事では最新のRecalboxをGamePi20に導入する方法を紹介していきます。
GamePi20とRecalbox
GamePi20には公式で提供されるRecalboxと RetroPieのOSイメージが存在します。
しかし、Recalboxのバージョンが6.0と古く、前述したTIC-80には未対応のものとなっています。
という事でGamePi20の公式イメージに頼らず、Recalboxの最新版(Version 7.1.1-Reloaded)をセットアップする必要があります。
大まかな流れはGamePi20のWikiに書いてあるので、それに従っていきます。
必要なもの
これからの作業を実施するにあたり必要なものは下記です。(リンクは参考です、自分の環境では家に合ったテキトーな機材を使っています。)
(上記はAmazonですが、Banggoodだともっと安いですよ!)
- USB-OTGアダプタ
- USB接続のキーボード
サンワサプライ 有線USBスリムキーボード テンキー無し パンタグラフ 85キー日本語109A配列 ホワイト SKB-SL18WN
- 発売日: 2016/08/01
- メディア: Personal Computers
- 16GB以上のmicroSDカード
SDカードへのイメージの書き込み
ここではWindowsを使ってセットアップを行う方法を紹介していきます。
まずは16GB程度のSDカードを用意します。
下記からRaspberry Pi Imagerをダウンロードします。
Raspberry Pi OS – Raspberry Pi
Raspberry Pi Imagerをセットアップしたら、SDカードにRecalboxをインストールします。
OS一覧にRecalboxがあるので、選択して、SDカードへの書き込みボタンを押すだけで、後は勝手にやってくれます。
HDMIの出力を一番安心なものにする
このSDカードをGamePi20に挿入して起動!と行きたいところなのですが、HDMIの出力設定を変更しておきます。
もしかしたらこの手順無しでもうまく動くかもしれませんが、モニタとの相性などでうまく映らないことがあるので、設定することを勧めます。
前節で書き込んだSDカードをPCに挿入すると/bootの内容にアクセスすることが出来るので、そこに存在するconfig.txtを編集し
hdmi_safe=1
という行を有効にします(もともとコメントアウトされているはずです)
これで一番コンサバな設定でHDMI信号が出力されるようになります。
SDカードを挿入
GamePi20のねじを外して、分解します。
メイン基板からピンヘッダで接続されているRaspberry Pi Zeroを分離します。この際、基板を傷つけないように気を付けてください。(結構外しづらいです。)
分離したRaspberry Pi Zeroに元々挿入されているSDカードを抜いて、先ほどセットアップしたSDカードに差し換え、GamePi20を再び組み立てます。
(ここで横着して、ケースに入れず続きの作業を行うのは推奨しません。基板が金属に触れて故障したり、HDMI端子やUSB端子に斜めに力がはいって「もげる」こともあります)
初回ブート
初回ブート前に、必要な配線を行います。
初期ブート時は内蔵の液晶モニタや、キーパッドが利用できないので、下記のようにモニタとキーボードを接続します。
電源を入れるとHDMIケーブルで接続されたモニタにスプラッシュ画面が表示されます。電源を入れてからしばらく(2分くらい?)時間がかかるので気長に待ってください。その後ローディング画面でまた3分ほど待ちます。
WiFiの設定
次にWiFiの設定を行います。これにより以降、sshで接続したり、Samba経由でファイルを編集したりできるようになります。
まずEnterキーでメニューを表示します。上下キーで「NETWORK SETTINGS」を選択し「A」キーで決定します。
次に「ENABLE WIFI」で「A」キーを押します。「Connecting to WIFI...」と表示されるのでしばらく待ちます。
そして「WIFI SSID」で接続したいAPを選択して「A」キーで決定します。
最後に「WIFI KEY」で接続パスワードを入力します。(ここはキーボードでパスワードを入力します。
接続ができると「IP ADDRESS」の欄にIPアドレスが表示されるので、内容を控えておいてください。
SSH接続して続きの設定を行う
下記のようにしてログインします。ユーザ名は"root"、パスワードは"recalboxroot"です。
Recalboxではシステムファイルは編集できないようにReadOnlyでマウントされているため、編集できるようにマウントしなおします。
# mount -o remount, rw /boot # mount -o remount, rw /
/etc/modules.conf にフレームバッファ関係のカーネルモジュールの設定を追記します。
# vim /etc/modules.conf
以下の内容を追記します(もともと書かれている内容はそのままにしておいてください)
flexfb fbtft_device
次にSPIを有効にするために/boot/config.txtを編集します。
# vim /boot/config.txt
以下の内容を追記します(もともと書かれている内容はそのままにしておいてください)
dtparam=spi=on
続いて、/etc/modprobe.d/fbtft.confというファイルを作成し、液晶画面の初期化方法などの設定を行います。
# vim /etc/modprobe.d/fbtft.conf
内容は下記です。(この部分、公式Wikiの値が間違っています。下記が正しいです。)
options fbtft_device name=flexfb gpios=reset:27,dc:25,cs:8,led:24 speed=96000000 bgr=1 fps=60 custom=1 height=240 width=320 options flexfb setaddrwin=0 width=320 height=240 init=-1,0x11,-2,120,-1,0x36,0xA0,-1,0x3A,0x05,-1,0x21,-1,0x2A,0x00,0x01,0x00,0x3F,-1,0x2B,0x00,0x00,0x00,0xEF,-1,0xB2,0x0C,0x0C,0x00,0x33,0x33,-1,0xB7,0x35,-1,0xBB,0x1F,-1,0xC0,0x2C,-1,0xC2,0x01,-1,0xC3,0x12,-1,0xC4,0x20,-1,0xC6,0x0F,-1,0xD0,0xA4,0xA1,-1,0xE0,0xD0,0x08,0x11,0x08,0x0C,0x15,0x39,0x33,0x50,0x36,0x13,0x14,0x29,0x2D,-1,0xE1,0xD0,0x08,0x10,0x08,0x06,0x06,0x39,0x44,0x51,0x0B,0x16,0x14,0x2F,0x31,-1,0x29,-3
ここまで出来たらリブートします。
# reboot
しばらく待って、再びSSHで接続します。
/dev/fb1が存在することを確認します。
# ls /dev/fb* /dev/fb0 /dev/fb1
このfb1が内蔵液晶用のフレームバッファです。(fb0はHDMI接続されたモニタのためのフレームバッファです)
再び設定ファイルを編集するので、マウントしなおします。
# mount -o remount, rw /boot # mount -o remount, rw /
/etc/init.d/rcSに下記を追記します。
fbcp &
このfbcpというツールはfb0の内容をfb1にコピーするというもので、これにより次回に起動したときは、内蔵液晶モニタにもHDMI接続されたモニタと同じものが表示されるようになります。(Recalboxにもfbcpの設定があるようなのですが、正しく設定する方法がわからず、ここでは強引にブート時にfbcpが起動するように設定しています。)
次にrecalbox.confを編集します。
# vim recalbox.conf
ディスプレイの設定を下記のように設定します。(該当部分の設定を下記のように変更します。ほかの部分はそのままにしておいてください。)
global.videomode=default global.ratio=4/3
次にコントローラの設定を行います。
GamePi20はコントローラの各ボタンがRaspberr Pi ZeroのGPIOに接続されているので、そのピンを列挙する形で設定します。
controllers.gpio.enabled=1 # controllers.gpio.args=map=1,2 # この行はこのようにコメントアウトする controllers.gpio.args=map=5 gpio=12,20,21,13,26,16,23,4,6,17,22,5,16
最後にconfig.txtでtftディスプレイとスピーカの設定を行います
# vi /boot/config.txt
下記を追記します。
ここまで設定出来たら、再びrebootします。
# reboot
BGMがスピーカーから鳴り、液晶とキーパッドが正しく動くことを確認します。
ここまでで普通にRecalboxが動くようになりました。HDMIを抜いても普通に遊ぶことができます。
プラスアルファの設定 - ゲーム一覧の文字サイズを大きくする
ここまでの状態だと、ゲーム一覧の文字が小さすぎて、液晶だと読めないです。
設定のうちの下記部分のfontSizeを0.05に変更します。
<textlist name="gamelist">
<fontPath>./data/arts/Exo2-BoldCondensed.otf</fontPath>
<fontSize>0.025</fontSize>
<forceUppercase>1</forceUppercase>
</textlist>
プラスアルファの設定 - 不要なサービスを停止する
Recalboxのデフォルトで起動している仮想ゲームパッドと、Web経由での設定変更をするためのマネージャは利用しないので停止しておきます。
# vim recalbox.conf
system.virtual-gamepads.enabled=0 system.manager.enabled=0
ゲームを転送する
ゲームを転送するためには、Samba経由でアクセスするのが簡単です。
Windowsの場合はエクスプローラに、「\\192.168.X.Y\share\roms\」と入力することで、GamePi20のファイルにアクセスすることが出来ます。
TIC-80のゲームの場合は拡張子がticのファイルを入れればOKです。
転送後は STARTボタンメニューの「UPDATE GAMELISTS」を実行しないとゲームが表示されないので注意が必要です。
ゲーム中にRecalboxのメニューに戻る
HotKey + START を押すことで、Recalboxのメニューに戻ります。
このHotKeyはここまでの設定で「SELECT」ボタンに割り当ててあります。
他にもこのHotKeyを使うことでスクリーンショットを撮ったりもできますので、説明書で確認してください。
During the game - Documentation
TIC-80のゲーム
TIC-80 tiny computer から選び放題です。ブラウザでも遊べますが、各ページの「download cartridge」からticファイルをダウンロードすることができ、これをGamePi20に転送することで、GamePi20でも遊ぶことが出来ます。
ただし、TIC-80のゲームの中にはCPUパワー要求するものもあるため、GamePi20では処理落ちしてしまうものも多いです。
手元でちょっと調べた中だと、下記の「STELE」などはGamePi20でもキビキビ動いていい感じでした。
まとめと宣伝
ということで、GamePi20に最新のRecalboxをインストールして、TIC-80のゲームが遊べるようになりました!
GamePi20は本来レトロゲームエミュレータを遊ぶためのガジェットとして作られたものですが、仮想ゲーム端末である「TIC-80の物理端末」としても活用法も面白いと感じました。
GamePi20は汎用Linuxマシンなので、TIC-80はもちろんですが、Webサーバやファイルサーバ、プレゼンテーションなど様々なソフトウェアを持ち歩くことが出来ます。
ポケットからさっと取り出したマシンから直接プレゼンテーションをするなどは、なかなか面白い使い方だと感じます。
皆さんもこのGamePi20の使い道を考えてみてはどうでしょう?
そんなGamePi20ですが、Banggoodで購入する方にはクーポンがあるので、ぜひ下記ページを参照してクーポンコードをゲットして購入してください。
クーポンの有効期限は2021/01/31までなので、欲しいと思ったら即ポチることをお勧めします!