К стыду своему, я, любитель ретро-компьютеров, узнал об этом проекте совсем-совсем недавно. А от осознания того, что такой значимый проект, да ещё и отечественный, да ещё и основанный на моём любимом процессоре RP2040 (Raspberry Pi Pico), прошёл мимо меня, мне становится стыдно вдвойне.
Хотя... если подумать, то ничего удивительного в моей неосведомлённости и нет. Я ведь никогда не был "спектрумистом". Свой "Вектор-06Ц" я уже успел сломать, когда большинство нынешних "спектрумистов" ещё под стол пешком ходили.
А когда они носились со своими 48К, я уже вовсю юзал IBM PC XT (ну ладно-ладно!.. ЕС-1841, если быть совсем уж точным). И поскольку у меня нет ностальгии по спектрумовским играм и демкам, то и в тусовке этой меня тоже нет.
Тем не менее, к Спектруму я отношусь с должным почтением, хотя и не считаю его сколь-либо приличной игровой платформой. Я просто признаю за ним все его многочисленные заслуги в деле компьютеризации населения, и потому давненько подумываю о том, чтобы заполучить себе какой-нибудь новодельный экземпляр легенды. Благо, в них недостатка нет. Вот только мой перфекционистский зуд сразу же затребовал для своего удовлетворения чего-то эдакого:
Заморачиваться самому с заказом плат и компонентов мне решительно не хотелось (ну вы же помните, не настолько я ударенный спектрумист) и потому железного Спектрума у меня до сих пор так и не появилось...
А вот "железный эмулятор" (ну чтобы bare-metall. Чтобы загружалось и работало быстро и сразу - как на реальном железе) - почему бы и нет?
И вот таким наиболее толковым bare-metall-решением для меня стал Мурмулятор. Тем более, способный благодаря могучести RP2040, эмулировать ещё и кучу других интереснейших платформ:
И опять же. Заморачиваться с раздельной покупкой плат и компонентов мне решительно не хотелось. Хотелось купить готовый набор (кит) и вот им, как ни странно, оказался самый доступный по цене и скорости доставки, вариант от белорусской компании БелЧип.
Нет, это не реклама. Если хотите, то можете считать спонсором данной публикации мой Boosty-канал.
Свою продукцию братья-белорусы продают на крупнейших российских маркетплейсах за вполне вменяемые деньги:
При этом, к чести продавца замечу, что в случае с Мурмулятором, он не просто продаёт наборы для сборки, воспроизведённые по открытым исходникам, а сделал собственный редизайн печатной платы. То есть, он не просто продавец. Он - производитель.
Собственно, вот смотрите сами:
Если вы ознакомитесь с проектом Мурмулятор, то без труда отметите, что
K-214-1 "Murmulator" audio I2S представляет из себя платформу, оптимизированную с точки зрения компактности и стоимости, а также заточенную именно под ретро-гейминг.
Тут вам и RP2040-Zero вместо более крупной классической Raspberry Pi Pico, и отсутствие "гребёнок" GPIO. И это, скажу я, забегая вперёд, не есть хорошо...
Но зато тут сразу "из коробки" имеется DAC-чип PCM5102A, который будет даже поинтересней престарелого TDA1387T.
О том, какой версии Мурмулятора соответствует белорусский кит, производитель мне ответил следующее:
БелЧип (14 мая 2025)
В контроллер Pico Zero загружена прошивка эмулятора ZX Spectrum – «tecnocat». В прошивке реализована поддержка ZX-Spectrum Basic 48/128, TR-DOS, работа с SD картой, файловый менеджер с предпросмотром файлов, поддержка форматов tap и z80, TurboSound и другое.
Ну то есть, на прямо заданный вопрос не ответил :)
Однако сообщил, что их платформа, по сути, рассчитана на "минималистичную" эмуляцию компьютера "ZX-Spectrum" (согласно декларации залитой прошивки).
Устройство я ещё не спаял - мой внутренний перфекционист требует установки опционального чипа дополнительной PSRAM-памяти (ESP-PSRAM64H), которую надо ждать из Китая, поэтому я вам сейчас просто покажу состав комплекта, а потом ещё немного поразглагольствую. Итак, поехали!
На нижеследующей фотографии обратите пожалуйста на красную черту и стрелку, на неё указывающую:
Теперь техническая документация из набора:
Увы, но вышеприведённая страница Руководства по сборке, говорит о том, что зря братья белорусы сэкономили на спичках - в их версии Мурмулятора придётся изрядно "колхозить", чтобы реализовать весь спектр возможностей платформы :(
Как видно из прилагаемой к комплекту документации, у пользователя есть возможность выбора видеоинтерфейса - VGA или работающего на некоторых HDMI-мониторах DVI.
Так вот, насколько я понимаю, для работы большинства прошивок выбор видеоинтерфейса не критичен, но только не для Мурмулятор ОС. Если судить вот по этой публикации, то число поддерживаемых ею видеорежимов в случае выбора VGA существенно выше, нежели у DVI-HDMI (девять против трёх!).
А на этом, собственно и всё.
Что делать, если не умеешь или не хочешь паять?
Справедливости ради стоит заметить, что всё то же самое и даже проще и дешевле, можно получить, например, в формате LILYGO FabGL VGA32, известной также как TTGO VGA32 (страница продукта).
Просто заливай прошивку и наслаждайся. Список Spectrum-фич там более чем внушительный.
Ну вообще-то, с "наслаждением" лично у меня получилось не очень. Я попробовал ESPectrum (https://github.com/EremusOne/ESPectrum#readme) на своей LILYGO® FabGL VGA32 и впечатления у меня сложились неоднозначные.
С одной стороны, всё красиво, стройно, чётко, продуманно. С другой - какие-то непонятные лаги при работе с честной PS/2 клавиатурой.
И ещё. Лично мне не понравилась "прилизанность" ESPectrum. Всё в нём, как мне показалось, рассчитано на самого-самого незамысловатого юзера - загрузил игрушку и поиграл. Всё. Каких-то тонких настроек я в среде этого эмулятора не обнаружил.
И в общем-то, это отличный вариант, потому что данная платформа построена на весьма производительном чипе ESP32. Точнее, модуле TTgo Micro-32, внутри которого трудится чип ESP32-PICO-D4.
Внутри этого микроконтроллера (МК) мы имеем два 32-битных энергоэффективных ядра Xtensa® 32-bit LX6, работающих на частотах от 80 до 240 МГц, 448 KB ROM для загрузчика/ядра и 520 KB SRAM для данных и прикладных программ.
Ну и вдобавок к этому, модуль TTgo Micro-32 оснащается 4 MB SPI flash и 8 MB PSRAM (да-да, той самой, которая у Мурмулятора является опцией).
Про беспроводные интерфейсы WiFi+BT+BLE я уже просто молчу.
Однако есть пара нюансов.
Во-первых, безальтернативность VGA-выхода и, соответственно, наличия у пользователя VGA-монитора, а также жёсткая привязка к интерфейсам мыши и клавиатуры - PS/2. Последним "недостатком", кстати, обладает и нынешний (то есть, первый) Мурмулятор. Хотя вот в версии v1.00.9a прошивки ZX Speccy P, выпущенной 22.04.2025, уже заявлена OTG USB клавиатура и USB мышь + PS/2 клавиатура.
Во-вторых, отсутствие таких Мурмуляторных фич как внешний аудиочип (высококачественный DAC). На борту ESP32, конечно же, есть два восьмибитных DAC и конечно же, вездесущий ШИМ (PWM), но это ни в какое сравнение не может идти с 16 битами TDA1387T, не говоря уже о PCM5102A, "тянущего" 32 бита и частоту дискретизации до 384 кГц (правда, не с максимальной разрядностью. Однако и возможных 24-бит/192 кГц более чем "за глаза").
Ещё вариант - залить прошивку ZxSpectrumPiZero в готовую плату Waveshare RP2040-PiZero. Тут уже будет DVI ( /HDMI ) и USB. К тому же, этот вариант дешевле.
Однако лично мне такое решение видится наименее предпочтительным.
Во-первых, у него также нет дополнительного аудиочипа (DAC), а во-вторых, нет возможности установить PSRAM.
Аудиочип, полагаю, можно будет подцепить внешний - посредством развитой "гребёнки" GPI.
А в общем-то, каждый выбирает для себя наиболее подходящий вариант - либо могучая прошивка благодаря наличию PSRAM, но устаревшая периферия (VGA и PS/2 клавиатура-мышь), либо современная периферия (DVI / HDMI и USB), но прошивка послабее.
Вопросы быстродействия
Понятное дело, что мощности современных 32-битных RISC-ядер, спрятанных внутри любого из вышеназванных МК, да ещё в количестве двух(!) штук - должно с лихвой хватить для эмуляции восьмибитного трёх с половиной мегагерцового Z80.
Тем не менее, все эти эмуляторы пишутся преимущественно на C/C++, на голом энтузиазме, с привлечением далеко не всегда оптимизированных самым лучшим образом библиотек. И в итоге мы имеем все шансы на встречу с ситуацией, когда силёнок у наших RISC-монстров (без тени иронии!) может и не хватить для эмуляции какой-нибудь разогнанной модификации Спектрума. О таких ситуация я слышал.
Ещё острее вопрос быстродействия встаёт перед нами, если попытаться выйти за пределы эмуляции ZX Spectrum.
Таким образом, ещё на стадии выбора платформы-Спектрумоносителя мною был поставлен вопрос: ESP32-PICO-D4 или RP2040?
АРХИТЕКТУРА Xtensa® 32-bit LX6, реализованная в процессоре ESP32-PICO-D4 более продвинута. Тут мы имеем дело с версией процессора ESP32, оснащённой модулем вычислений с плавающей запятой одинарной точности (последнее для эмуляции Spectrum вряд ли будет иметь хоть какое-то значение).
Поскольку Xtensa®, это гибко конфигурируемы процессоры, то конкретные детали их реализации именно в чипах Espressif Systems найти не просто. Где-то пишут о пятиступенчатом конвейере, где-то аж о семиступенчатом. Но это в любом случае длиннее, нежели две стадии (ступени) конвейера у ядер Cortex M0+, использованных в RP2040 и лучше подходит для более высокой тактовой частоту ESP32.
Собственно, вот данные и производительности двух конкурирующих платформ:
- Быстродействие ядра Cortex M0+ на частоте 133 МГц - 123.69 DMIPS
(0.93 DMIPS/MHz) - Максимальное быстродействие ядра ESP32 на частоте 240 МГц: - 300 DMIPS
(1.25 DMIPS/MHz)
Кстати, RP2350, приемник RP2040, оснащён двумя ядрами ARM Cortex-M33, построенными на архитектуре Armv8-M, у которых уже есть блок вычислений с плавающей точкой (и не только), и которые производительней M0+ более чем в полтора раза (1.5 DMIPS/МГц).
Есть у RP2350 и два RISC-V ядра на открытой микроархитектуре Hazard3. Но поскольку набор возможностей этих ядер (RV32IMAC+, но я не буду их все тут перечислять, ибо не место и не время Если интересно, то смотрите в rp2350-datasheet.pdf, на стр.234) скромнее, нежели ядер ARM, то в Мурмуляторе 2 (https://murmulator.ru/nextgen) их не используют.
ТАКТОВАЯ ЧАСТОТА. О разгоне ESP32 либо ничего не говорится, либо я ничего не слышал. Поэтому просто исходим из максимально возможных
240 МГц.
А вот RP2040 отлично разгоняется. И разгон этот настолько обычен, что в Murmulator OS (MOS) для этого есть штатная команда - cpu. Я вам больше того скажу - частота RP2040 в этой ОС по умолчанию равна 378 MHz.
В прошивке ZX Speccy P версии v0.16.7 от 2025.01.28 (последняя версия на момент выхода публикации - v1.00.9a от 2025.04.22) RP2040 и вовсе может быть разогнан до 400 МГц. Хотя последнее уже и не гарантируется.
Выходит, Мурмулятор, построенный на RP2040, вполне может достигать производительности в 350 DMIPS.
Базовая тактовая частота RP2350, приемника RP2040, используемого во втором Мурмуляторе, также повышена до 150 МГц и уже на этой тактовой частоте производительность ядра RP2350 достигает 225 DMIPS. Соответственно, скромный разгон этого чипа до 300 МГц способен обеспечить производительность в 550 DMIPS
Промежуточный итог: С учётом почти штатного разгона RP2040 вообще и Raspberry Pi Pico в частности, производительность этой платформы можно считать почти равной таковой у платформы ESP32.
KILLER-ФИЧА RP2040. Парочка PIO-процессоров. Потенциально этот архитектурный изыск способен здорово разгрузить основное ядро, занятое эмуляцией. Используют ли авторы Мурмулятора в таком качестве PIO-процессоры, мне не известно. Однако в том же RC2014, я знаю, целую Raspberry Pi Pico использована в качестве видеоадаптера.
Так что да. Мой выбор, всё же - Мурмулятор на платформе RP2040.
И на этом позвольте откланяться.
Заключение
Теперь, когда вам известны и готовые альтернативы, и более-менее понятно, что из себя представляет Мурмулятор от БелЧип, можно однозначно сформулировать ответ на неявно заданный вопрос - "Почему он?"
- Потому, что вы вольны сами выбирать тип видеоинтерфейса (VGA или HDMI).
- Потому что B-CH K-214-1 "Murmulator" audio I2S предлагает вам лучший звук (внешний DAC).
- Потому что проект Мурмулятор, это гораздо больше, нежели эмулятор ZX Spectrum. Тут и множество других ретро-платформ, и даже собственная ОС.
- Использование в Мурмуляторе RP2040 невероятно удобно для конечного пользователя: вы просто копируете uf2-файл во flash-память накопителя, которым прикидывается RP Pico (Murmulator) и на этом всё!
Да, у новых версий ESPectrum обновление теперь тоже идёт из среды самого эмулятора через записанный на SD-карту файл firmware.upg, но первичная прошивка происходит куда как хлопотней. Например, через установку esptool и далее работу с этой утилитой в командной строке.
И вообще, давайте будем честны - Rapsberry Pi как компания, просто на два порядка превосходит Espressif Systems по уровню сервиса. Вы на их техническую документацию только посмотрите! На её количество, объём, оформление. У меня, как у бывшего технического писателя, это вызывает чуть ли не благоговейный трепет.
Послесловие
Эта публикация задумывалась как простая демонстрация фотографий кита, а в итоге разрослась до статьи (в ходе написания которой я лично для себя выяснил кое-что любопытное). Причем, не только про Мурмулятор. Оттого и выглядит мой текст (прежде всего, для меня самого) как спутанный поток сознания.
Действительно, я совсем-совсем не знаток Спектрумов и платформ, его эмулирующих, поэтому наверняка допустил в своём тексте кучу неточностей и ошибок. Так что если у вас есть что сказать по поводу написанного - пишите. Буду только рад.
Только пожалуйста, без хамства. Для того, чтобы донести вашу позицию до меня и других читателей, совершенно не обязательно хамить и превозноситься над теми, кто знает меньше вашего в данном вопросе.
Будьте добрей и мудрей, мои дорогие соотечественники. Если мы не будем помогать друг другу, уважать друг друга, то кто другой нас будет уважать?
Кто другой нам будет помогать?
Узбеки?
Азербайджанцы?
Таджики?