
PicoMemcard pico
dangiu/PicoMemcard
Emulating PSX Memory Card (or controller) using a Raspberry Pi Pico

Raspberry Pi 4/5 を Unity 製ゲーム(Linux x86_64)のゲーム機にするオリジナルOSイメージ(pi-gen/arm64・box64)。USBカセット自動インストール、レトロゲーム機風ランチャー、GPIOホームボタン。CC BY-SA 4.0
Home button is an open-source printed circuit board by radiann-kswg, from the radiann-kswg/RasPiOS_UnityConsole repository on GitHub, published under the CC-BY-SA-4.0 licence. It is a 2-layer board of 12.5 × 15 mm with 3 parts on 7 nets, routed with 15 tracks and 0 vias.
It is built around the TS-1187A-B-A-B and PM254-2-03-Z-8.5. Its parts include 1 resistor, 1 connector and 1 switch. It belongs with the computers and single-board computers and retro computing and games boards of this library.
Raspberry Pi 4 / 5 を Unity 製ゲームを遊ぶためのゲーム機にするオリジナル OS イメージ (pi-gen / arm64 / Raspberry Pi OS Lite(Debian trixie)ベース)。 Unity の Linux (x86_64) ビルドを box64 で動かし、 USB メモリの「ゲームカセット」を挿すだけで SD カードへ自動インストールする。
License: CC BY-SA 4.0(同梱フォント等は対象外) © ラジアン(柏木主税) / RadianN_kswg

