Разрабатываемый эмулятор Nintendo GameCube

pureikyubu (プレイキューブ) — эмулятор Nintendo GameCube, созданный для изучения аппаратного обеспечения консоли и реверс-инжиниринга технологий, на которых делались игры. GameCube — инженерный шедевр Nintendo/ArtX, и разбирать его по частям, чтобы понять, как он устроен, — большое удовольствие.

Что нового

Релиз 1.9 — релиз новых возможностей: встроенный Game Boy Advance и Game Boy, полная программная реализация графических блоков Flipper, новый отладчик, MCP-сервер для LLM-агентов, профилировщик аппаратных интерфейсов, headless-сборка и рекомпилятор DSP — плюс исправления, благодаря которым вступление Metroid Prime доходит до титульного экрана, а Super Mario Sunshine загружается.

Новая машина

Game Boy Advance и Game Boy

src/gba — вторая консоль, написанная по публичным спецификациям, со свободным boot ROM, рисующим логотип pureikyubu, собственным SDL2-интерфейсом и собственным стендом. pureikyubu --gba game.gba запускает картридж; pureikyubu game.gbc запускает Game Boy внутри него.

Графика

Программный конвейер GFX

У блоков Flipper появилась реализация на CPU рядом с OpenGL: настоящий массив памяти EFB, настоящий TMEM и движок копирования, который пишет XFB, сканируемый видеоинтерфейсом. GFX_PIPELINE переключает конвейеры на ходу.

Отладка

DebugUI2

Новый отладчик с собственным потоком, собственным окном OpenGL и сессией на каждый запуск. Каждая панель — Markdown команды JDI: тринадцать вкладок от Gekko до профилировщика, плюс машины GBA и Game Boy.

Инструменты

MCP-сервер

pureikyubu --mcp публикует весь отладочный интерфейс как инструменты Model Context Protocol — около 170 штук — и LLM-агент управляет эмулятором через stdin/stdout.

Диагностика

Профилировщик интерфейсов

Что реально переносят каналы консоли за эмулируемую секунду: шины 60x и Splash, FIFO PI/CP, каждый движок DMA, вход аудиомикшера, примитивы GFX и кадры VI — таблицей, PNG или оверлеем.

Платформа

Headless-сборка и JIT для DSP

Консольная цель без окна для бенчмарков и запусков MCP (с offscreen-бэкендом OpenGL в Windows), аудит безопасности за небольшим слоем проверок, UTF-8 во всём интерфейсе и рекомпилятор базовых блоков DSP, который в 1.5–1.8 раза быстрее.

Скриншоты

Снято с текущей сборки (линейка релиза 1.9).

Новый отладчик DebugUI2 с регистрами Gekko и памятью
Новый отладчикКаждая панель — Markdown команды JDI: история сессии и командная строка рядом с регистрами Gekko, дизассемблером и физической памятью.
Super Mario Sunshine доходит до вступительной сцены
Super Mario SunshineЗагружается, проигрывает вступительный ролик и доходит до следующей сцены — после того как инструкции управления кэшем перестали вызывать исключение на сегменте прямого доступа.
Metroid Fusion на встроенном Game Boy Advance
Metroid FusionВстроенный Game Boy Advance, запущенный собственным свободным boot ROM эмулятора, отрисовка на 60 к/с.
Soul Calibur II, отрисованная pureikyubu
Soul Calibur IIСторонняя 3D-игра, отрисованная через shader-конвейер XF/TEV.

Как собрать

Windows

Откройте scripts/VS2026/pureikyubu.sln в Visual Studio 2026 и нажмите Build. Есть конфигурации Debug и Release как для Win32-, так и для SDL-интерфейса.

Linux

Сборка через CMake + SDL2, проверена в том числе под WSL2:

sudo apt install libglew-dev
git clone https://github.com/emu-russia/pureikyubu.git
cd pureikyubu && git submodule update --init
cd build && cmake .. && make
./pureikyubu pong.dol

Программный конвейер GFX

У графической подсистемы Flipper появился второй путь рендеринга: программная (CPU) реализация тех же аппаратных блоков, написанная по спецификациям GameCube, переключаемая на лету переменной конфига GFX_PIPELINE и рисующая через настоящий массив памяти EFB, вывод которого (XFB) сканирует видеоинтерфейс.

Сцена, отрисованная программным конвейером GFX

Читать страницу · In English · Wiki · Задача #384

MCP-сервер

Эмулятор умеет работать как локальный MCP-сервер (Model Context Protocol): LLM-агент запускает его своим дочерним процессом и управляет через него всем отладочным интерфейсом — каждая команда эмулятора становится инструментом (tool). Загрузить образ диска, прочитать регистры Gekko, снять дамп основной памяти, посмотреть счётчики железа, сделать скриншот.

{
  "mcpServers": {
    "pureikyubu": { "command": "pureikyubu_headless", "args": ["--mcp"] }
  }
}

Читать страницу · In English · Wiki · Задача #383

Что дальше

Релиз 2.0 станет следующим мажорным релизом — релизом периферии. Он нацелен на периферийные устройства консоли — шину EXI и устройства на ней (карты памяти, Broadband Adapter, RTC), последовательный интерфейс и контроллеры, дисковый интерфейс и привод, а также порт связи, который уже есть у стороны GBA, — и должен замкнуть множество возможностей эмулятора, чтобы список «ещё не реализовано» сократился до того, что действительно не имеет значения.

После этого проект переходит в своё устойчивое состояние: планомерное улучшение — производительность и исправление ошибок от релиза к релизу, а не очередной рывок за новыми возможностями. Архитектура уже на месте; остаётся сделать то, что есть, быстрее, точнее и полнее. Подробности — в заметках о релизе 1.9.1.

Документация

Дайджест после 1.6

English digest · Дайджест на русском

Wiki

Внутренности эмулятора: Flipper, GFX, Gekko, Debug UI и разбор IROM процессора DSP.

Архив

Прошлые релизы, оставлены для справки.