Так что щелкать, по идее, можно, но желательно перед этим как-то вручную подстроиться на такт начала вывода растра. Т.е. попросить пользователя совместить полоску на экране и бордюре, там, или что-то типа того.
Ну как. У нас есть 4 такта, в течении которых видеоконтроллер выводит текущий байт. Если мы переключим экран на такте перед началом этого 4хтактного цикла вывода нового байта, или на первом-втором такте этого вывода, он успеет подчитать данные из нового экрана за оставшиеся 4-3-2 такта. Т.е. экран нельзя переключать только на 3м такте вывода, на котором будет смешана инфа из двух экранов, причем смешана неоднозначно — то ли пиксели из 1-го, атрибут из 2-го, то ли наоборот. Так что по идее первый такт машцикла OUT переключения экранов надо завязывать на последний такт вывода предыдущего байта, это даст нам запас в 2 такта (от более позднего начала INT и/или более позднего машцикла переключения экрана). Или на первый такт вывода нового байта — тогда у нас будет запас в один такт в обе стороны. Если бы точно знать, что более раннего INT-а от эталонного быть не может, предпочтительнее 1й вариант.
Протестирована машина с началом INTa на один такт позже от предыдущих машин — соответственно, количество тактов от начала подтверждения прерывания до вывода растра на 1 такт меньше, и результаты в тестах на 1 такт раньше. Причем, на этой машине переключение экранов происходит после 2го такта машцикла вывода в порт (а изменение цвета бордюра — по-прежнему после 1-го).
Инфа по строкам взята из этого сообщения Lion17, а он пишет, что получил её, анализируя схему. В остальном инфа взята из открытых источников и анализа поведения тестов на реалах и эмуляторах.
Насчёт Across the Edge — да, я тоже заметил, что в одной из частей явно расчет на верхний бордюр с большим количеством строк, чем показывает даже большинство эмуляторов. Похоже, только z80stealth выводит 64 строки верхнего бордюра. Эмулятор самого Lion17, ZXDevStudio, первые 16 строк верхнего бордюра помечает как невидимые.
Если это архив ААА, то это чужой монастырь, он может делать в нём всё, что считает нужным. Спектрум в ex-USSR это территория неформальных хаков, аутентичные копии скорее исключение, чем правило. К тому же вроде бы у него на сайте по несколько вариантов каждой демы, выбирай рабочую. Хорошо, конечно, что есть и альтернативные архивы.
А я пишу эмуль в первую очередь под непродвинутого ленивого юзера, у которого одно желание — чтобы запустить и всё работало, без всяких копаний в настройках. При этом, правда, одновременно и под перфекциониста, который хочет, чтобы всё работало так, как на реале. Приходится искать компромисс.
Я не шарю в схемотехнике, в диаграммках и в HDL. Я обитатель гяф-а, к-рый до сих пор думает, что, возможно, существует клон Z80, у которого другая логика выполнения PUSH, и не видит причин, почему нет. Есть клоны Z80 с отличающимся от Z80 в деталях поведением, это я точно знаю.
И да, я думаю, что эмуляторописателям необязательно разбираться в сигналах эмулируемого устройства, если есть его подробная программная модель. Мало того, я подозреваю, что большинство эмуляторописателей далеки от схемотехники. И что большинство деталей эмуляции выужено не из схем, а из документации и программных экспериментов. Особенно недокументированные фишки Z80 и ULA.
А если я этого не сделаю, люди будут думать, что ZXMAK2 эмулирует Пентагон лучше, чем Спектрамин, потому что в нём в этих демках нет этих глитчей. А то, что на ZXMAK2 какие-то там тесты работают не так — кого это волнует?
На самом деле, все эмулеписатели этим занимаются, потому что никто не знает, как работает Пентагон, с точностью до тактов. Соответственно, все выстраивают тайминги эмуляции так, чтобы большинство демок шло красиво, а тесты на эмулях выдают кто во что горазд. Я, возможно, напишу более точную эмуляцию, но опять же — есть и у реальных Пентагонов расхождения, уже доказано тестом, значит, или надо делать подстроечные параметры в эмуле, или смириться, что часть демок слегка лажает.
И да, я считаю, наоборот — точную пусть ставят те, кто знает, что делает (разработчики), а красивая — по умолчанию, для простых юзеров, желающих насладиться демками.
Пока что 4 пентагона (Lion17, goodboy, JV-Soft, IL-DECAMERON) показали практически одинаковые результаты в тестах на тайминги. Разница только у теста на переключение экранов, и то, с машиной, которая другими тестами не проверялась. А так, конечно, возможно.
На уровне «знаю, что из себя представляет, но никогда не пользовался, и не знаю, как.» На самом деле у меня собственная «vcs», из подручных материалов, на локальных дисках. Поэтому особой потребности во внешней нет. Если попадется внятный мануал по какой-нибудь локальной vcs, может, перейду на неё.
Насчёт Across the Edge — да, я тоже заметил, что в одной из частей явно расчет на верхний бордюр с большим количеством строк, чем показывает даже большинство эмуляторов. Похоже, только z80stealth выводит 64 строки верхнего бордюра. Эмулятор самого Lion17, ZXDevStudio, первые 16 строк верхнего бордюра помечает как невидимые.
А я пишу эмуль в первую очередь под непродвинутого ленивого юзера, у которого одно желание — чтобы запустить и всё работало, без всяких копаний в настройках. При этом, правда, одновременно и под перфекциониста, который хочет, чтобы всё работало так, как на реале. Приходится искать компромисс.
И да, я думаю, что эмуляторописателям необязательно разбираться в сигналах эмулируемого устройства, если есть его подробная программная модель. Мало того, я подозреваю, что большинство эмуляторописателей далеки от схемотехники. И что большинство деталей эмуляции выужено не из схем, а из документации и программных экспериментов. Особенно недокументированные фишки Z80 и ULA.
На самом деле, все эмулеписатели этим занимаются, потому что никто не знает, как работает Пентагон, с точностью до тактов. Соответственно, все выстраивают тайминги эмуляции так, чтобы большинство демок шло красиво, а тесты на эмулях выдают кто во что горазд. Я, возможно, напишу более точную эмуляцию, но опять же — есть и у реальных Пентагонов расхождения, уже доказано тестом, значит, или надо делать подстроечные параметры в эмуле, или смириться, что часть демок слегка лажает.