На самом деле, он возникает на стыке строки, где идет подготовка к сбросу горизонтального счетчика. Особенность PPU в том, он считывает графику спрайтов непосредственно перед отображением строки. А до этого, он делает поиск по списку своей памяти спрайтов и ищет те, что принадлежат следующей строке (т.е. должны выводиться на ней). А растактовка сделана так, что координаты сканирующих счетчиков 0:0 соответствуют левому верхнему углу отображаемого растра, а 255:239 нижнему правому. Превышение этих координат является служебной областью (гашение и синхронизация). Но в отличии от наших компиков, у рендера более сложный узел сдвига графики, т.к. имеется поточечный скроллинг. Я немного забежал вперед, все это вы узнаете позже. Очень простые и красивые решения, я вам скажу. Но это порождает необходимость переноса части циклов чтения VRAM до сброса счетчика. Добавьте еще то, что длина строки не кратна количеству циклов обращения - вот и вылазят аналоговые артефакты, который образуются из иголок от задержек.
Между прочим замечу один факт: у PPU работает конкретное состояние, потому что используются латчи. Т.е., например, счетчик должен иметь 4 состояния, они берут число 4 (3'b100) и когда счетчик его достигает - сбрасывают его. Счетчик не строго синхронный, ибо он на латчах, поэтому это ближе к нашим ИЕ5м, примененным в наших компиках. Схему сброса располагают поближе к счетчику, но все равно есть время распространения сигнала и задержки в элементе сравнения. В итоге есть иголочка. А если разрядов 9, как у PPU, то иголочка может быть приличной. Когда мы делаем полностью синхронный счетчик с синхронным сбросом, то если мы хотим чтобы он имел только 4 состояния, нам следует "заказывать" сброс на числе 3 (3'011), т.к. новое состояние применится только на следующем такте. В этом фундаментальное отличие между синхронной схемой и асинхронной.
Поэтому, по идее, следует скорректировать все цифры координат сигналов у PPU, но оно вроде и так работает, хотя это чревато добавлением лишнего такта в строку. Именно поэтому, у меня полоска была заметно шире чем в оригинале. Все это будем разбирать ниже.