ZX Spectrum разработки «Sinclair Research Ltd» и его клоны - несомненная веха в истории бытового компьютеростроения. Если брать верхнюю оценку, всего было произведено до 9 миллионов ZX Spectrum и его клонов, что делает его одним из самых массовых домашних компьютеров 1980-х годов (на втором месте после Commodore 64 - порядка 17 млн. экземпляров). Многие люди, владельцы Спектрума, Пентагона, или Ленинграда, в далёких 80-ых, в настоящее время переживают ностальгию по ушедшему детству/отрочеству/юности... Что питает спрос на антикварные и новодельные "спектрумы".
Понятно, что существует огромное число всевозможных эмуляторов, которые дают возможность поиграть в детство. Но далеко не всем они "заходят". Кому-то надо, чтобы было более железно, лампово и старо-клавиатурно, кто-то хочет просто повозиться с микросхемами тех лет... Вот для них и продают наборы для самостоятельной сборки всевозможных "ленинградов" и "нео-пи-си". Однако, есть и промежуточный спрос - чтобы эмулятор, т.к. оно дешевле, но чтобы отдельная коробочка, т.к. оно более "железно".
Выбор в этой нише тоже достаточно разнообразен, но я бы хотел остановиться на Мурмуляторе и его клонах (см. другие мои статьи на эту тему). Для него существует 5 немного различающихся реализаций спектрума: technocat, fast-beta, speccyP, fruit-bat и pico-spec. Все они имеют свои положительные и отрицательные грани, например, первый - очень хорош для мобильных реализаций на компактных устройствах с TFT-дисплеями, т.к. имеет продвинутую экранную клавиатуру, но все они достаточно универсальны и имеют похожий движок. Несколько выделяется из их ряда только pico-spec, т.к. только у него движок асинхронный, что позволяет очень точно отрисовывать всякие занимательные бордюрные эффекты, которые часто попадаются в демо-сцене и в редких играх. Недостатки pico-spec'а являются продолжением его достоиств - сложность синхронизации звука. У pico-spec'а, пожалуй, худшая реализация звукового тракта. Правда, замечают это далеко не все - в основном те, кто хочет себе спектрум для прослушивания трекерной музыки. Для игр качество звука вполне приемлемое.
Вот на pico-spec'е я и собираюсь немного остановиться подробнее, т.к. являюсь автором этого порта. Изначально у меня и в мыслях не было делать эмулятор Спектрума под Мурмулятор, т.к. их и так до чёрта. Но меня убедительно просили "хотя бы попробовать", т.к. существующие версии не удовлетворяли взыскательных пользователей, мол, часто картинка кривая получается. Постоянно приводили примеры, и хвалили ESPectrum - реализацию эмулятора "спесси" на микроконтроллере ESP32 (поддерживает "из коробки" платы Lilygo TTGO VGA32, Antonio Villena's ESPectrum board и Olimex ESP32-SBC-FabGL). Платы не сказать чтобы дешёвые, но вполне доступные. Понятно, что Мурмулятор дешевле, плюс - заточен под самостоятельную сборку, что потенциально ещё сильнее снижает стоимость изделия (если лапки прямые).
К моменту начала портирования, существовала только 1.2 версия ESPectrum, а дальше реализации несколько разошлись по набору возможностей, хотя, со временем, наверняка часть фич будут портированы или бэкпортированы.
И так, что умеет pico-spec? Начать стоит со списка эмулируемых машин:
оригинальный ZX Spectrum 48K;
оригинальный ZX Spectrum 128K;
советский клон ZX Spectrum 128K - Pentagon 128K,
его расширения: Pentagon 512K и Pentagon 1024K
и совсем редкий зверь - советская приставка на основе спекрума - Эльф (ALF TV GAME)


Для ZX Spectrum 128K доступны прошивки с различными расширениями (Amstrad ZX Spectrum 128K +2 и ZX81+):

Режим ZX81+ - для поддержки совсем уж старых доспекрумных игр, которые на нашем бывшем советском пространстве не шибко распространены, но всё это наследие ESPectrum, который делали ребята на западе под свои нужды. А вот пентагоны 512K и 1024K - это уже местная (моя) доработка. Для них не нужен отдельный ROM, поэтому они используют оригинальный, от Pentagon 128K. Все они используют одинаковый ROM с TR-DOS версии 5.03:

Ну и зачем нам TR-DOS без дисковода? Конечно, он есть! Эмулируется контроллер Betadisk, который умеет монтировать образы дисков в виде TRD и SCL-файлов, расположенных на sd-карточке Мурмулятора.


Звёздочкой помечены допустимые для монтирования в качестве диска файлы.
Совсем редкой игрушкой, эмулируемой в pico-spec'е, является Эльф:

Для него существует даже отдельная прошивка-клон ESPectrum - pico-alf, в которой нет других спектрумов. И, вероятно, я посвящу ему отдельную статью.
Естественно, pico-spec поддерживает загрузку TAP-файлов (оцифрованных определённым образом записей магнитофонной ленты) - стандарт "de facto" для распространения спектрумовских программ.

Поддерживаются два режима загрузки: fast-flash и обычный. Если быстрый способ не срабатывает, а такое бывает достаточно часто, то приходится загружать по-старинке, ожидая конца загрузки. Для этого в меню имеется отдельный пункт: Play/Stop. Для совсем сложных случаев (и такие встречаются) имеется Tape browser, который позволяет перемещаться по секциям загрузки.

В режиме загрузки ТАР-файлов можно прочитать и WAV-файл, а вот MP3-только конвертировать в WAV, а затем загрузить. На потоковою обработку mp3 микроконтроллера всё же не хватает.
За процессом загрузки можно следить, используя встроенное окно расширенной информации (доступно по F8):

Более современный и надёжный способ - использовать слепки памяти и состояния процессора, при этом pico-spec поддерживает 3 формата слепков: .SNA, .z80 и .p-файлы:

В слепке сохранён и тип машины, т.е. эмулятор автоматически переключится на необходимый формат эмуляции.
Так же, для любителей хардкора, поддерживается загрузка с реального магнитофона (в качестве которого часто сейчас используют мобильник с соответствующим wav или mp3-файлом)

Надо заметить, что загрузка реального звука очень "нежная", и малейший сбой или помеха покорёжит входной поток данных. Рекомендуется на это время отключить мессенджеры, чтобы не "блямкали", и следить за качеством питания всех устройств, участвующих в процессе загрузки. В pico-spec тоже хватает теневых процессов, которые могут повредить входящий поток аудиоданных. Все эти процессы приостанавливаются, соотв. что-то может перестать работать. Рекомендуется включать Real sound-in только на время загрузки программы, и выключать сразу по её окончании. Турбо-загрузчики официально не поддерживаются, но бывает что "везёт", и удаётся загрузить даже ленту, записанную турбо-загрузчиком.
А теперь - чит, которого мы были лишены в 80-ых - горячие сохранения (снепшоты)! Сколько раз приходилось бросать игру, т.к. не удавалось сохранить промежуточный результат, и приходилось начинать с начала? В эмуляторах мы лишены этой проблемы - сохраниться можно в любой момент, и загрузить игру с любого сохранённого момента.

Все эти сохранения являются полноценными .SNA-файлами, т.е. их можно передавать друзьям, для "доигрывания" (лежат в "скрытой" папке /spec/.p на sd-карточке).
Не смотря на то, что качество эмулируемого звука в pico-spec далеко от идеала, но благодаря обильным настройкам можно выбрать приемлемый вариант звучания любимой игры:



Бывает, что игра написана настолько криво, что эмуляция никак не может справиться с потоком звуковых эффектов, для этого предусмотрен пропуск кадров (троттлинг):

Изредка встречаются игры, которые не могут быть корректно воспроизведены даже с троттлингом (например, Maniac Miner 128). Для таких индивидуумов имеется турбо-режим - режим разгона виртуального z80 (центрального процессора в Спектруме). В нормальном спектруме z80 работает на частоте 3.5 МГц, но турбо режим даёт возможность переключить его на 7, 14 и 28 Мгц (Alt+F2). Следить за загрузкой процессора и частотой кадров можно в плашке доступной по F8. Цвет фона плашки отражает "скорость" процессора. Синий - 3.5, красный - 7, и т.п.

Если присматривать за параметром IDL, то видно, как начинаются тормоза при выходе этого параметра в отрицательную область (но надо найти подходящую игру, которая так сильно загрузит проц). Менее заметны тормоза при снижении FPS (штатные значения находятся в диапазоне 48-50 Гц)
Необходимо заметить, что pico-spec поддерживает несколько аппаратных платформ и версий мурмулятора. И в рамках одной платформы бывают сильно разные конфигурации. Например, наличие PSRAM серьёзно повышает производительность в режимах Pentagon 512K/1024K. Как именно определилась текущая платформа - можно запросить у прошивки по Alt+F1:

На скриншоте выше - наиболее мощная на сегодняшний день конфигурация: Murmulator с SPI PSRAM + RP2350B от Pimoroni (Pco Plus 2) с QSPI PSRAM на борту. К слову, рекомендую, при возможности, брать VGA вариант, т.к. под него больше всего прошивок всяких разных других устройств:

Вернёмся к pico-spec'у. Для упоротых программистов имеется даже встроенный режим дебага:



В дебагере поддерживаются основные необходимые функции, но без излишеств.
В основном меню тоже есть имеется небольшая справка по горячим кнопкам:

А ещё, со времён ESPectrum в pico-spec'е сохранилась красивая анимированная заставка:

Рассказывать про pico-spec в деталях можно ещё много, но основое я вам, ребята, поведал.
Для тех, кто не смог собрать/достать/купить Мурмулятор, существуют пара альтернатив: Waveshare RP2040-PiZero и Olimex RP2040-PICO-PC, под оба изделия имеются прошивки pico-spec'а. Но, если интересно моё мнение - берите Olimex RP2040-PICO-PC и Pimoroni RP2350B Pico Plus 2. Это если нет возможности добыть Мурмулятор или Френк.
Комментарии (35)
Man105
18.05.2025 05:09Ставил эмулятор и настольгические ощущения были только 15 минут. Рад что людям нравится такая игрушка.
mikeveng73 Автор
18.05.2025 05:09Да, от писишного эмуля у меня тоже ощущения не те. А вот отдельный девайс - очень близко к необходимому )
RealOldGamer
18.05.2025 05:09Так сразу и не соображу, какую версию pico-spec накатывать на мурмулятор ultimate
mikeveng73 Автор
18.05.2025 05:09не помню, есть ли на Ultimate (у меня его пока нет) переключение на PWM, есть ли там VGA-выход. Если есть, и сейчас в нём стоит первая пика "зелёная", то m1p1-spec-2048-378-PWM-VGA-1.2.B.uf2 из последнего релиза: https://github.com/DnCraptor/pico-spec/releases/tag/v.1.2.B
если отличается железяка, то надо посмотреть другие. там есть "легенда", по которой расшифровывается имя файлаRealOldGamer
18.05.2025 05:09на плате написано v. 2.3, значит m2p2-spec-378-GP8-PWM-HDMI-1.2.B.uf2
mikeveng73 Автор
18.05.2025 05:09Не, вряд-ли. Те версии к версии оригинального Мурмуля вряд-ли имеют отношение. Мурмуль 2.0 вышел совсем недавно, и Ультимейтов к нему я ещё не видел. Там же другой пинаут. А в прошивке m1 - обозначат пинаут Мурмуля от первой версии, p1 - первая пика, что к версии мурмуля не имеет отношения.
mikeveng73 Автор
18.05.2025 05:09получил подтверждение - на Ультимейте пинаут от первого Мурмуля. Дальше - зависит от того, какая на нём стоит пика, к чему подключен монитор, а по звуку - рекомендую перекинуть джампера в режим PWM. i2s чуток похуже звучит (на мой вкус)
mristerflare
18.05.2025 05:09https://github.com/DnCraptor/pico-spec/releases/download/v.1.2.9/m1p1-spec-2048-378-I2S-HDMI-1.2.9.uf2
mikeveng73 Автор
18.05.2025 05:09почти. https://github.com/DnCraptor/pico-spec/releases/tag/v.1.2.B - вышла новая версия - 1.2.B
rabitagorgor
18.05.2025 05:09У меня есть Murmulator Ultimate на первой RP (то есть m1p1 версия). Хотелось бы его апргрейднуть до m1p2, но не уверен, какая именно плата из 2350 туда подойдёт и заработает. Читал, что там есть какие-то тонкости по питанию на разных платах.
Можете, пожалуйста, подсказать - что купить из p2, чтобы можно было просто поставить её в мурмулятор m1, и чтобы заработало без перепайки какой-либо?
mikeveng73 Автор
18.05.2025 05:09Мой выбор - "Pimoroni Pico Plus 2", но она дорогая и трудно достать. Оригинальная "Raspberry Pi Pico 2" - тоже очень хороша, с теми же проблемами. Чуть легче добыть "Waveshare RP2350-Plus", и совсем частые - китайские "нонеймы" чёрного цвета. Они наиболее глючные.
rabitagorgor
18.05.2025 05:09То есть, ту же Pimoroni Pico Plus 2 можно просто прошить версией m1p2 - и она сразу заработает в первом мурмуляторе ультимэйт без перепайки и еще чего-либо?
Maxpower2k
18.05.2025 05:09Поставил оригинальную, вот такую
https://sl.aliexpress.ru/p?key=yC8q3qMВсе прекрасно работает.
mikeveng73 Автор
18.05.2025 05:09Да, зелёная - это хороший выбор. Бывают китайские подделки, но заранее понять, подделка или нет - я не знаю, как именно.
NeriaLab
18.05.2025 05:09Была бы ещё такая вещь для советского компьютера "Специалист" была бы. Именно с последнего я и увлёкся компами в 8.5 лет
GennPen
18.05.2025 05:09Вот здесь посмотрите:
Эмулятор ПК Специалист "SpeciARMlist"
Эмуляторы ПК «Специалист» - nedoPC.org
rabitagorgor
18.05.2025 05:09Для мурмулятора есть: https://murmulator.ru/emu80
Правда, там нужна уже пико 2.
perfect_genius
18.05.2025 05:09Фотографии экрана интерфейса, да ещё и в PNG. Спасибо, что не в 4к.
mikeveng73 Автор
18.05.2025 05:09Пощёлкал мобилой и вставил. Сильно тяжёлые? Я думал, интерфейс хабра их пожмёт.
ponikrf
18.05.2025 05:09Претензия в том, что вы обязаны были захватить картинку через HDMI карту и сделать скриншоты. Потом обрезать их и сжать их до нативного для ZX Spectrum разрешения ;)
apcs660
18.05.2025 05:09Сколько я их перепаял.. Щупаешь пальцами плату, находишь место вызывающее рассинрон и впаиваешь туда мелкий конденсатор.
А музыкальные процессоры?
Спасибо, вспомнил ночные загрузки игр с подкруткой головки магнитофона.
NutsUnderline
18.05.2025 05:09Очень тяжело было врубиться "что ты такое". везде упомянуты pico а на картинках почему то espspectrum везде. мне очень не хватило фразы в самом самом начале "Мурмулятор это эмулятор ZX Spectrum и всяких разных других микрокопьютеров на основе микроконтроллеров pico 2040/2035", да и на сайте Мурмулятора ее нет. Ну и что он умеет как минимум HDMI, TFT и TV. Осознать эти простые факты в общем то можно по сайту, но после их вывления вся статья стала простой и последовательной.
в качестве лирического отступления хотелось бы почитать кто это все разрабатывал и откуда такое название
ну и для полноты кругозора уже про zx spectrum хотелось бы больше тестов всяческих демок с мультиколорными атрибутами
mikeveng73 Автор
18.05.2025 05:09Принято. Поправлю. А вообще, есть тэги в статье, например: https://habr.com/ru/search/?target_type=posts&order=relevance&q=[мурмулятор] - рекомендую ознакомиться.
NutsUnderline
18.05.2025 05:09спасибо, я, хоть и стараюсь читать все-все заголовки статей, все равно пропускаю что то такое интересненькое. в данном случае мне кажется более интересно что есть современная полноценная платформа со всеми фичами и без долгой загрузки, как с линуксом, удобная далеко не только для эмуляторов. Однако растет именно как платформа для эмуляторов и представлена в первую очередь как эмуляторная. При этом всяких разных "спектрумов" ну столько понаделано, в самых разных разновидностях, куда бы уж еще. у меня в голове не укладывается как такое происходит.
GennPen
На сколько помнится, для счастливых обладателей дисководов была кнопка "Magic", которая сбрасывала дамп памяти в файл, который можно было потом запустить и продолжить. Работала нестабильно, иногда дамп не запускался, но хоть какая то надежда была.
mikeveng73 Автор
Да, было много всяких полукустарных реализаций. Чаще всего она просто NMI вызывала, а оно уже что-то к чему прикручено. И чего только не прикручивали - и дебагер туда вешали, и файловый менеджер... Забавно, что это наша местная придумка. На западе оно встречалось сильно реже. А тут - прям поветрие ))
lemur-galago
Справедливости ради, кнопка Magic, о которой, скорее всего, говорится выше была не полукустарной штукой, а фишкой контроллера betadisk (хотя она, конечно же вызывала nmi). Реализация у betadisk была достаточно кривой. В частности содержимое регистров процессора записывалось в стек и смещение вершины стека могло попортить что-то нужное в ОЗУ ну и, емнип, не все регистры процессора сохранялись, поэтому не всегда можно было потом продолжить игру.
mikeveng73 Автор
Вроде в Скорпионе она была и без бетадиска, и вызывала дебагер, но уже не уверен. Столько лет прошло..
ash_lm
В Скорпионе она вызывала встроенный, как они называли, теневой сервис - монитор от MOA, а там и дебагер и классическая "magic", и что-то ещё.
P.S. из интересного: в любимом мной питерском электронном журнале ZX-Format при нажатии на кнопку "magic" на ZX-Scorpion вызывался вообще свой шуточный монитор.
yappari
Была и антимэджиковая защита, когда стек переносился на начало экрана. Соответственно, всё валилось и после записи и при попытке запуска дампа. Правда в самом дампе после можно было с переменным успехом поковыряться. Также был вариант с программированием контроллера, когда он вгонялся в состояние, при котором нажатие Мэджика просто портило диск (писался мусор).