Doom перенесен на Raspberry Pi RP2040

Doom был портирован на все виды платформ, включая платформы ESP32 с 4 МБ PSRAM, но перенос Doom «RP2040 doom» на Raspberry Pi RP2040 является более сложной задачей, поскольку ОЗУ ограничено жалкими 264 КБ, встроенными в микроконтроллер, и для платы с флэш-памятью всего 2 МБ, такие как Raspberry Pi Pico, емкость хранилища становится проблемой.

Но Грэм Сандерсон решил все эти проблемы, сжав данные, изменив код, чтобы использовать меньше оперативной памяти, полностью задействовав два ядра Arm Cortex-M0+, оба с разгоном до 270 МГц, чтобы запустить Doom (DOOM1.WAD) на Raspberry Pi Pico с разрешением 320×240 при 60 кадрах в секунду, а также полные WAD Ultimate Doom и DOOM II, которые, как ожидается, поместятся в платы Raspberry Pi RP2040 с флэш-памятью SPI 8 МБ.

Порт был основан на Chocolate Doom, эмуляция OPL2 для поддержки звука была получена из проекта emu8950, а звуковые эффекты были сжаты с помощью кодировщика ADPCM-XQ IMA-ADPCM. Вот что получилось за полгода работы (в свободное время):

  • RP2040 разогнан до 270 МГц (примечание: требуется флэш-чип, который будет работать на частоте 135 МГц)
  • В полную версию DOOM1.WAD можно играть на Raspberry Pi Pico с флэш-памятью 2 МБ.
  • В Ultimate Doom и Doom II можно играть на устройствах с флэш-памятью 8 МБ, таких как StackyPi или UDOO Key.
  • Выход VGA 320 × 200 при 60 кадрах в секунду (увеличено до 1280 × 1024 при 60 Гц).
  • Частота кадров около 30-35+ FPS.
  • Аудио — 9-канальный звук OPL2 с частотой 49716 Гц, 8-канальные стереофонические звуковые эффекты.
  • Сеть I2C для 4 игроков.
  • Поддержка ввода USB-клавиатуры.
  • Сохранение/загрузка игр, поддерживаются все читкоды.
  • Поддерживаются все финальные сцены, антракты, экраны помощи.

Результаты вы можете посмотреть сами на видео ниже.

Исходный код, инструкции по сборке и прошивку UFS можно найти на Github . Но если вы хотите понять, как это было реализовано, используемые методы сжатия, оптимизации порта doom, например, замена 32-битных переменных на 16-битные для уменьшения используемой памяти и общие проблемы проекта, вам обязательно следует прочитайте длинную рецензию на Github.io.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

5 1 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments