§ Тайминги

Дело в том, что укладываться я буду не в 341 x 262 пикселей, а в 800 x 525, поэтому пиксели будут размером 2x2, то есть, удвоение. Что это значит? То, что в целом в линию вмещается 341 x 2 = 682, то меньше 800 и это очень хорошо. В предыдущей главе я рассказал, что область рисования будет проходить на самом деле, в 256 x 240 области, а 341 x 262 — это общее количество, включая горизонтальную, вертикальную синхронизации и разного рода порожеки.
Моя задача это правильно уложиться в отведенные тайминги.
[задний порожек 48 пк] [ видимая область 640 пикселей ] [передний порожек 16] [синхронизация 96]
Здесь показаны тайминги для строки VGA. Но требуется сделать так, чтобы в видимой области рисовались 256 пикселей, умноженные на 2.
[бордер слева 64] [512 видимая область] [бордер справа 64]
Скорость, с которой будет работать видевывод, будет 25 мгц, и отрабатывать будет следующим образом:
  • Задний порожек 48 — пропуск
  • Бордер слева 64 — пропуск, рисование цвета заднего фона
  • Видимая область 512 пк, по 256 тактов PPU
  • Бордер справа — обработка 64 тактов PPU
  • Передний порожек 16 — обработка 16 тактов PPU
  • Синхронизация 5 PPU + 91 такт пропуск
Вот такая вот будет сложная схема обработки одной строки. Помимо этого, в память будет записываться временное значения для отрисовки второй строки, поскольку требуется удвоение не только по X, но и по Y. Когда будет рисоваться вторая строка, ни PPU, ни CPU работать не должны. Кстати говоря, 1 такт CPU = 3 такта PPU.