Skip to content

Latest commit

 

History

History
243 lines (184 loc) · 14.8 KB

runtime.md

File metadata and controls

243 lines (184 loc) · 14.8 KB

Запуск и управление

Требования и сборка

Нужны Linux, Rust 1.85 или новее, Cargo и date. Для оконного режима также нужны C-компилятор и X11/XWayland; для DRM — доступный DRM/KMS. Локальный IPC использует tmpfs.

Cargo получает imanlib из Git-репозитория; точный коммит закреплён в Cargo.toml и Cargo.lock. При первой сборке требуется доступ к GitHub и реестру зависимостей. После их загрузки возможна офлайн-сборка.

Из каталога igui соберите оконный вариант:

cargo build --locked --release

Результат — target/release/igui. Эта команда не собирает iman или эмуляторы и не подготавливает игровой каталог. Сборка для RK3032 и запуск через DRM.

Быстрый запуск

Поместите бинарник и ресурсы в один каталог:

mkdir -p out/system/igui
cp target/release/igui out/system/igui/
cp -R locales controls out/system/igui/
./out/system/igui/igui --games /absolute/path/to/games

--games указывает каталог с готовым catalogue.json. IGUI не импортирует ROM и не сканирует игры вместо индекса. Формат каталога и настроек.

locales/ и controls/ читаются рядом с исполняемым файлом. При обновлении не смешивайте прежние и новые копии одного профиля в controls/: дубли отключают соответствующий способ ввода. Русский интерфейс выбирается полем "lang": "ru" в prefs.json; без настроек используется английский. Справка по параметрам:

./out/system/igui/igui --help

Для запуска игр подготовьте комплект с iman:

ROOT/
├── system/
│   ├── iman/{iman,iman.json,emulation.json}
│   ├── igui/{igui,locales/,controls/}
│   └── retroarch/{retroarch,cores/,padconf/}
├── games/{catalogue.json,images/,thumbs/,states/,saves/}
└── prefs.json

Запускайте system/iman/iman: менеджер откроет IGUI и вернёт меню после игры. Настройка эмуляторов описана в документации iman. Другие режимы запуска.

Режимы запуска

В самостоятельном режиме IGUI показывает каталог в окне X11 размером 1280×720:

igui --games /absolute/path/to/games

Для запуска игр используйте iman. Он запускает IGUI, передаёт настройки сеанса и возвращает меню после игры с прежними фильтрами и выбранной строкой. Самостоятельный IGUI показывает диалог запуска, но не запускает эмулятор.

Для ручного подключения к работающему менеджеру:

igui --managed --ipc-socket /absolute/path/to/control.sock

В этом режиме --games не нужен и не допускается: каталог задаёт менеджер. --headless отключает экран и устройства ввода, требует IPC-сокет и используется для программного управления. Контракт IPC.

Сборка для RK3032

Установите Rust target armv7-unknown-linux-musleabihf и из каталога igui выполните:

cargo build --locked --release \
  --target armv7-unknown-linux-musleabihf \
  --no-default-features --features drm,rgb565

Результат — target/armv7-unknown-linux-musleabihf/release/igui. Настройки сборки выбирают статический musl и Cortex-A7. Поместите бинарник, locales/ и controls/ в system/igui/ своего комплекта. Подготовка комплекта с iman и эмуляторами описана в README.

DRM/KMS

Сборка с feature drm позволяет запускать меню без оконной системы:

igui --drm --drm-device /dev/dri/card0 --games /absolute/path/to/games

Нужны права доступа к выбранному DRM-устройству и совместимый режим 1280×720. --drm-device выбирает устройство; при нескольких подходящих выходах укажите --drm-connector ID. Автоматического поиска других DRM-устройств нет.

--allow-vendor-einval разрешает специальный вариант обработки ошибки SET_MASTER EINVAL в vendor-драйвере. Другие проверки доступа и дисплея остаются включёнными. При запуске через iman это задаётся в его конфигурации. DRM нельзя сочетать с --headless или --demo-load-ms.

Feature rgb565 выбирает 16-битный формат DRM-буферов. Для 32-битного XRGB8888 соберите без неё:

cargo build --locked --release --no-default-features --features drm

Управление и навигация

Действие Геймпад Клавиатура ПК
Перемещение D-pad Стрелки
Подтверждение A Enter или A
Запуск выделенной игры Start —
Избранное B B
Верхние фильтры Y Y
Нижние фильтры X X
Корзина / восстановление Select Delete

В обычном списке Select открывает подтверждение: A — перенести игру в корзину, B — отменить. В корзине Select сразу восстанавливает игру. ROM и превью не удаляются.

Поиск, буква, платформа, избранное/корзина, число игроков и жанр применяются совместно. Y переводит к верхним фильтрам, X — к нижним. В раскрытом нижнем фильтре ↑/↓ выбирают вариант, A применяет его, B отменяет, Y закрывает список и переводит к верхним фильтрам.

