Демки с известными артефактами/глитчами/траблами и ещё о Eye Ache 2

Люди, а накидайте, плиз, в комменты ещё демки с известными артефактами/глитчами/глюками/траблами?

Пока что у меня единственная демка (не считая EyeAche2 и Kpacku с их правым столбцом), которая имеет сдвиг на бордюре и которая лечится сдвигом такта начала растра, это Confusion. Всё остальные работают на одних и тех же настройках без проблем. Включая OverRelaxed, Rage, AcrossTheEdge0, BreakSpace.

И, кстати, фух. Я таки увидел на видео с реала тот же глитч в EyeAche2, так что вопрос с правильностью моей эмуляции решен. Кому интересно, можете глянуть: youtu.be/M8pQ66J4FA8?t=412, лучше на скорости 0.25 на полном экране — видно, что в правом краю мерцают полоски на темных участках.

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

16 комментариев

avatar
Если делать опцию, то лучше по умолчанию ставить её на «точную» эмуляцию, а не на красивую. Чтобы «красивую» ставили те, кто знает, что делает.
Возможно ли, что у разработчиков EyeAche2 был чуть другой пентагон? Или они все в плане таймингов одинаковые?
avatar
Пока что 4 пентагона (Lion17, goodboy, JV-Soft, IL-DECAMERON) показали практически одинаковые результаты в тестах на тайминги. Разница только у теста на переключение экранов, и то, с машиной, которая другими тестами не проверялась. А так, конечно, возможно.
avatar
И да, я считаю, наоборот — точную пусть ставят те, кто знает, что делает (разработчики), а красивая — по умолчанию, для простых юзеров, желающих насладиться демками.
avatar
Извини, но идея фиксить эмуляторы под баги различных старых дем — это клиника.

По основной теме — вроде ничего другого в голову сейчас не приходит. Если вспомню — обязательно напишу.
avatar
А если я этого не сделаю, люди будут думать, что ZXMAK2 эмулирует Пентагон лучше, чем Спектрамин, потому что в нём в этих демках нет этих глитчей. А то, что на ZXMAK2 какие-то там тесты работают не так — кого это волнует?

На самом деле, все эмулеписатели этим занимаются, потому что никто не знает, как работает Пентагон, с точностью до тактов. Соответственно, все выстраивают тайминги эмуляции так, чтобы большинство демок шло красиво, а тесты на эмулях выдают кто во что горазд. Я, возможно, напишу более точную эмуляцию, но опять же — есть и у реальных Пентагонов расхождения, уже доказано тестом, значит, или надо делать подстроечные параметры в эмуле, или смириться, что часть демок слегка лажает.
avatar
Люди пишут демы под то, что смотрят пользователи. Если пользователи будут сидеть в эмуляторах, которые показывают пони, через какое-то время ты дождёшься дем написанных под пони.

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

Хорошо ли это было для пользователей? Наверное, хорошо; пользователи могут просто брать 1 эмулятор и смотреть в нём любую дему с сайта. Хорошо ли это для архива? Ну, вот тут есть разные точки зрения. Лично для меня такая деятельность — преступление.
avatar
Если это архив ААА, то это чужой монастырь, он может делать в нём всё, что считает нужным. Спектрум в ex-USSR это территория неформальных хаков, аутентичные копии скорее исключение, чем правило. К тому же вроде бы у него на сайте по несколько вариантов каждой демы, выбирай рабочую. Хорошо, конечно, что есть и альтернативные архивы.

А я пишу эмуль в первую очередь под непродвинутого ленивого юзера, у которого одно желание — чтобы запустить и всё работало, без всяких копаний в настройках. При этом, правда, одновременно и под перфекциониста, который хочет, чтобы всё работало так, как на реале. Приходится искать компромисс.
avatar
никто не знает, как работает Пентагон, с точностью до тактов
Схема в свободном доступе. Садись и рисуй диаграммки. Или напиши HDL модель по схеме и запусти бенч, который сам все нарисует. Если бы (и были случаи) мне понадобилось сделать точную эмуляцию чего-либо, я б так поступил.
Или ты думаешь, что эмуляторописателям необязательно разбираться в сигналах эмулируемой схемы? Вместо этого лучше пойти на консультацию к безмозглым обитателям гяф-а и думать, что в разных клонах Z80 пишет на стек с разной последовательностью адресов.
avatar
Я не шарю в схемотехнике, в диаграммках и в HDL. Я обитатель гяф-а, к-рый до сих пор думает, что, возможно, существует клон Z80, у которого другая логика выполнения PUSH, и не видит причин, почему нет. Есть клоны Z80 с отличающимся от Z80 в деталях поведением, это я точно знаю.

И да, я думаю, что эмуляторописателям необязательно разбираться в сигналах эмулируемого устройства, если есть его подробная программная модель. Мало того, я подозреваю, что большинство эмуляторописателей далеки от схемотехники. И что большинство деталей эмуляции выужено не из схем, а из документации и программных экспериментов. Особенно недокументированные фишки Z80 и ULA.
avatar
Refresh — довольно любящая «вылетать» после туннеля начального демка.
avatar
Спасибо за наводку. Конкретно этой проблемы в эмуле нет, но есть над чем поработать — с ускоренной загрузкой моментально пролетает начальный туннель.
avatar
Weiv, извини за оффтопик, но объясни пожалуйста, почему ты стёр пост с обсуждением бага в моей выравнивалке до такта? Я, в общем, понимаю, что отвеченный вопрос тебе лично больше не интересен, но вообще-то я тратил своё время написать нормальный ответ, который теперь пропал. Ты этим железно демотивировал меня хоть как-то комментировать твои посты в будущем.
avatar
Присоединюсь. Может ты и про другой пост(я про тему о последовательности действий команды PUSH HL). Ты, Лёш, «пригласил» меня прокомментировать пару моментов из Красок. Я обычно не писака здесь, но тогда решил ответить(в этом году впервые). Потратил минут 30 на ответ(пока пересмотрел дему, обдумал), опоздал на договорённую встречу, так как решил дописать, раз уж начал. А через часов 5-6 темы уже не обнаружил. И чего писал спрашивается.
avatar
Извини, я просто реально не ожидал, что такое произойдёт.
avatar
Да накатило чёт. Осень, все дела. В порядке борьбы с творческим кризисом и экзистенциальной тошнотой стиранием фрагментов личной истории. Ну что же, демотивировал так демотивировал.
avatar
Сходить что-ли, постирать свои нестираные посты…
в порядке борьбы с личной (и не только) историей :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.