я правильно понимаю, что если сделать один экран все 00, второй все ФФ, а атрибуты сделать i/p=7/0 и 0/7, то если рандомно переключать экраны, то будет видна лажа в виде белых точек?
Так что щелкать, по идее, можно, но желательно перед этим как-то вручную подстроиться на такт начала вывода растра. Т.е. попросить пользователя совместить полоску на экране и бордюре, там, или что-то типа того.
Ну как. У нас есть 4 такта, в течении которых видеоконтроллер выводит текущий байт. Если мы переключим экран на такте перед началом этого 4хтактного цикла вывода нового байта, или на первом-втором такте этого вывода, он успеет подчитать данные из нового экрана за оставшиеся 4-3-2 такта. Т.е. экран нельзя переключать только на 3м такте вывода, на котором будет смешана инфа из двух экранов, причем смешана неоднозначно — то ли пиксели из 1-го, атрибут из 2-го, то ли наоборот. Так что по идее первый такт машцикла OUT переключения экранов надо завязывать на последний такт вывода предыдущего байта, это даст нам запас в 2 такта (от более позднего начала INT и/или более позднего машцикла переключения экрана). Или на первый такт вывода нового байта — тогда у нас будет запас в один такт в обе стороны. Если бы точно знать, что более раннего INT-а от эталонного быть не может, предпочтительнее 1й вариант.
Поэтому, в зависимости от количества обращений процессора к ОЗУ, в любом такте с одним и тем же номером в разных кадрах может происходить как выборка пикселей, так и атрибутов.
По завершению вывода 8 пикселей растра видеоконтроллер на следующем такте начинает выводить следующие 8 пикселей по значениям пикселей/атрибутов, заблаговременно считанным им ранее.
Значит щёлкать видеоэкраны перед лучом в одних и тех же тактах плохая идея? Даже с настройкой номеров этих тактов для разных машин?
В последних версиях Unreal можно регулировать точно сколько строк показать. Вне всякого отношения к их реальной видимости или невидимости. Это иногда очень помогает при отладке программ.
Насчёт Across the Edge — да, я тоже заметил, что в одной из частей явно расчет на верхний бордюр с большим количеством строк, чем показывает даже большинство эмуляторов
Протестирована машина с началом INTa на один такт позже от предыдущих машин — соответственно, количество тактов от начала подтверждения прерывания до вывода растра на 1 такт меньше, и результаты в тестах на 1 такт раньше. Причем, на этой машине переключение экранов происходит после 2го такта машцикла вывода в порт (а изменение цвета бордюра — по-прежнему после 1-го).
Инфа по строкам взята из этого сообщения Lion17, а он пишет, что получил её, анализируя схему. В остальном инфа взята из открытых источников и анализа поведения тестов на реалах и эмуляторах.
Насчёт Across the Edge — да, я тоже заметил, что в одной из частей явно расчет на верхний бордюр с большим количеством строк, чем показывает даже большинство эмуляторов. Похоже, только z80stealth выводит 64 строки верхнего бордюра. Эмулятор самого Lion17, ZXDevStudio, первые 16 строк верхнего бордюра помечает как невидимые.
MAC — это адрес.
Mc — это шотландец! =)
в плагинной системе главное — ЖЕНИТЬСЯ ;) вперёд к победам! :)
такую бы подборку пару лет назад, а то пришлось самому высчитывать и вникать)
Насчёт Across the Edge — да, я тоже заметил, что в одной из частей явно расчет на верхний бордюр с большим количеством строк, чем показывает даже большинство эмуляторов. Похоже, только z80stealth выводит 64 строки верхнего бордюра. Эмулятор самого Lion17, ZXDevStudio, первые 16 строк верхнего бордюра помечает как невидимые.