я правильно понимаю, что если сделать один экран все 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 строк верхнего бордюра помечает как невидимые.
Экранные строки по порядку сверху вниз:
16 строк кадрового синхроимпульса (невидимых)
64 строки верхнего бордюра.
16 строк бланка (и в которых, полагаю, 4 строки синхроимпульса, иначе блок разверток порвет нафиг),
16 строк верхнего бордюра, которые нельзя использовать по 2 причинам: а) будут глюки изза «непогашенного» бланка, б) не влезет на нормальных теликах, как это было в Across the Edge,
48 строк верхнего бордюра.
И да: вся вышеописанная инфа не была смоделирована из схемы (или я ошибаюсь?), значит мое замечание про непроверенность в силе.
Из вредности сделаю хдл-бенч по схеме Mick'a и нарисую времянки только сорцы никому не покажу.
MAC — это адрес.
Mc — это шотландец! =)
в плагинной системе главное — ЖЕНИТЬСЯ ;) вперёд к победам! :)
такую бы подборку пару лет назад, а то пришлось самому высчитывать и вникать)
Насчёт Across the Edge — да, я тоже заметил, что в одной из частей явно расчет на верхний бордюр с большим количеством строк, чем показывает даже большинство эмуляторов. Похоже, только z80stealth выводит 64 строки верхнего бордюра. Эмулятор самого Lion17, ZXDevStudio, первые 16 строк верхнего бордюра помечает как невидимые.
Есть замечание:
16 строк бланка (и в которых, полагаю, 4 строки синхроимпульса, иначе блок разверток порвет нафиг),
16 строк верхнего бордюра, которые нельзя использовать по 2 причинам: а) будут глюки изза «непогашенного» бланка, б) не влезет на нормальных теликах, как это было в Across the Edge,
48 строк верхнего бордюра.
И да: вся вышеописанная инфа не была смоделирована из схемы (или я ошибаюсь?), значит мое замечание про непроверенность в силе.
Из вредности сделаю хдл-бенч по схеме Mick'a и нарисую времянки
только сорцы никому не покажу.