Энтузиаст запустил «эмулятор» ZX Spectrum на SEGA Mega Drive с помощью FPGA, победив суровые ограничения консоли
Разработчик Михаил Шероносов (известный под ником @ramfactory) опубликовал на «Хабре» подробный разбор своего нового хардкорного ретро-проекта. Он смог запустить полноценный эмулятор компьютера ZX Spectrum внутри 16-битной игровой приставки SEGA Mega Drive.
Для реализации идеи автор использовал кастомный флеш-картридж на базе современной программируемой логической интегральной схемы (ПЛИС/FPGA) Altera Cyclone IV. Несмотря на то, что внутри Mega Drive установлен процессор Z80, использовать его напрямую оказалось невозможно из-за специфической обвязки и жестких таймингов консоли. Единственным выходом стало развёртывание полноценного ядра Z80 с нуля прямо внутри кристалла FPGA.
Столкновение двух миров и аппаратные тупики
Проект, который изначально казался лёгкой трёхдневной прогулкой, едва не утонул в суровых аппаратных ограничениях видеоконтроллера SEGA VDP. Главная сложность заключалась в принципиальной разнице вывода графики: ZX Spectrum использует попиксельный метод (bitmap), тогда как Mega Drive умеет работать только с готовыми тайлами (сеткой 8x8 пикселей).Чтобы спроецировать экран «Спектрума» на Сегу, автору потребовалось заполнять рабочую область из 768 уникальных тайлов. Это привело к трём критическим проблемам:
Лимит шины данных: Массив тайлов весит 24 КБ, а DMA-контроллер консоли SEGA в режиме NTSC за время обратного хода луча (VBLANK) физически способен прокачать лишь около 7.3 КБ. При нехватке скорости картинка разрывалась на куски.
Эффект бордюра (HBLANK): Фирменные полосы загрузки требуют мгновенной подмены цветов палитры во время обратного хода строки, на что у консоли просто не хватало времени.
Экранная клавиатура: Для управления играми Spectrum необходим оверлей с клавиатурой, который создаёт дополнительную огромную нагрузку на видеопамять.
Как была обманута система
Разработчик решил проблему радикально — спроектировал кастомный сопроцессор ZX_SEGA_VIDEO прямо внутри FPGA. Вместо того чтобы гонять «сырые» тяжёлые данные через медленную шину консоли, это ядро «на лету» перехватывает обращения к памяти, вычисляет изменения атрибутов и подсовывает видеоконтроллеру Сежки нужные данные ровно в те микросекунды, когда это необходимо.
Дополнительно в кристалл ПЛИС внедрили звуковое ядро YM2149 с безопасной схемой стерео-микширования ABC, что исключило цифровой хрип и обеспечило чистый легендарный AY-звук.
Ламповая загрузка с кассет
Эмулятор отлично работает с ромами (.SNA и .Z80). Но для истинных ценителей ретро-атмосферы автор реализовал аппаратный «магнитофон» на FIFO-буфере.
Теперь на консоли можно запустить оригинальные файлы .TZX. На экране под легендарный цифровой скрежет EAR-звука начинают честно бежать сине-красные и желто-синие полосы загрузки по бордюру Сеги. Проект, подробнее о котором, технических деталях и разработке вы сможете подробнее прочитать в оригинальной статье автора на «Хабре», стал впечатляющим гибридным трибьютом двум культовым платформам прошлого.














