Как стать автором
Обновить

Комментарии 35

Никогда не думал, что всё так сложно и что до сих пор даже SNES полностью не сэмулирован. Куда уж там до PS2/PS3/PS4 :)

О cycle-exact эмуляции последних никто даже и не мечтает.
НЛО прилетело и опубликовало эту надпись здесь
PS3 первого поколения пытался в аппаратную совместимость с предыдущими, так что 3-в-1 задачка получится.
НЛО прилетело и опубликовало эту надпись здесь
Освежил память. PS1 эмулировалась софтом, PS2 — отдельным чипом. Совместимость была весьма достойной судя по Википедии
НЛО прилетело и опубликовало эту надпись здесь
А нет никаких шансов, что Nintendo поделится тех. документацией на эти чипы? Всё-таки 30 лет прошло от момента разработки и почти 20 лет от прекращения поддержки. Патенты тоже скорее всего позаканчивались, вряд ли там осталась какая-то значимая интеллектуальная собственность.
НЛО прилетело и опубликовало эту надпись здесь
Насколько я понимаю, эмуляция в SNES Classic куда менее продвинутая, чем в приведенном в статье эмуляторе. Т.е. покупают её вовсе не за качество эмуляции, т.е. нелегалы ей совсем не конкуренты. Отдав документацию Nintendo мог бы получить взамен качественный эмулятор и сам же использовать его в будущих продуктах (лицензия же позволяет).
НЛО прилетело и опубликовало эту надпись здесь
Так потому эмуляция в SNES Classic и менее продвинутая, потому что продвинутой для запуска ограниченного набора игр не требуется, и в случае проблем всегда можно подкрутить саму игру. А продвинутая эмуляция требует производительности, которая стоит денег, тогда как для обеспечения прибылей в подобных устройствах ставят минимально достаточные по производительности дешёвые процессоры (или, в случае с китайской самодеятельностью, откровенно недостаточные).
Ага, понятно. Тогда действительно — только reverse engineering
Вот я читал этот пост и всё время не покидала мысль, что люди тратят на это много времени и сил, а где-то есть документация на это. Причём самой Нинтендо это уже не очень актуально. Но японцы очень странно относятся к фанатам своих консолей и игр, поэтому они никогда на это не пойдут.
Часть официальной документации на разные приставки давно утекла и ходит по рукам, в том числе и рукам авторов эмуляторов. В частности, по SNES ходят две книги, одна по базовому устройству приставки (250 страниц), другая по чипам SA-1, Super FX, DSP1 (450 страниц). Они все по программной части, и качество информации оставляет желать лучшего, местами просто невозможно понять, о чём идёт речь, местами фактические ошибки. Вероятно накладывается написание документации по предварительным планам и другими людьми, потом перевод с японского на английский в каком-нибудь бюро, где не было специалистов с практическим опытом, понимающих, о чём речь (удивительно, но подавляющее большинство японских разработчиков тех лет не говорит на английском до сих пор). В общем, эти книги полезны для разработчиков игр (как-то же разрабатывали, имея только этот источник информации), но в них нет ответов на важнейшие тонкости, которые требуется знать при написании эмуляторов. Скорее всего документации, где они описаны, просто не существовало, и единственная действительно близкая к реальности документатация — фотошаблоны чипов. Которые можно получить и травлением чипа, и потом их всё равно надо реверсить.

Построение отладочной платы, которая симметрично гоняет тесты в режиме эмуляции и одновременно подмены регистров чипа, и сравнивает выходы двух независимых систем, хотел предложить где-то на середине статьи. Не знаю, насколько тяжело будет построить такую плату, но субъективно кажется, что за 2-3 дня работы среднего инженера можно получить первый прототип. Распиновка чипа известна, а анализатор логики на базе какого-нибудь жирного ARM с большим количеством GPIO будет сделать несложно. Тем более что большинство сигналов — цифровые, много АЦП там не понадобится.

Мне думается, что проблема глубже. В те времена писатели игр использовали всякие хаки, чтобы получить эффект, который не был изначально заложен в чип. Типа как на CGA мониторе получали 1024 цветов, за счет смешивания стандартных путем быстрого чередования с частотой кадровой развертки. habr.com/ru/post/256409
Так вот, такие «хаки» на эмуляторах не воспроизводятся…

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

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

Да, согласен. Однако, я привел это как пример. В NES используется такое событие как «first tile hit», это событие возникает во время прорисовки изображения и при отрисовке спрайта номер один. Как прерывание. Многие игры по такому событию меняют всю конфигурацию экрана, и тем самым создают, например, эффект бордюра. Так сделано в марио.
Я это все к тому, что очень сложно добиться идентичности железного PPU и программного эмулятора, об этом и говориться в этой статье.

Вот тут много про такие эффекты: habr.com/ru/post/354774
НЛО прилетело и опубликовало эту надпись здесь

Погодите, не понял...


Но ситуация по-прежнему шаткая: если кто-нибудь начнёт создавать homebrew-игры с использованием точного тайминга тактов и растовых эффектов, то все наши современные эмуляторы с этим не справятся. В том числе программные и аппаратные реализации на основе FPGA.

Т.е. есть кто-то, кто знает точные тайминги? А если у него спросить?

Возможно, речь о ROM-хаках.
Можно не имея понимания тонкостей устройства железа, просто методом тыка, сделать программу, которая будет эксплуатировать некий пограничный случай (о котором, возможно, даже сами разработчики железа не задумывались) и выдавать на железе некий результат, который недостаточно точные эмуляторы не смогут воспроизвести. И это не какая-то абстрактная ситуация, она очень практическая. Собственно, это и есть главная причина, почему точность эмуляторов важна.

А в snes mini также присутствуют описанные ошибки эмуляции? Если всё там идеально то не проще подсмотреть у эмулятора snes-mini?

Конечно же там всё далеко не идеально, примерно на уровне эмуляторов 15-летней давности. Там ограниченный набор игр, и главная задача продукта — чтобы они игрались хоть как-нибудь. Даже если половина эффектов в играх отвалится, это не будет существенной проблемой в таком контексте.
Такое явление имело место быть в некоторый период времени, когда любители делали переводы игр с японского языка на английский, но отлаживались в эмуляторах, на тот момент очень далёких от совершенства. Подобные переводы требовали модификации кода игр, а занимались этим далеко не самые продвинутые в устройстве приставок люди, и нередко случалось так, что изменённый ими код работал в эмуляторах, но не на железе.
Вообще было бы интересно сделать железный клон PPU дэнди. Тем более, что достать 6502 не проблема.
Не совсем понятно как такой PPU должен работать. И на чем его делать? На CPLD? Или брать несколько АТМЕГА? Одна для спрайтов, одна для фона… И одна как система управления и синхронизации?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
В первых клонах Рикоха вроде бы не было. А на базе чего делали первые клоны — думаю, на базе снятых к тому моменту пиратами других технически близких систем на процессоре 6502, в частности, уже в начале восьмидесятых пираты клонировали Apple II, и клоны Sega MG 1000 и MSX вроде бы тоже делали, ну или чего то похожего. Ранние советские «Агаты» вроде бы и сам CPU 6502 эмулировали, поскольку купить его легально тогда не могли.

Кстати, вот встретилась статья про клон Apple II с материкового Китая

finapple.hho.fi/finapple/index.php/2017/06/09/cec-i-china-education-computer-part-1
Клоны SNES таки были, но очень редкие. Также были клоны оригинального Game Boy. Чипы там без официальных обозначений. Возможно клонированные, но может быть просто пускали налево часть производимых для официальных консолей чипов.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории