gamepi20
gamepi20
- どうも初期SDカードに違法ROMが入っているのでこれは削除する
仕様
- 解像度 320x240
- 14500リチウムイオン電池
- 公式OS
-- retropie
-- recalbox
recalboxを1から入れる
- HDMIディスプレイ出力が出ない
- WiFiを設定する
- キーバインドに注意
-- Enter, Space , A
- ディスプレイドライバの導入
-- コピペが出来ないのでWindows上のVMから
- fbcpはrecalboxに組み込まれている
-- remountが必要なので注意
- ジョイスティック用ドライバも組み込まれている
- gpioをオフにして手動でfbcpを使うと動いた
- gpioはどう設定すればいい?
-- できた 1,2を有効にしたのが良く無かったらしい
- TIC-80のゲームがはじめ1回起動したきり、起動しない
-- Segmentation Faultだった
-- デバッグのために手で実行しても落ちる
-- -vをつけるとうまく動く。マルチスレッド系?
- ホットキーが設定されていない
-- GPIOの設定でセレクトボタンを割り当てた
- 画面がぼやける
-- smoothをオフにしてみた
記録しながら再設定
- バックアップを取っておく
-- /boot/config.txt
-- recalbox.conf
再設定
- 8GBのSDカードを用意(本当は16GBくらいがよさそう)
- RaspberryPi Imagerで Recalbox 7.1.1-Reloaded(Pi 0/1/GPI Case) を選択しSDカードに書き込む
https://inline.inajob.tk/img/twitter-5643382/gamepi20/e87d6430-48ff-11eb-b4e5-be58b30421f5#.png
https://inline.inajob.tk/img/twitter-5643382/gamepi20/707baf5e-496b-11eb-b4e5-be58b30421f5#.png
- HDMIの設定をコンサバにして、どんなモニタでも映るようにする
-- config.txtに下記を追記(もともとコメント付きで記載されているので、コメントの"#"を取り除きます。ディスプレイによっては何もせずに動くかもしれません)
> pre
hdmi_safe=1
<<
- SDカードをGamePi20に挿入する。
-- 一度メインボードとRaspberryPiZeroを外す必要がある。外しにくいので注意
-- SDカードを挿入したら、横着せずにケースを組み立てる。(HDMI端子やUSB端子に斜めに力が入ると「もげる」ことがある)
- 初回起動は画面が表示できないのでHDMIケーブルをモニタ接続する
- 初回起動時はキーパッドが利用できないのでUSB-OTGアダプタ経由でキーボードを接続する
- 電源を入れて結構待つ(2分くらい?)そのうち画面にロゴが出てきます。その後ローディング画面がまた3分ほど・・ 気長に待ちます。
- WiFiの設定を行う。以降はsshでログインしたり、Samba経由でファイルを編集したりできる。
-- Enterキーでメニューを表示、上下キーで「NETWORK SETTINGS」を選択。「A」キーで決定
-- 「ENABLE WIFI」で「A」キー。Connecting to WIFI... と表示されるのでしばらく待つ。
-- 「WIFI SSID」で接続したいAPを選択して「A」キーで決定
-- 「WIFI KEY」で接続パスワードを入力(ここはキーボードで入力する)
-- 「IP ADDRESS」の欄にIPが表示されるので控えておく
- 手元のノートPCなどでSSHで接続する。(ユーザは"root"でパスワードは"recalboxroot"
> pre
$ ssh root@192.168.X.X # 上記で確認したIPアドレス
<<
- システムファイルの書き換えをできるようにファイルシステムをマウントしなおす
> pre
mount -o remount, rw /boot
mount -o remount, rw /
<<
- /etc/modules にframebuffer関係の設定を追記する(もともと書かれている内容はそのまま)
> pre
vim /etc/modules.conf
<<
> pre
flexfb
fbtft_device
<<
- config.txtでSPIを有効にする(ファイルの末尾に追記する)
> pre
vim /boot/config.txt
<<
> pre
dtparam=spi=on
<<
- /etc/modprobe.d/fbtft.conf でTFT液晶固有の設定を行う
> pre
vim /etc/modprobe.d/fbtft.conf
<<
> pre
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する(ここでも起動しきるまで結構待つ)
> pre
reboot
<<
- 再びSSH接続した、fb1が出現していることを確認(出現していない?)
> pre
ls /dev/fb*
/dev/fb0 /dev/fb1
<<
- fbcpを起動するためのスクリプトを/etc/init.dに配置
-- 本来recalboxにfbcpを起動する機能があるようなのだが、どうにも動かないので手動でファイルを配置する
> pre
mount -o remount, rw /boot
mount -o remount, rw /
vi /etc/init.d/rcS
<<
ファイルの末尾に下記を追加
> pre
fbcp &
<<
- recalbox.confでディスプレイの設定を行う。 (該当設定部分を変更
> pre
vim recalbox.conf
<<
> pre
global.videomode=default
global.ratio=4/3
<<
- config.txtでtftディスプレイ向けの設定を行う
> pre
mount -o remount, rw /boot
<<
> pre
vi /boot/config.txt
<<
下記を追記
> pre
hdmi_force_hotplug=1
hdmi_cvt=640 480 60 1 0 0 0
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
dtoverlay=pwm
<<
- recalbox.confでGPIO経由のスイッチの設定を行う
> pre
vim recalbox.conf
<<
該当設定を変更 controllers.gpio関係の設定は下記2行のみになるように、消すなり、コメントアウトする。
> pre
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
<<
- rebootする。
- BGMがスピーカーから鳴り、液晶とキーパッドが正しく動くことを確認
- ここまでで普通にrecalboxが動くようになった。HDMIを抜いてリブートして、普通に遊べることを確認。(液晶に画像が表示されるまでに、結構時間がかかるが気長に待とう)
- ゲーム一覧の文字サイズを大きくする
> pre
mount -o remount, rw /
vim /etc/emulationstation/themes/recalbox-next/theme.xml
<<
下記の0.025を0.5くらいに変更する
> pre
<textlist name="gamelist">
<fontPath>./data/arts/Exo2-BoldCondensed.otf</fontPath>
<fontSize>0.025</fontSize>
<forceUppercase>1</forceUppercase>
</textlist>
<<
- ゲームを転送する
-- windowsなら \\192.168.X.Y\share\roms\ 以下の対象のハードのフォルダにROMを転送する。
-- 転送後は START -> UPDATE GAMELISTS を選択し更新する必要がある。
- ゲームをやめてメニューに戻る
-- SELECT + START
- TIC-80がうごかないのでデバッグモードを有効にする recalbox.conf (不要そうだった、前のは何だったんだろう?)
- 動作が重たいので不要なサービスを停止する recalbox.conf (デバッグモードを解除したからか?結構早いぞ)
> pre
system.virtual-gamepads.enabled=0
system.manager.enabled=0
<<
- フロントフェイスがダサいので、3Dプリンタで作り直す
試してみたいこと
普通のRaspberryPiとして使ってみる
- 持ち運べるサーバというのも面白そう
- 画面・音をなんとかしたい
- キーボードをつないで普通にRogueで遊んだりとかもよさそう
TIC-80を動かしてみる
- 無料のゲームエンジンが動くと楽しそう
- recalboxですでにサポートしている?
- PICO-8でも良いが、こちらは有料
ほかに何かないか?
- 作曲してみたい(TIC-80でできる?)
- スマート家電の操作?
- プレゼンテーション(よさそう)
参考資料
- RaspberryPiでTIC-80
- RaspberryPiでのビルド方法が書かれている
-- Zeroでは遅いとのうわさもあるが・・
- TIC-80ではGPIOサポートは無しかな?
- キーパッドはGPIOから読むしかない?
- GPIOをうまいこと扱う方法
-- 下のadafruitのドライバを入れるシェルスクリプトのようだ Adafruit-Retrogame
- ジョイスティック用ドライバ
- recalboxでromをインストールする方法
-- 普通にsmbがいるらしい
> oembed
<<
> oembed
<<
> oembed
<<