Демки с известными артефактами/глитчами/траблами и ещё о Eye Ache 2
Люди, а накидайте, плиз, в комменты ещё демки с известными артефактами/глитчами/глюками/траблами?
Пока что у меня единственная демка (не считая EyeAche2 и Kpacku с их правым столбцом), которая имеет сдвиг на бордюре и которая лечится сдвигом такта начала растра, это Confusion. Всё остальные работают на одних и тех же настройках без проблем. Включая OverRelaxed, Rage, AcrossTheEdge0, BreakSpace.
И, кстати, фух. Я таки увидел на видео с реала тот же глитч в EyeAche2, так что вопрос с правильностью моей эмуляции решен. Кому интересно, можете глянуть: youtu.be/M8pQ66J4FA8?t=412, лучше на скорости 0.25 на полном экране — видно, что в правом краю мерцают полоски на темных участках.
К тому же я нашел, как это можно пофиксить в эмуле, не прибегая к обратной логике PUSH и сдвигу начала растра — достаточно убрать сверхточную эмуляцию видеоконтроллера Пентагона, и считать, что если до вывода следующей полоски растра после такта записи в память остался один такт, данные из видеопамяти для следующей полоски в этом такте уже не читаются. А то в этот такт видеоконтроллер успевает иногда обновить атрибут (или пиксели), и — привет, глитч. Конечно, для разработчиков лучше, чтобы было как на реале, а для юзеров — чтобы было красиво, так что можно сделать и опцией.
Пока что у меня единственная демка (не считая EyeAche2 и Kpacku с их правым столбцом), которая имеет сдвиг на бордюре и которая лечится сдвигом такта начала растра, это Confusion. Всё остальные работают на одних и тех же настройках без проблем. Включая OverRelaxed, Rage, AcrossTheEdge0, BreakSpace.
И, кстати, фух. Я таки увидел на видео с реала тот же глитч в EyeAche2, так что вопрос с правильностью моей эмуляции решен. Кому интересно, можете глянуть: youtu.be/M8pQ66J4FA8?t=412, лучше на скорости 0.25 на полном экране — видно, что в правом краю мерцают полоски на темных участках.
К тому же я нашел, как это можно пофиксить в эмуле, не прибегая к обратной логике PUSH и сдвигу начала растра — достаточно убрать сверхточную эмуляцию видеоконтроллера Пентагона, и считать, что если до вывода следующей полоски растра после такта записи в память остался один такт, данные из видеопамяти для следующей полоски в этом такте уже не читаются. А то в этот такт видеоконтроллер успевает иногда обновить атрибут (или пиксели), и — привет, глитч. Конечно, для разработчиков лучше, чтобы было как на реале, а для юзеров — чтобы было красиво, так что можно сделать и опцией.
16 комментариев
Возможно ли, что у разработчиков EyeAche2 был чуть другой пентагон? Или они все в плане таймингов одинаковые?
По основной теме — вроде ничего другого в голову сейчас не приходит. Если вспомню — обязательно напишу.
На самом деле, все эмулеписатели этим занимаются, потому что никто не знает, как работает Пентагон, с точностью до тактов. Соответственно, все выстраивают тайминги эмуляции так, чтобы большинство демок шло красиво, а тесты на эмулях выдают кто во что горазд. Я, возможно, напишу более точную эмуляцию, но опять же — есть и у реальных Пентагонов расхождения, уже доказано тестом, значит, или надо делать подстроечные параметры в эмуле, или смириться, что часть демок слегка лажает.
Пример из жизни. ААА долгое время распространял на своём сайте старую версию эмулятора Unreal, доказывая что это единственный правильный эмулятор. Дело дошло до того, что демы, которые не шли у ААА на его эмуляторе, помощники ААА фиксили под сломанный эмулятор, так что загружая демо с сайта ААА ты не можешь даже быть уверен, аутентичная ли это копия, написанное под конкретное железо, или неформальный хак. Никакой документации этого процесса не существует.
Хорошо ли это было для пользователей? Наверное, хорошо; пользователи могут просто брать 1 эмулятор и смотреть в нём любую дему с сайта. Хорошо ли это для архива? Ну, вот тут есть разные точки зрения. Лично для меня такая деятельность — преступление.
А я пишу эмуль в первую очередь под непродвинутого ленивого юзера, у которого одно желание — чтобы запустить и всё работало, без всяких копаний в настройках. При этом, правда, одновременно и под перфекциониста, который хочет, чтобы всё работало так, как на реале. Приходится искать компромисс.
Или ты думаешь, что эмуляторописателям необязательно разбираться в сигналах эмулируемой схемы? Вместо этого лучше пойти на консультацию к безмозглым обитателям гяф-а и думать, что в разных клонах Z80 пишет на стек с разной последовательностью адресов.
И да, я думаю, что эмуляторописателям необязательно разбираться в сигналах эмулируемого устройства, если есть его подробная программная модель. Мало того, я подозреваю, что большинство эмуляторописателей далеки от схемотехники. И что большинство деталей эмуляции выужено не из схем, а из документации и программных экспериментов. Особенно недокументированные фишки Z80 и ULA.
в порядке борьбы с личной (и не только) историей :)