LINUX.ORG.RU
ФорумTalks

Эмуляторы ретро-систем на МК - кто пробовал, какие ощущения?

 , ,


0

1

Собственно, сабж. На алике сейчас можно без проблем купить поздние Z80, 6502, можно даже купить 8088! Однако собирать новые ЭВМ на классических процессорах в DIP-корпусах берется не каждый, особенно если делать всё по феншую (ручками разводить шину на регистрах, делать «чипсет» на ПЛИСине и т.п).

Последние лет 10 на рынке есть куча доступных и очень мощных МК - и на ARM, и на Xtensa, и на самых разных архитектурах и на них очень часто легко эмулируется не только отдельный процессор, но и целая система с своими нюансами (NES, SNES, GBA).

Вопрос: считаете ли вы такую форму ретро-компьютинга трушной, или это позерство? Всё же «эмуляторная» (симуляторная?) система получается очень компактной, можно легко добавлять новые устройства на шину с помощью MMIO, плюс «допиливать» старые ISA новыми крутыми инструкциями. Что думаете?

Просто подход с ПЛИСиной считается относительно трушным, потому что это, внезапно, именно ПЛИСина, но когда одна архитектура эмулируется поверх уже готового проца…



Последнее исправление: fanat_baldezha (всего исправлений: 1)

Тру - это запилить z80 на техпроцессе 5нм, чтобы от одной батарейки три года работало

DumLemming ★★
()

Вопрос: считаете ли вы такую форму ретро-компьютинга трушной, или это позерство?

Позёрство-не позёрство, но это не ретро компьютинг. Эмулятор - для дороги, для поездок. Дома должно быть железо.

lenin386 ★★★★
()

Эмуляторы… какие ощущения?

Отличие в ощущениях: погладить живого котика или эмулированного :)

quickquest ★★★★★
()
Ответ на: комментарий от lenin386

Да, но. Спектрум может быть сделан на 5нм, чтобы работать от батарейки 3 года. Придумай к нему обвязку, чтобы загружать игрульку с microSD и выводить на oled, и так, чтобы феноменальный срок службы от батарейки сохранился

DumLemming ★★
()
Ответ на: комментарий от lenin386

Ну, вообще, если выводить чёрный экран с одним синим пикселем - оно таки может потреблять нифига, вопрос в обвязке, на такие случаи заточенной

DumLemming ★★
()
Ответ на: комментарий от DumLemming

А если спектрум сделать такой, что будет выводить один пиксел, оно таки тоже может потреблять нифига.

lenin386 ★★★★
()

плюс «допиливать» старые ISA новыми крутыми инструкциями

Это вообще не ретрокомпмпьютинг. Это простите как «у нас спектрум только Z80 мы заменили на Cortex-M55»

no-dashi-v2 ★★★
()
Ответ на: комментарий от no-dashi-v2

Речь об эмуляции на уже готовых ядрах, или о самой концепции добавления инструкций? Так то доп. инструкции могут быть очень полезными, например подгрузить в раму че нить с памяти основного устройства

fanat_baldezha
() автор топика
Ответ на: комментарий от fanat_baldezha

А еще полезнее будет i9 14900k. Только причём тут ретрокомпьютинг — не понятно.

lenin386 ★★★★
()

на самых разных архитектурах и на них очень часто легко эмулируется не только отдельный процессор, но и целая система с своими нюансами (NES, SNES, GBA).

даже если забыть про все что ты перечислил после NES. по факту даже NES эмулируется с трудом и очень условно.

где-то звук кривой, где-то совместимость, где-то еще какие-то проблемы на самых обычных релизах. кстати, назови хоть один нормальный эмулятор NES? так чисто чтобы проверить насколько твоя шиза далека от реальности.

ну и вообще неясно что ты вообще понимаешь под NES. японские оригиналы не считаются?

а про SNES, напомнишь какие там системные требования у самого «точного эмулятора»? по-прежнему легко?

Просто подход с ПЛИСиной считается относительно трушным, потому что это, внезапно, именно ПЛИСина, но когда одна архитектура эмулируется поверх уже готового проца…

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

видишь ли в чем дело. если ПО можно сдампить и отреверсить и похакать, и потом невозбранно продавать на алике «клон» продукта по цене самих запчастей, то с FPGA такое не прокатывает. его применяют исключительно для двух целей (по отдельности или обе сразу): 1) защита коммерции

2) потребность в HDMI например (и прочих быстрых интерфейсах, которые ногодрыгом на простом MCU не выйдет сделать)

плюс «допиливать» старые ISA новыми крутыми инструкциями. Что думаете?

этим никто не занимается. ЦА которая хоть как-то действительно программирует под этими ретро-системами заинтересована исключительно в сохранении совместимости с оригинальным железом. все эти присёры сбоку, никому не нужны и никем не будут использоваться.

Однако собирать новые ЭВМ на классических процессорах в DIP-корпусах берется не каждый, особенно если делать всё по феншую (ручками разводить шину на регистрах, делать «чипсет» на ПЛИСине и т.п).

ты хочешь сказать будто бы это что-то героически сложное? втыкнуть микросхемы в breadboard и потом аккуратно соединять их перемычками? можно даже паяльник не включать. так что именно тебя останавливает?

Вопрос: считаете ли вы такую форму ретро-компьютинга трушной, или это позерство?

мне известен только 1 пример коммерчески успешного продукта, где эмулируется ретро-система: стековые калькуляторы HP из 80х, у которых нету кнопки «=», точнее современных их реинкарнации. вот они уже в 4-ый или 5-ый раз перевыпускают за последние 40+ лет их существования. это позерство продается за «ощутимые» деньги.

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

если ты хочешь чего-то сотворить, то вперед действуй и сотвори, общественного одобрения или порицания для этого не требуется. никто не будет гнобить из-за того что «не тру»

n_play
()

Градации от самой нетрушной до самой трушной:

  • Эмуляция на десктопе
  • Эмуляция на микроконтроллере
  • Полная реализация на плисе
  • Частичная реализация на плисе + ретро-CPU
  • Без ПЛИС с использованием микса современных и ретро-микросхем
  • Только ретро-микросхемы
  • ВМ80 на транзисторах
  • ВМ80 на ретро-транзисторах
  • ВМ80 на лампах :)
Puzan ★★★★★
()

Пробовал мурмулятор, работает на удивление хорошо, на базе raspberi pi pico (микроконтроллер RP2040), предназначен для эмуляции спектрума, но может эмулировать даже IBM PC XT или NES(денди). Хотя некоторые прошивки немного глючные, например БК0010/БК0011. Не понятен процесс разработки, вроде исходники есть на гитхабе, но что-то с ними не так, ну или мне так показалось и везде ссылки на телеграм. https://murmulator.ru/

Rupricht ★★
()

Практического смысла около нуля, ценность чисто психологическая. Эмуляторы всё равно удобнее и практичнее.

Некоторое время назад наконец-то выпустили клон Amiga 1200 на ПЛИС. Разогнанный в ~10 раз 68060, обновлённая графика, USB/HDMI, полная совместимость со старым софтом. Прикольно что-ли, погонять старые игры на вполне себе железке, не покупая ради этого разваливающиеся амижные платы 30летней давности по цене крыла самолёта. Для тонких ценителей.

yu-boot ★★★★★
()
Ответ на: комментарий от n_play

где-то звук кривой, где-то совместимость, где-то еще какие-то проблемы на самых обычных релизах. кстати, назови хоть один нормальный эмулятор NES?

Чем тебе не угодили Nestopia или Mesen?

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

Чем тебе не угодили Nestopia или Mesen?

внезапно, ни один из них не для микроконтроллеров.

но вообще-то я агрился на непродуманный в деталях высер ОП-а.

n_play
()
Ответ на: комментарий от n_play

внезапно, ни один из них не для микроконтроллеров.

Это естественно, ведь для того чтоб написать для микроконтроллеров это надо под конкретные проектировать с аппаратной синхронизацией между как минимум тремя микроконтроллерами (cpu + apu + ppu). Не вижу смысла тратить на такое время, а ведь это еще железку для этого надо собрать. В таком случае проще на FPGA делать(в этом случае всякие девборды для новичков выбирают), просто из-за того что количество пользователей FPGA очень маленькое и количество проектов низкое.

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

еще железку для этого надо собрать

Есть уже готовые, например, Waveshare RP2040-PiZero - есть HDMI со звуком, по USB подключается клавиатура и геймпад, в эмуляторе ZX-Spectrum работает игра Ringo, требовательная к точности эмуляции.

No ★★
()
Ответ на: комментарий от No

Есть уже готовые, например, Waveshare RP2040-PiZero - есть HDMI со звуком, по USB подключается клавиатура и геймпад, в эмуляторе ZX-Spectrum работает игра Ringo, требовательная к точности эмуляции.

Вижу что там вроде только двухядерный ARM Cortex M0+ 133 MHz, что не особо для эмуляции NES, вот еслиб их было четыре одноядерных с аппаратной синхронизацией между ними тогда другое дело.

Я не знаю про ZX-Spectrum но про NES немного читал. Представим что надо сделать самую точную эмуляцию NES, смотрим спеки и видим CPU 1.79 MHz или 1.66 MHz, вроде низкая частота для эмуляции. Но дальше видим что PPU работает на 5.36 MHz и выясняем что все части NES тактируются от одного тактового генератора 21.47 MHz или 26.6 MHz, что уже немного расстраивает так как все части NES работают в парралель и значит надо эмулировать на уровне тактового сигнала. Далее выясняем что в схемотехнике есть понятие «начало фронта» и «конец фронта» такта и в NES некоторые части срабатывают от одного другие от другого, а значит надо эмулировать полу-такты, то-есть 42.94 MHz или 53.2 MHz.

И так посмотрим что мы сможем сделать если захотим написать однопоточный эмулятор для 3 GHz процессора.

На каждый полутакт эмуляции у нас есть 3000 MHz / 53.2 MHz = 56 тактов. За эти 56 тактов надо проверить необходимость изменить состояние CPU, APU, PPU, шины данных, маппера и может что-то еще. Если учесть что сишный вызов занимает 15-30 тактов (http://ithare.com/infographics-operation-costs-in-cpu-clock-cycles/) выглядит все это очень грусно, надо либо чтоб компилятор все соптимизировал в jmp либо использовать goto. Ясно что большую часть полутактов ничего меняться не будет и тут можно сэкономить, но уже сразу ясно что «в лоб» быстрый эмулятор не написать.

Теперь посмотрим что будет если «в лоб» написать многопоточный эмулятор, для 3 GHz процессора.

Мы выяснили что у нас есть 56 тактов на эмуляцию полутакта NES, в x86 нет ничего специального для быстрой синхронизации ядер а значит будем использовать атомики, представим что мы жутко заоптимизировали атомики и вложились в 15-30 тактов на синхронизацию между ядрами процессора. Эмулятор «в лоб» должен работать так: главное ядро выставляет разрешение на следующий такт, через 15-30 тактов это получают остальные ядра эмулирующие разные части NES и после работы каждый выставляет значение указывающее что завершили работу и через 15-30 тактов это сообщение получило главное ядро и готово повторить цикл эмуляции. Как видим на каждый полутакт синхронизация съедает 30-60 тактов, что значит 30-60 * 53.2 MHz = 1.59 GHz - 3.19 Ghz тратятся только на синхронизацию. Выглядит просто ужасно еще хуже чем однопоточная реализация.

Так что самым перспективным выглядит эмуляция через FPGA. При чем и Intel и AMD купили два самых крупных производителя FGPA: Altera и Xilinx соответственно. После этого я и как я думаю многие ждали появление в процессоре блока FPGA по типу как пихают интегрированную графику. Вроде даже выпустили Xeon со встроенным FPGA, но что-то в новостях тишина по этому поводу.

Также интересно выглядит FPGA карта вставляемая в PCIe слот, но большинство таких карт заточенно под Ethernet и стоит тысячи доллаторв, тогда как обычную девборду с HDMI, USB и т.д. перефирией стоит в районе 150-300 долларов. Что уже чуть лучше, но хотелось бы именно карту в PCIe, я бы даже поучаствовал в разработке эмуляторов в таком проекте.

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

Вижу что там вроде только двухядерный ARM Cortex M0+ 133 MHz

RP2040 разгоняется в 2 раза, кроме 2-х ARM-ядер есть 8 PIO - программируемых конечных автоматов, которые могут, в некоторых случаях, заменять программируемые логические схемы (на 3-х PIO делается bit bang HDMI протокола), в каждом ARM-ядре есть 2 т. н. интерполятора, позволяющих делать некоторые простые действия параллельно с основной программой, ОЗУ разделено на несколько регионов, к которым возможен одновременный доступ, есть аппаратные FIFO и spinlock-и.

No ★★
()
Ответ на: комментарий от No

Видимо мало кто хочет пытаться впихнуть эмулятор в такие слабые микроконтроллеры.

Вот к примеру можешь посмотреть список FPGA ядер для эмуляции ретро компьютеров и консолей: https://github.com/MiSTer-devel/Wiki_MiSTer/wiki/Cores

Это стоит DE10-Nano ~225$, SDRAM board ~100$ плюс доставка, зато никаких просадок стабильная работа того что реализовано. Как видно по количеству реализованных FPGA ядер и практически отсутсвие онных для микроконтроллеров это гораздо перспективней чем программная эмуляция.

V1KT0P ★★
()

Если надо, то почему нет? Схем тысячи, гору всего можно собрать руками даже без особых навыков изготовления плат. Ничего удивительного, что их начали штамповать под продажу на алике.

Dispetcher14 ★★★★★
()
Ответ на: комментарий от Puzan

до самой трушной

ВМ80 на лампах :)