| 機能 | 内容 |
|---|---|
| Unity アプリ実行 | box64 による Linux x86_64 ビルドの実行。Mesa の設定で OpenGLCore ビルドもそのまま動く |
| USB カセット | USB メモリの /UnityGames/ に置いたビルドフォルダや zip を、挿すだけで自動インストール |
| Type-C 転送・保守 | Type-C 1本で給電 + USB 複合ガジェット。シリアルでアプリ転送(tools/send-app.py)、USB ネットワークで SSH 保守 |
| ランチャー | 平成のゲーム機本体を思わせるドット絵 UI。アプリ終了後もここに戻る |
| 退避 | SD が一杯になったら、ランチャーからアプリを USB メモリへ移動(挿し直せば再インストール) |
| 入力 | USB / Bluetooth のゲームパッド・キーボード(ランチャーにペアリング画面あり) |
| ホームボタン | GPIO に挿す小基板。ゲーム中に短押しで一時停止+終了確認、長押しで即終了(設計データ) |
| GPIO 拡張(設計中) | ゲームから GPIO・PWM・I2C を使い、LED やサーボ、センサーで拡張ゲームパーツを作れるようにする(設計) |
いちばん上の画像は実機の HDMI 出力。下の画像は同じランチャーを Pi 上でオフスクリーン描画したもので、 ソフト名・メッセージ・空き容量は表示例。
| ソフトメニュー | 終了確認(ホームボタン短押し) |
|---|---|
![]() | ![]() |
| ソフトが多いとき(横スクロール) | Bluetooth ペアリング |
![]() | ![]() |
| ソフトが無いとき | |
![]() |
*.img.xz をダウンロードする
(SHA256 はリリースノートに記載)。自分でビルドする場合は docs/build.md。player / player で、SSH が有効。有線 LAN などのネットワークにつなぐ前に、
Type-C で PC とつないで ssh player@10.89.0.1 で入り、passwd でパスワードを変える
(USB リンクの詳細)。MyGame/
MyGame.x86_64 ← 実行ファイル(必須・1つ)
MyGame_Data/
UnityPlayer.so
game.json ← 任意(表示名と起動引数){"name": "表示名", "args": ["-screen-fullscreen", "1", "-screen-width", "960", "-screen-height", "540"]}A. USB メモリ(ゲームカセット) — USB メモリのルートに UnityGames/ フォルダを作り、
ビルドフォルダか zip を置いて本体の USB ポートに挿す。SD へ自動でインストールされ、ランチャーに通知が出る。
導入済みの同名アプリはスキップするので、挿しっぱなしでもよい。どのポートに挿してもよい
(既定では青い USB 3.0 ポートも USB 2.0 として動かす。理由)。
B. Type-C ケーブル(PC から転送) — 本体の Type-C 端子と PC をつなぐと、PC にシリアルポートが現れる。
pip install pyserial
python tools/send-app.py COM5 MyGame.zip # Linux なら /dev/ttyACM0C. SSH — 同じ Type-C 接続で ssh player@10.89.0.1 に入れる。ファイルを置いて ucon-install <zip|フォルダ> でも導入できる。
| 操作 | ランチャー | ゲーム中 |
|---|---|---|
| ←→ / ↑↓(十字キー・スティック) | 選択 | — |
| A / Enter | 決定 | — |
| B / Esc | 戻る | — |
| ホームボタン 短押し | — | 一時停止して終了確認 |
| ホームボタン 長押し(2秒) | — | すぐに終了 |
ソフトを決定すると「起動 / USBメモリへバックアップ(退避) / 削除 / 戻る」を選べる。 ゲームパッドのボタン番号の割り当ては機種によって異なる(ボタン0 が A、ボタン1 が B)。 パッドは起動後の接続や抜き差しにも対応する(ランチャーが挿さった 1 台だけを開き直す)。 アナログスティックは倒した瞬間だけ 1 回動く(閾値 0.6 / 復帰 0.35 のヒステリシス)ので、 摩耗して値が揺れるスティックでもカーソルが走らない。
ゲーム側(Unity)のパッド入力: X にウィンドウマネージャが無くゲームの窓がフォーカスを得ないため、
ucon-run-app が SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS=1 を付けて起動する(Unity の Linux プレイヤーはパッドを SDL で読み、
既定ではフォーカスの無い窓のパッド入力を捨てる)。Input System を使うゲームはさらに
InputSystem.settings.backgroundBehavior = IgnoreFocus にしておく(NTsWallpaperEngine で実機確認済み)。
ゲーム側のキーボード入力: WM が無い X では入力フォーカスが None のままでキー入力がどの窓にも配送されないため、
ucon-run-app が起動後(2 / 15 / 45 秒)に X の入力フォーカスを PointerRoot にする。
ポインタ下の窓=全画面のゲームへキーが流れるようになる(2026-09-21 に仮想キーボードで実測。
設定前はキーが完全に無反応で、PointerRoot にした瞬間に届いた)。
なお X のキーボード自動リピート(既定 660ms / 25回毎秒)は「離上+押下」の連打として届くので、 ゲーム側で長押しを判定するときは離上を少し様子見すること(NTsWallpaperEngine は 0.15 秒)。
| 対象 | 状況 |
|---|---|
| Raspberry Pi 4B | 実機で確認済み(起動、USB カセット導入、ゲーム実行、退避と再導入、ランチャー表示。HDMI 1280×720、Type-C を PC に接続して給電) |
| Raspberry Pi 5 | 設定は入っているが実機未検証(box64 のため 4K ページカーネルを使う) |
| ホームボタン基板 | 設計・発注データのみ(実基板は未製作。GPIO を模擬して動作確認済み) |
| ゲームパッド | ELECOM JC-U4013S(XInput モード / xpad ドライバ)を実機で確認済み(抜き差しの再認識、ランチャー操作、ゲーム起動)。ゲーム内のパッド操作は uinput の仮想 Xbox 360 パッドで確認(NTsWallpaperEngine) |
box64 によるエミュレーションなので CPU 負荷は高く、重い 3D ゲームは厳しい。 USB メモリは「ゲームカセット」として使うため、USB メディアからの起動とは併用しない。
lib/RasPiLib_UnityGpio/config pi-gen 設定(arm64 / trixie / STAGE_LIST)
build-image.sh ビルドラッパー(pi-gen の取得 → 独自ステージ同期 → ビルド)
stage-unityconsole/
00-base/ パッケージ(X/GL/pygame/git 等)・config.txt・ディレクトリ・権限
01-box64/ box64 の導入
02-gadget/ Type-C USB ガジェット(NCM + ACM)・dnsmasq・シリアル受信
03-cartridge/ USB カセット自動インストール・退避 CLI
04-launcher/ ランチャー(キオスク X セッション)と同梱フォント
05-purge-cloud-init/ cloud-init の除去(必ず最後)
lib/RasPiLib_UnityGpio/ GPIO 拡張の本体(サブモジュール・MIT。設計段階)
tools/send-app.py PC 側のアプリ転送ツール(pyserial)
hardware/home-button/ ホームボタン基板(KiCad 10)と JLCPCB 発注データ
docs/ ドキュメントと画面画像本リポジトリの独自制作物(ビルド構成・スクリプト・ランチャー・PC 側ツール・ホームボタン基板の設計データ・ ドキュメント・画面デザインと画面画像)は Creative Commons 表示 - 継承 4.0 国際 (CC BY-SA 4.0) で公開しています。ライセンス正文は LICENSE を参照してください。 改変したものを公開するときは、同じ CC BY-SA 4.0(または互換ライセンス)で公開してください。
著作者(ライセンス主): ラジアン(柏木主税) / RadianN_kswg
利用時のクレジット表記例:
RasPiOS_UnityConsole by ラジアン(柏木主税) / RadianN_kswg
CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/stage-unityconsole/04-launcher/files/fonts/ の x12y16pxMaruMonica.ttf と x14y24pxHeadUpDaisy.ttf)
— © hicc(患者長ひっく)、ゼロピクセルフリーフォント。
CC BY-SA 4.0 の対象外で、作者の独自ライセンス(ソフトウェアへの同梱・再配布・商用利用は可、
フォント単体の販売は不可など)に従います。要約は fonts/README.md、
正式な規約は配布サイトを参照してください。lib/RasPiLib_UnityGpio/(サブモジュール)は別リポジトリ RasPiLib_UnityGpio の内容で、
CC BY-SA 4.0 の対象外です。MIT ライセンスに従います(同ディレクトリの LICENSE を参照)。build-image.sh が取得します。.info ファイルにあり、ソースコードは Debian と
Raspberry Pi のアーカイブ(apt-get source <パッケージ名>)から入手できます。| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | HOME | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW1 |
| 1 | RPi_GPIO_35-40 | Connector_PinSocket_2.54mm:PinSocket_2x03_P2.54mm_Vertical | J1 |

dangiu/PicoMemcard
Emulating PSX Memory Card (or controller) using a Raspberry Pi Pico

loopj/wavephoenix
Open-source implementation of the Nintendo WaveBird receiver using Silicon Labs Wireless Gecko SoCs

jackw01/scanlight
A better light source for scanning color negative film

makeo/PicoLoader
A cheap and easy to install modchip for the Nintendo GameCube!



FujiNetWIFI/fujinet-hardware
Schematics and design files for FujiNet hardware

maxlab-io/tokay-lite-pcb
Tokay AI Camera - ESP32 camera development board
It measures 12.5 × 15 mm and has 2 copper layers, 1.6 mm thick.
3 parts, built around the TS-1187A-B-A-B and PM254-2-03-Z-8.5. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the radiann-kswg/RasPiOS_UnityConsole repository on GitHub, at the commit this page was made from: the board is hardware/home-button/home-button.kicad_pcb and its schematic hardware/home-button/home-button.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the CC-BY-SA-4.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).