+41.51
Рейтинг
120.29
Сила
  • avatar Weiv
  • -3
Да накатило чёт. Осень, все дела. В порядке борьбы с творческим кризисом и экзистенциальной тошнотой стиранием фрагментов личной истории. Ну что же, демотивировал так демотивировал.
  • avatar Weiv
  • 0
Спасибо за наводку. Конкретно этой проблемы в эмуле нет, но есть над чем поработать — с ускоренной загрузкой моментально пролетает начальный туннель.
  • avatar Weiv
  • 0
Т.е. иногда будет лажа — в виде белых полосок, а не точек.
  • avatar Weiv
  • 0
Да, в моменты, когда переключение экрана будет выпадать на 3й такт вывода байта, следующий байт будет выводиться белым.
  • avatar Weiv
  • 1
Так что щелкать, по идее, можно, но желательно перед этим как-то вручную подстроиться на такт начала вывода растра. Т.е. попросить пользователя совместить полоску на экране и бордюре, там, или что-то типа того.
  • avatar Weiv
  • 1
Ну как. У нас есть 4 такта, в течении которых видеоконтроллер выводит текущий байт. Если мы переключим экран на такте перед началом этого 4хтактного цикла вывода нового байта, или на первом-втором такте этого вывода, он успеет подчитать данные из нового экрана за оставшиеся 4-3-2 такта. Т.е. экран нельзя переключать только на 3м такте вывода, на котором будет смешана инфа из двух экранов, причем смешана неоднозначно — то ли пиксели из 1-го, атрибут из 2-го, то ли наоборот. Так что по идее первый такт машцикла OUT переключения экранов надо завязывать на последний такт вывода предыдущего байта, это даст нам запас в 2 такта (от более позднего начала INT и/или более позднего машцикла переключения экрана). Или на первый такт вывода нового байта — тогда у нас будет запас в один такт в обе стороны. Если бы точно знать, что более раннего INT-а от эталонного быть не может, предпочтительнее 1й вариант.
  • avatar Weiv
  • 1
Протестирована машина с началом INTa на один такт позже от предыдущих машин — соответственно, количество тактов от начала подтверждения прерывания до вывода растра на 1 такт меньше, и результаты в тестах на 1 такт раньше. Причем, на этой машине переключение экранов происходит после 2го такта машцикла вывода в порт (а изменение цвета бордюра — по-прежнему после 1-го).
  • avatar Weiv
  • 1
Инфа по строкам взята из этого сообщения Lion17, а он пишет, что получил её, анализируя схему. В остальном инфа взята из открытых источников и анализа поведения тестов на реалах и эмуляторах.

Насчёт Across the Edge — да, я тоже заметил, что в одной из частей явно расчет на верхний бордюр с большим количеством строк, чем показывает даже большинство эмуляторов. Похоже, только z80stealth выводит 64 строки верхнего бордюра. Эмулятор самого Lion17, ZXDevStudio, первые 16 строк верхнего бордюра помечает как невидимые.
  • avatar Weiv
  • 2
Что, реально феерическую? Ну так поделись, где, по-твоему, лажа, не томи.
  • avatar Weiv
  • 0
Если это архив ААА, то это чужой монастырь, он может делать в нём всё, что считает нужным. Спектрум в ex-USSR это территория неформальных хаков, аутентичные копии скорее исключение, чем правило. К тому же вроде бы у него на сайте по несколько вариантов каждой демы, выбирай рабочую. Хорошо, конечно, что есть и альтернативные архивы.

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

И да, я думаю, что эмуляторописателям необязательно разбираться в сигналах эмулируемого устройства, если есть его подробная программная модель. Мало того, я подозреваю, что большинство эмуляторописателей далеки от схемотехники. И что большинство деталей эмуляции выужено не из схем, а из документации и программных экспериментов. Особенно недокументированные фишки Z80 и ULA.
  • avatar Weiv
  • 0
А если я этого не сделаю, люди будут думать, что ZXMAK2 эмулирует Пентагон лучше, чем Спектрамин, потому что в нём в этих демках нет этих глитчей. А то, что на ZXMAK2 какие-то там тесты работают не так — кого это волнует?

На самом деле, все эмулеписатели этим занимаются, потому что никто не знает, как работает Пентагон, с точностью до тактов. Соответственно, все выстраивают тайминги эмуляции так, чтобы большинство демок шло красиво, а тесты на эмулях выдают кто во что горазд. Я, возможно, напишу более точную эмуляцию, но опять же — есть и у реальных Пентагонов расхождения, уже доказано тестом, значит, или надо делать подстроечные параметры в эмуле, или смириться, что часть демок слегка лажает.
  • avatar Weiv
  • 0
И да, я считаю, наоборот — точную пусть ставят те, кто знает, что делает (разработчики), а красивая — по умолчанию, для простых юзеров, желающих насладиться демками.
  • avatar Weiv
  • 1
Пока что 4 пентагона (Lion17, goodboy, JV-Soft, IL-DECAMERON) показали практически одинаковые результаты в тестах на тайминги. Разница только у теста на переключение экранов, и то, с машиной, которая другими тестами не проверялась. А так, конечно, возможно.
  • avatar Weiv
  • 1
На уровне «знаю, что из себя представляет, но никогда не пользовался, и не знаю, как.» На самом деле у меня собственная «vcs», из подручных материалов, на локальных дисках. Поэтому особой потребности во внешней нет. Если попадется внятный мануал по какой-нибудь локальной vcs, может, перейду на неё.
  • avatar Weiv
  • 0
Знал, но не пользовался.
  • avatar Weiv
  • 0
Ну пока меня всё устраивает) Но спасибо, подумаю. Я вообще-то ненастоящий сварщик.
  • avatar Weiv
  • 1
Я веду подробный протокол изменений) Плюс регулярно делаю резервные копии на несколько носителей)
  • avatar Weiv
  • 0
По старинке) А в чем подвох?
  • avatar Weiv
  • 5
Никак не помогло десяткам, но некоторым помогло. Там же и не идет речь обо _всех_ эмуляторах с открытым исходным кодом.