Paint on the TV screen with Arduino

Sorry, i meant wiring instead of the bootloader, i made this mistake because i used a eprom/controler programmer to burn the hex code, so i did not use the bootloader.

//## if (noligne >= 32 && noligne < 304)
{
for (index = 0; index < _NB_PIXELS; index++)
{
PORTB = memVideo[index][(noligne>>4)];

as for your problem in above line, if i understand well you write from video memory during vertical sync and you should not.
at this point your video memory is probably empty (all 1 or all 0).
i gues i would first try to get a good sync and later worry about writing something from memory.

if (noligne == 3 || noligne == 4)
as for this kind of line, with a OR, is a cause of instability because if the noline == 3 the rest of the line is not executed.
so on all lines except line #3 you perform 2 compares and only 1 compare for line 3
try to replace it with: if (noline>2) && (noline < 5) here the compares are always executed.

sorry but i never wrote asm for controlers and dont know the AVR but i think i gues correctly what you are doing but i could make mistakes, i am only human.

i did try to write a sync generator in plain c but failed because the timing resolution is to low, in asm one can trow in one or more NOP instructions to get accurate timing.

i dont know if you realize that there is a even and a odd vertical field, they are both different in vertical sync!!! the even field starts with a full horizontal line and ends with a half hor. line, the odd field starts with a half hor. line and ends with a full hor. line.
there is also a pre vert. sync pattern ... wich i did not find in your code.

sorry again for the long post.
you can always mail me in french that i do understand but i am more fluent in english