
По многим критериям ESP32-S3 — это весьма мощный маленький компьютер. Неудивительно, что его используют даже для таких задач, как эмуляция ретро-консолей и тому подобного. В рамках проекта S3-MSX-PC [Иван Сварковский] (Ivan Svarkovsky) пошел еще дальше: он взял компонент MSX из мультисистемного проекта Retro-Go и оптимизировал его под процессорные ядра Xtensa Lx7, установленные в ESP32-S3.

Основой проекта служит чип ESP32-S3. Чтобы повторить протестированную конфигурацию, вам понадобится плата как минимум с 8 МБ PSRAM (конфигурация N16R8). Любое ПО перед запуском загружается в PSRAM, при этом поддерживаются стандарты MSX1, MSX2 и MSX2+.
Для вывода звука придется самостоятельно собрать и подсоединить PDM-фильтры к двум GPIO-контактам. Вывод VGA-видеосигнала реализован на базе простейшего 2-битного R-2R ЦАП (RGB222). В качестве устройства ввода можно использовать любую USB-клавиатуру, а игры и программы загружаются либо через веб-интерфейс, либо напрямую с SD-карты.
В разделе «Технические подробности» автор детально описывает, какие именно изменения — с благословения создателя fMSX — были внесены в оригинальное ядро fMSX. Среди них: адаптация под размеры кэша ядер Lx7 и оптимизация «горячих участков» кода для устранения узких мест. Также было выровнено обращение к памяти под архитектуру Xtensa, перенесены определенные данные из флэш-памяти в RAM и устранены сбросы конвейера (pipeline flushing), возникавшие из-за некоторых решений в ветвлении кода.
Учитывая, что технические характеристики оригинальных компьютеров MSX базировались на процессоре Z80, нет ничего удивительного в том, что микроконтроллер уровня ESP32-S3 может эффективно их эмулировать. Сам проект Retro-Go заявляет о поддержке целой кучи консолей от Nintendo и Sega (и не только), благодаря чему погрузиться в ретрогейминг становится проще простого — для этого теперь даже не нужно привлекать одноплатник вроде Raspberry Pi.
ссылка на оригинал статьи https://habr.com/ru/articles/1047008/