A на результате поиска закрывает поиск без запуска; Start запускает игру сразу. Длинное название прокручивается в карточке, описание можно прокручивать отдельно. Esc закрывает обычное окно; выход из шапки завершает сеанс с iman.

Профили контроллеров

Профили читаются при запуске из controls/ рядом с бинарником. Другой каталог можно выбрать через --controls DIRECTORY. При запуске из каталога исходников без установки ресурсов используйте --controls ./controls.

Файл Имя в Linux и USB ID Способ ввода
0810-0001-evdev.json HID 0810:0001, USB 0810:0001 evdev, клавиатурные коды кнопок
20bc-5500-evdev.json ShanWan Twin USB Joystick, USB 20bc:5500 evdev, клавиатурные коды кнопок
2563-0555-evdev.json ShanWan Twin USB Joystick, USB 2563:0555 evdev, коды кнопок джойстика
2563-0555-hidraw.json ShanWan Twin USB Joystick, USB 2563:0555 hidraw, два канала одного приёмника
045e-028e-evdev.json Microsoft X-Box 360 pad, USB 045e:028e evdev, крестовина и левый грибок
0079-181c-evdev.json ShanWan Wireless Gamepad, USB 0079:181c evdev, направления левым грибком

На геймпадах приёмника 0810:0001 есть маркировка DataFrog. В документации этот комплект обозначен как ShanWan Twin USB Joystick (DataFrog). Его системное имя — HID 0810:0001; оно сохранено в JSON для распознавания устройства.

У 0079:181c крестовина не назначена: для направлений используйте левый грибок. Лицевые X/B/Y/A, Back и Start назначены в обоих новых evdev-профилях. Правый грибок, курки, плечи, нажатия грибков и Guide не выполняют действий IGUI. Беспроводная форма корпуса Xbox сама по себе не означает identity Microsoft.

Схема имени файла — VID-PID-backend.json. Выбор профиля зависит не от имени файла или модели платы, а от USB VID/PID, точного имени устройства и backend в JSON. Оба backend относятся к Linux; коды evdev зависят от представления устройства драйвером. Не меняйте поле name как декоративную подпись.

Чтобы изменить раскладку, отредактируйте JSON и перезапустите IGUI. Для нового устройства добавьте профиль с его identity и назначениями. Каталог не обходится рекурсивно; допускаются до 64 обычных JSON-файлов, до 32 КиБ каждый и до 512 КиБ суммарно. Повреждённый профиль или пустой каталог останавливает запуск.

Не оставляйте два профиля с одинаковыми identity, именем устройства и backend: они конфликтуют, и этот способ ввода для устройства отключается. При переименовании заменяйте файл, а не добавляйте его копию. Профили разных backend для одного устройства допустимы; автоматически сначала используется hidraw, затем evdev. Меню управляется одним контроллером; после подключения отпустите кнопки, затем нажмите нужную кнопку.

--hid-profile PATH и --evdev-profile PATH заменяют все профили соответствующего backend одним указанным файлом. Они не сочетаются с --headless, --input-probe и ручными настройками joydev.

Для ручного joydev-ввода используйте --gamepad /dev/input/jsN. --gamepad-buttons X,B,Y,A задаёт индексы кнопок, --gamepad-select N — Select. Этот режим не использует JSON; автоматического переключения на joydev нет.

Проверка ввода

При включённом в iman тесте контроллеров меню предлагает его после десяти секунд бездействия. Любое действие до приглашения пропускает тест; B в приглашении отменяет его. Сам тест и его отчёт обрабатывает iman.

Для отдельной диагностики сырых событий evdev:

igui --input-probe --frames 600

--frames ограничивает число итераций; допустимы значения от 1 до 18000. Проверка читает устройства, но не меняет их настройки и не сохраняет предпочтения.

Локальный IPC

Работающий IGUI принимает команды igui.status, igui.input, igui.screenshot и igui.close через сокет сеанса. Ввод доступен после загрузки каталога. Параметры команд.

Снимок без пути хранится в RAM и удаляется при выходе. Для постоянного PNG укажите абсолютный путь к новому файлу в существующем каталоге. Существующие файлы и символические ссылки не заменяются.

Запись и завершение

Избранное, перенос в корзину и восстановление сохраняют prefs.json. При запуске игры через iman A/Start также сохраняет выбранную позицию. Если менеджер запретил запись предпочтений, эти сохранения не выполняются. Ошибка сохранения позиции не препятствует запуску игры. Самостоятельный диалог запуска позицию не сохраняет.

Загрузка, навигация, поиск и выход ничего не записывают в предпочтения. Игровые сохранения и диагностические отчёты принадлежат эмулятору и iman. IGUI не меняет режим монтирования SD и не гарантирует сохранность данных при внезапном отключении питания.