pico-zxspectrum — это эмулятор ZX Spectrum (48K/128K) для микроконтроллера Raspberry Pi Pico на базе RP2040 и RP2350, разработанный автором fruit-bat. Проект позволяет превратить недорогой микроконтроллер (около $4) в полноценный ZX Spectrum с выводом изображения на DVI/HDMI, LCD или VGA-дисплеи, поддержкой USB-клавиатур и джойстиков, PS/2-клавиатур, матричных клавиатур, а также загрузкой игр с SD-карты. Это один из самых популярных и активно развиваемых проектов эмуляции ZX Spectrum на микроконтроллерах, на базе которого создано множество аппаратных реализаций, включая портативные устройства PicoZX и Picomputer.
1. Видеовыход
Проект поддерживает несколько типов видеовыхода:DVI/HDMI
Эмулятор использует библиотеку PicoDVI для прямого вывода DVI/HDMI-сигнала через PIO-состояния RP2040. В README приведена примерная схема подключения HDMI-разъёма.VGA
Поддерживаются три конфигурации VGA:- VGA RGBY 1111 — наиболее сложная, но любимая автором конфигурация: использует всего 5 выводов Pico. Изображение чуть бледнее, чем в других вариантах, что легче для глаз.
- VGA RGB 222 — промежуточный вариант.
- VGA RGB 332 — вариант с наибольшим количеством цветов.
LCD
Поддерживаются LCD-дисплеи на контроллере ST7789 (320×240), подключаемые напрямую к Pico.2. Аудиовыход
Существует три техники вывода звука:PWM/цифровой звук
PWM-аудио доступно в трёх вариантах — с использованием 1, 2 или 4 выводов:| Обозначение | 1 пин | 2 пина | 4 пина |
|---|---|---|---|
| RP AUDIO1 | Buzzer & AY-3-8912 PWM | AY-3-8912 PWM | AY-3-8912 Channel A PWM |
| RP AUDIO2 | — | Buzzer | Buzzer |
| RP AUDIO3 | — | — | AY-3-8912 Channel B PWM |
| RP AUDIO4 | — | — | AY-3-8912 Channel C PWM |
Высокие частоты необходимо отфильтровывать из PWM-выхода и смешивать с цифровым звуком Spectrum. Разделение Spectrum buzzer и AY-3-8912 улучшает точность звучания. Наилучшее качество достигается при отдельных выводах для buzzer и каналов A, B, C чипа AY-3-8912.
I2S DAC
Эмуляция может управлять ЦАП PCM5100A для линейного выхода через I2S. Используются выводы RP_DAC_DATA, RP_DAC_BCLK и RP_DAC_LRCLK на Pico. На данный момент протестировано только на плате Pimoroni Pico DV.HDMI-аудио
HDMI-сборки теперь могут выводить звук 44,1 кГц на дисплей.3. Ввод
USB-клавиатура и джойстики
Поддерживаются USB-клавиатуры и джойстики через библиотеку pico-hid-host, созданную специально для этого проекта. Для работы джойстиков они должны предоставлять HID-отчёт (обычно так и есть для стандартных PC-геймпадов). Некоторые производители выпускают джойстики без HID-отчёта, требующие собственных драйверов — они работать не будут.PS/2-клавиатура
Цели эмулятора могут принимать ввод от PS/2-клавиатуры, подключённой к выводам RP_PS2_DATA и RP_PS2_CLK. В README приведена рекомендуемая схема подключения с резисторами и стабилитронами для защиты от 5В-подтяжек.Матричная клавиатура
Поддерживается чтение с оригинальной матричной клавиатуры ZX Spectrum (8×8).4. Загрузка и сохранение
- 12 слотов быстрого сохранения — QS1, QS2, … сохраняют состояние эмулятора в соответствующий слот.
- Загрузка из .z80 снапшотов — поддержка файлов снапшотов.
- Чтение .tap ленточных файлов — эмуляция загрузки с ленты.
- SD-карта — для хранения игр и снапшотов используется SPI SD-карта.
5. Поддерживаемые платы
Проект предоставляет готовые цели сборки (build targets) для множества аппаратных конфигураций:| Плата | Описание |
|---|---|
| HDMI breadboard | Макетная сборка с HDMI-выходом |
| VGA breadboard | Макетная сборка с VGA-выходом |
| PICO ZX48/128 | Заменная плата ZX Spectrum 48K от Bobricius |
| PICOZX LCD | ZX Spectrum с LCD и VGA от Bobricius |
| PICOZX | ZX Spectrum с VGA от Bobricius |
| RetroVGA | VGA-микрокомпьютер от Bobricius |
| PicomputerMax | LCD-микрокомпьютер от Bobricius |
| PicomputerZX | ZX Spectrum с LCD от Bobricius |
| Pimoroni Pico DV | Плата Pimoroni Pico DV |
| Pimoroni Pico VGA | Плата Pimoroni Pico VGA |
| HDMI + key matrix | Макет с поддержкой матричной клавиатуры |
| ArnoldUK | Плата Arnold UK |
| MURMULATOR | Микрокомпьютер с VGA/HDMI |
| MURMULATOR2 | Микрокомпьютер с VGA/HDMI |
| RP2040-PiZero | Плата Waveshare RP2040-PiZero |
6. Прошивки
Готовые бинарные цели (UF2-файлы) можно скопировать напрямую на Pico. Они находятся в папке uf2 или доступны по ссылкам на страницах соответствующих плат.Порядок прошивки:
- Отключите питание и все USB-устройства (хаб, клавиатуру, джойстики).
- Зажмите кнопку BOOTSEL и подключите Pico к USB-порту компьютера.
- Отпустите BOOTSEL после подключения — Pico определится как Mass Storage Device с именем RPI-RP2.
- Перетащите UF2-файл на том RPI-RP2.
7. Сборка из исходников
Для сборки необходимо клонировать несколько репозиториев:
Bash:
mkdir ~/pico
cd ~/pico
git clone https://github.com/fruit-bat/pico-hid-host
git clone https://github.com/fruit-bat/pico-nespad
git clone https://github.com/fruit-bat/pico-extras
git clone https://github.com/fruit-bat/PicoDVI
git clone https://github.com/fruit-bat/pico-zxspectrum
git clone https://github.com/pimoroni/pimoroni-pico
git clone https://github.com/fruit-bat/pico-dvi-menu
git clone https://github.com/fruit-bat/pico-emu-utils
git clone https://github.com/redcode/Z80
git clone https://github.com/redcode/Zeta
8. Экранные меню и управление
Проект имеет встроенную систему экранных меню (On Screen Menu) для настройки эмулятора.Клавиатурные сокращения:
- LCtrl+F1 — быстрое сохранение в слот 1.
- Alt+V — стрелки работают как Kempston-джойстик.
- Alt+C — стрелки работают как курсорные клавиши Spectrum.
9. Конфигурации клавиатуры
В README приведены подробные таблицы маппинга клавиш для различных плат (RetroVGA, Picomputer и др.), включая обычные раскладки, раскладки с зажатым Alt и числовые сдвиги.10. Резюме
pico-zxspectrum — это зрелый и активно развиваемый проект эмуляции ZX Spectrum на Raspberry Pi Pico (RP2040/RP2350), предоставляющий гибкие возможности видеовыхода (HDMI/DVI, VGA, LCD), аудиовыхода (PWM, I2S DAC, HDMI), ввода (USB, PS/2, матричная клавиатура) и хранения (SD-карта). Проект поддерживает множество готовых аппаратных платформ и предоставляет полную документацию для самостоятельной сборки. Это один из ключевых ресурсов для энтузиастов, создающих портативные или встраиваемые Spectrum-системы на современной микроконтроллерной базе.Файлы для загрузки
| азвание файла / Папка | Описание | GitHub | Yandex.Диск |
|---|---|---|---|
| Скачать все файлы | Все файлы находятся в одном архиве | Ссылка на GitHub | Ссылка на Яндекс.Диск |