Dolphin OS

Dolphin OS — специализированная программная среда и набор библиотек времени выполнения, разработанные компанией Nintendo для игровой консоли GameCube (кодовое имя Project Dolphin). В отличие от классических операционных систем, Dolphin OS не является резидентным ядром; она жёстко связывается (статическая линковка) с исполняемым файлом игры (.dol), предоставляя разработчикам прямой доступ к аппаратуре консоли для минимизации задержек и максимизации производительности.

Архитектура и многопоточность

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

Разделение ресурсов[1] Все потоки работают в едином адресном пространстве.

Управление памятью

В Dolphin OS реализована модель управления памятью[2] через концепцию «арен» (arenas). Процесс инициализации системы через вызов OSInit определяет границы доступной физической памяти:

  1. ArenaLo: Нижняя граница, начинающаяся после глобальных переменных ОС и векторов прерываний.
  1. IPL / BS2 (Initial Program Loader): Написан на языке C и представляет собой полноценное приложение, использующее функции SDK. IPL отвечает за системное меню, настройку параметров (календарь, звук) и запуск Apploader с оптического диска.

Разработчики имеют возможность создавать и управлять несколькими кучами (heaps) внутри этих границ, что позволяет эффективно распределять ресурсы под разные типы данных (например, разделение статических ассетов и динамических объектов).

Процесс начальной загрузки

Загрузка GameCube представляет собой многоуровневый процесс, обеспечивающий безопасность и инициализацию компонентов:

BS1 (Bootstrap Stage 1): Первый код, исполняемый процессором Gekko после сброса. Он написан на языке ассемблера и хранится в зашифрованной масочной ROM объемом 2 МБ (производства Macronix). BS1 выполняет базовую настройку контроллера памяти и клоков, после чего расшифровывает и загружает вторую стадию в RAM.

IPL / BS2 (Initial Program Loader): Написан на языке C и представляет собой полноценное приложение, использующее функции SDK. IPL отвечает за системное меню, настройку параметров (календарь, звук) и запуск Apploader с оптического диска.

Хранение данных и файловые системы

Оптические носители (NROM)

Игровые диски используют проприетарный формат NROM объемом около 1,5 ГБ с файловой системой на базе FST (File System Table). Таблица FST обеспечивает быструю индексацию файлов, где каждая запись (entry) имеет фиксированный размер 12 байт, содержащий флаги типа (файл или директория), смещение имени в таблице строк, адрес на диске и длину файла.

Безопасность и утечки данных[3]

Защита системы реализована аппаратными и программными методами:

Носители: Диски защищены уникальной кодировкой в области BCA (Burst Cutting Area), которую невозможно воспроизвести на обычных пишущих приводах.

Наследие и преемственность

Архитектура GameCube послужила прямым фундаментом для консоли следующего поколения — Wii. Основные вычислительные блоки Wii являются эволюционным развитием чипов GameCube: процессор Broadway основан на Gekko, а графический чип Hollywood — на Flipper. Ключевым нововведением стало внедрение сопроцессора Starlet (ядро ARM9), который работает под управлением полноценной ОС под названием IOS. При запуске игр GameCube на Wii Starlet динамически перенастраивает ввод-вывод для имитации оригинальной среды Dolphin OS.

Приоритезация: Планировщик управляет выполнением задач на основе приоритетов. Высокоприоритетные потоки обычно резервируются для критических процессов, таких как обработка аудио и ввод данных от контроллеров, в то время как основные потоки отвечают за игровую логику и рендеринг.[1]

Синхронизация: Работа планировщика тесно интегрирована с менеджером видеоинтерфейса (VI Manager), что позволяет синхронизировать выполнение задач с вертикальной разверткой экрана (VBlank). Инициализация планировщика в коде осуществляется через функцию osCreateScheduler().[1]

ArenaHi: Верхняя граница физической памяти (обычно 0x81800000 для стандартных 24 МБ RAM).[1]

IPL / BS2 (Initial Program Loader): Написан на языке C с использованием ранних версий Dolphin SDK. IPL отвечает за системное меню, настройки часов/календаря и знаменитую анимацию вращающегося куба. Если в приводе находится лицензионный диск, IPL загружает программу Apploader, которая, в свою очередь, готовит к запуску основной исполняемый файл игры.[1]

Блоки 1-2: Директория и её резервная копия.

Блоки 3-4: Таблица распределения блоков (BAM — Block Allocation Map) и её копия.[3]

Шифрование: Данные на дисках и код IPL зашифрованы с использованием XOR-алгоритмов.[1]

Утечки: В 2020 году в результате масштабной утечки (GigaLeak) исходные коды системных компонентов (boot0/1/2) и документация стали публично доступны. Однако сообщество разработчиков эмуляторов (например, Dolphin) официально избегает использования этих данных из-за высоких юридических рисков и возможности преследования со стороны Nintendo.

Примечания

  1. 1 2 3 4 5 6 Client Challenge. ru.scribd.com. Дата обращения: 2 января 2026.
  2. Yet Another Gamecube Documentation (англ.). gc-forever.com (23 декабря 2006). Дата обращения: 6 января 2026.
  3. 1 2 GameCube Architecture | A Practical Analysis (англ.). The Copetti site (19 ноября 2019). Дата обращения: 2 января 2026.