Струйная логика негодует :)

hobbit ★★★★★
()
Ответ на: комментарий от V1KT0P

Это стоит DE10-Nano ~225$, SDRAM board ~100$ плюс доставка, зато никаких просадок стабильная работа того что реализовано.

т.е. широкая публика не может протестировать эти поделия, в отличие от эмуляторов.

на сколько там страниц тред был про mesen на nesdev-e, напомнить или сам найдешь? притом все было по делу, указывали на косяки. впрочем, для любителей пруфов

Как видно по количеству реализованных FPGA ядер и практически отсутсвие онных для микроконтроллеров это гораздо перспективней чем программная эмуляция.

https://github.com/MiSTer-devel/NES_MiSTer

чуть менее половины мапперов, да и вообще качество реализации под вопросом. потому что никто в это не тыкал палочкой. ведь если продукцией вообще никто не пользуется, то можно считать что оно идеальное.

просто к тому, что мало сделать эмулятор (неважно FPGA, или на пекарню). кто его тестировать будет на реальных задачах? автор mesen-а годами косяки исправлял, хотя по «тестам все ок было», лол. а сколько невылеченных косяков там осталось, из-за того что автор забил и переключился с nes/fc на другие платформы.

поэтому и спрашивал про качественный эмулятор.

ОП-у который из FPGA видел только саму аббревиатуру на экране монитора, конечно же все очень просто. скачал, прошил, закинулся дампами ромов. из готовых кубиков собрал в 3 клика next->next->done потому что некому потыкать носом в говно. а кто-то десяток лет выгребает проблемы из эмулятора.

возможно NES плохой пример, из-за большого разнообразия. может быть с другими системами все сильно проще.

хотя «самый точный» эмулятор SNES/SFC, там автор 2 десятка лет его пилил (а потом умер, что там происходит и чем закончилось не слежу). не так уж и просто?

n_play
()
Ответ на: комментарий от V1KT0P

про mesen особенно проорался с захода автора в тред: в первом сообщении прямо говорится что «мой эмуль больше всех тестов проходит, самая точная эмуляция, ололо, пек-пек».

а ему потом ведра говна вылили. на десятки страниц про какие-то нелепые косяки.

хочу тоже самое про FPGA. косяков в них может быть не меньше, чем в «самом точном» эмуляторе, проходящему больше всех синтетических тестов.

n_play
()
Ответ на: комментарий от n_play

т.е. широкая публика не может протестировать эти поделия, в отличие от эмуляторов.

Широкой публики достаточно скачать RetroArch и не разбираться что там и как эмулируется. Те же кто хочет точной эмуляции или отдельного небольшого устройства для игры я считаю нормальный выбор.

Одна из проблем хоть на том-же nesdev wiki пытаются собрать все нюансы работы NES, но информация так и размазана по форумам/интернету. И каждый разработчик эмулятора обязательно наступит на все грабли на которые наступали другие разрабы эмуляторов. Была бы монументальная документация с нормальными тестами и описанием а не разрозненная информация, то и появлялись бы сразу более точные и быстрые эмуляторы, а так каждый в итоге пробегается по всем граблям теряя время и запал.

на сколько там страниц тред был про mesen на nesdev-e, напомнить или сам найдешь? притом все было по делу, указывали на косяки. впрочем, для любителей пруфов

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

Еслиб я сейчас разрабатывал эмулятор то первым делом накачал бы реплеев с TASVideos и для каждого выполнял бы покадровое сравнение с одним из эталонных эмуляторов. Так по крайней мере очень быстро в короткие сроки можно собрать максимум граблей и хоть как-то понять нюансы архитектуры NES.

чуть менее половины мапперов, да и вообще качество реализации под вопросом. потому что никто в это не тыкал палочкой. ведь если продукцией вообще никто не пользуется, то можно считать что оно идеальное.

Если сообщество есть то кто-то да пользуется. Может не все и не сразу заработает, зато в отличие от программной эмуляции где всегда начинают код писать с нуля без оглядки на существующие решения, в FPGA можно просто переносить блоки дополняя и меняя их.

просто к тому, что мало сделать эмулятор (неважно FPGA, или на пекарню). кто его тестировать будет на реальных задачах?

Поэтому нужен набор эталонных реплеев чтоб можно было запустить их и сравнить с какой-то эталонной программной эмуляцией. Так как это тесты то не нужен быстрый эмулятор, нужен только точный пусть и очень тормозной. Главное чтоб сравнивая можно было выявить регрессию и исправить её.

поэтому и спрашивал про качественный эмулятор.

Бери самый популярный эмулятор. Может не все игры 100% эмулируются но подавляющее большинство игр, особенно популярных.

Вот к примеру для NES можно взять Nestopia, его 20 лет писали, он достаточно популярный чтоб за эти годы там исправили подавляющее количество проблем.

ОП-у который из FPGA видел только саму аббревиатуру на экране монитора, конечно же все очень просто. скачал, прошил, закинулся дампами ромов. из готовых кубиков собрал в 3 клика next->next->done потому что некому потыкать носом в говно. а кто-то десяток лет выгребает проблемы из эмулятора.

FGPA хорош тем что там действительно можно легко реализовать то что с программной эмуляции будет требовать огромных мощностей либо хаков чтоб это работало. Для того чтоб запустить на девбордах достаточно знать как залить образ на MicroSD и переключить джампер на плате. Вот с разработкой уже сложней, все огорожено, есть только одна программа для разработки. Но это терпимо.

хочу тоже самое про FPGA. косяков в них может быть не меньше, чем в «самом точном» эмуляторе, проходящему больше всех синтетических тестов.

При наличии спеков реализовать на FPGA проще так как не нужно думать за производительность если хватает тактов. Тут если угадал как оно в оригинале работало то будет работать всегда. В программных эмуляторах сплош и рядом при попытке исправить в одном месте ломается в другом что постоянно видно по сообщениям разработчиков, так как пытаются не только в точную эмуляцию но чтоб это еще в реалтайме работало.

V1KT0P ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.