MinUIでPyxelを動かす


![pyxel_rd.png](https://cdn-ak.f.st-hatena.com/images/fotolife/m/masatora_bd5/20241101/20241101091446.png)

## はじめに

MinUI上でPyxelを動かす方法について、簡潔に記します。

動作イメージ： https://x.com/i/status/1849144025343049838

### MinUIについて

MinUIは、携帯ゲーム機向けの軽量OSで、レトロゲームのエミュレーションに特化しています。起動やゲーム再開が非常に速く、待ち時間なくゲームプレイに集中できるよう工夫されています。

- 軽量で高速
- レトロゲームエミュレーションに特化
- シンプルで直感的なUI
- 起動と再開が速く快適なゲームプレイ体験

ただし、対象ゲーム機は限られており、エミュレータの数は少なめ。ホーム画面などのカスタマイズはほとんどできません。

:::note
しかしながら、ゲームプレイの快適さはこの分野では群を抜いており、個人的にもっとも愛好するOSです。
:::

公式ページ： [GitHub - shauninman/MinUI: MinUI is a focused, custom launcher and libretro frontend for a variety of retro handhelds.](https://github.com/shauninman/MinUI)

### Pyxelについて

Pyxelは、レトロなピクセルアートとゲーム開発に特化した軽量プログラミング環境で、幅広いユーザーに支持されています。Pythonで2Dゲームを作成できます。

- Pythonベースの開発環境
- 内蔵ツールで即時開発可能
- クロスプラットフォーム対応
- Webブラウザでの実行

2018年7月30日に初リリースされて以来、GitHubで4000以上のスターを獲得し、MonoGameやPlayCanvasなどの長年確立されたゲームエンジンと肩を並べる人気を誇っています。

公式ページ：[GitHub - kitao/pyxel: A retro game engine for Python](https://github.com/kitao/pyxel)

遊べるゲームの中でも、『Finardry』（無料版）と『Dungeon Antiqua』（有料版）はとてもおもしろく、Pyxelのキラーアプリといってよい存在です。

公式ページ：[GitHub - suuhiromofufactory/finardry](https://github.com/shiromofufactory/finardry)
公式ページ：[Dungeon Antiqua](https://dungeon-antiqua.com)

### 携帯ゲーム機であそぶPyxelゲーム

携帯ゲーム機用のOSでは、基本的にはPyxelが動かないケースが多いです。そのなかでも、plumOSシリーズは作者のご尽力により、Pyxelが動きます。plumOS-RNですと、Dungeon Antiquaも動かせます。

公式ページ：[GitHub - game-de-it/plumOS-RN: ROCKNIX FORK](https://github.com/game-de-it/plumOS-RN)

携帯ゲーム機でPyxelのゲームを遊ぶには、plumOS-RNがいちばんのおすすめです。しかし個人的に愛好している、MinUIでもPyxelを動かしたいのです。

## 手順概要

概要を記します。使っている携帯ゲーム機はRGB30です。

- plumOS-RNからPython-3.11.7 ディレクトリを入手
- MOSS（MinUIのスロット1）にPython-3.11.7をコピー
- MinUIのスロット2にpakを作成

RGB30： [POWKIDDY RGB30 RK3566 Handheld Game Console Built-in WIFI](https://powkiddy.com/ja-jp/products/pre-sale-powkiddy-rgb30-rk3566-handheld-game-console-built-in-wifi)
pakのドキュメント：[MinUI/PAKS.md](https://github.com/shauninman/MinUI/blob/6f715c4184069cd6cec98ac2aec92bc55da67965/PAKS.md)

## 手順詳細

### plumOS-RNからPython-3.11.7 入手

plumOSの `/storage/Python-3.11.7` を入手します。ただし、plumOS-RNのSDカードは、（少なくともmacOSでは）ふつうには読めません。SAMBAでマウントしても見られないところにあります。

私は、File ExplorerでROMカードにコピーしました。

### MOSSにPython-3.11.7をコピー

MOSSのSDカードも、（少なくともmacOSでは）ふつうには読めません。いったんMinUIのROMカードにディレクトリをコピーし、Tools > Filesを利用し、

`/storage/Python-3.11.7` にコピーします

![img|300](https://i.gyazo.com/11ad02442d94c60e8759468b14271b2e.jpg)

### MinUIのスロット2にpakを作成

ROMカードに、下記ディレクトリを作成します。

/Emus/rgb30/PYXEL.pak
/Roms/Pyxel (PYXEL)

:::note
rgb30 のところは、ご自身のゲーム機に置き換えてください
:::

続けて、上記 `PYXEL.pak` に下記ファイルを作成します。

/Emus/rgb30/PYXEL.pak/missing.png
/Emus/rgb30/PYXEL.pak/launch.sh

#### missing.png

自家製pngでよければ下記リンクをダウンロードして名前を変えてご利用ください。使用フォントがわからなくてテキトーです。

[私家版missing.png](https://cdn-ak.f.st-hatena.com/images/fotolife/m/masatora_bd5/20241101/20241101085448.png)

#### launch.sh

```sh
#!/bin/sh

ondemand

DIR=$(dirname "$0")
EMU_TAG=$(basename "$(dirname "$0")" .pak)
PYXEL_DIR="/storage/Python-3.11.7/bin"
PYXEL_BIN="/storage/Python-3.11.7/bin/pyxel"

if [ ! -d "$PYXEL_DIR" ]; then
	show.elf "$DIR/missing.png" 4
	exit
fi

export SDL_GAMECONTROLLERCONFIG="19009b4d4b4800000111000000010000,retrogame_joypad,platform:Linux,x:b3,a:b0,b:b1,y:b2,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3,"

ROM="${1}"
EXTENSION=`echo "${ROM}" | awk -F. '{print $NF}'`
ROMNAME=`basename "${ROM}" | awk -F. '{print $1}'`

if [ "${EXTENSION}" = "py" ]; then
  "${PYXEL_BIN}" run "${ROM}" &> "$LOGS_PATH/$EMU_TAG.txt"
elif [ "${EXTENSION}" = "pyxapp" ]; then
  "${PYXEL_BIN}" play "${ROM}" &> "$LOGS_PATH/$EMU_TAG.txt"
else
  exit 0
fi
```

## 動作イメージ

https://x.com/i/status/1849144025343049838

### おわりに

ミニマリスティックなMinUI上でPyxelを動かすのは少し手間がかかりますが、その価値は十分にあります。携帯ゲーム機でのレトロゲーム体験を楽しむ方々に、少しでも参考になれば幸いです。

### リンク

- MinUI [GitHub - shauninman/MinUI: A focused, custom launcher and libretro frontend](https://github.com/shauninman/MinUI)
- MinUI pak [MinUI/PAKS.md](https://github.com/shauninman/MinUI/blob/6f715c4184069cd6cec98ac2aec92bc55da67965/PAKS.md)
- Pyxel [GitHub - kitao/pyxel: A retro game engine for Python](https://github.com/kitao/pyxel)
- Finardry [GitHub - suuhiromofufactory/finardry](https://github.com/shiromofufactory/finardry)
- Dungeon Antiqua [Dungeon Antiqua](https://dungeon-antiqua.com)
- RGB30 [POWKIDDY RGB30 RK3566 Handheld Game Console Built-in WIFI](https://powkiddy.com/ja-jp/products/pre-sale-powkiddy-rgb30-rk3566-handheld-game-console-built-in-wifi)

この記事の最新メンテ版は[📗241101_MinUIでPyxelを動かす - MXT Forest](https://silme.zelo-loop.com/mxt/%F0%9F%93%9DMini+Hacks/%F0%9F%93%97241101_MinUI%E3%81%A7Pyxel%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99)にあります。