pixel clock: 6.6715 MHz
432 pixels per scanline (~15.44 KHz)
262 scanlines per frame (~58.94 Hz)
Sync signal is active low.
Diagram:
green hsync pulse (sync low)
red vsync pulse (sync low)
yellow hsync + vsync (sync high)
gray image output
Table:
{short hsync} = 16px [hsync start] 16px [hsync end]
scanlines signal
0 {long hsync} 184px {long hsync} 184px
1,2 {short hsync} 184px {short hsync} 184px
3 {short hsync} 184px {short hsync} [vsync start] 184px
4,5 {short hsync} 184px {short hsync} 184px
6 {short hsync} 184px {short hsync} [vsync end] 184px
7,8,9 {short hsync} 184px {short hsync} 184px
10 {short hsync} 400px
11-22 {long hsync} 400px
23 {long hsync} 64px 319px [image start] 1px [image end] 16px
24-254 {long hsync} 64px [image start] 320px [image end] 16px
255 {long hsync} 64px [image start] 319px [image end] 1px 16px
256-261 {long hsync} 400px
The F3 outputs a "240p" signal, approximating ntsc field 2 (vsync starts in the middle of a scanline) rather than the more common field 1.
Unlike most "240p" devices, it does try to output the correct equalizing and synchronizing pulses during vblank (i.e. two pulses per scanline for 9 scanlines, with the middle 3 being very long pulses), but incorrectly enough that it may do more harm than good.
It also fails to begin every scanline with a sync pulse (there are 7 scanlines where the pulse is delayed by 16 pixels, and 3 where it is delayed by 32 pixels with the previous pulse crossing the start of the scanline)
scanline F3 sync pulses Ntsc field 2 sync pulses
pulse 1 pulse 2 pulse 1 pulse 2
0 32* 32[a] 32* 16
1 (16+)16 (16+)16 16 16
2 (16+)16 (16+)16 16 16
3 (16+)16 (16+)16+200[b][c] 16 184
4 (32+)200[c] (32+)200[c] 184 184
5 (32+)200[c] (32+)200[c] 184 184
6 (32+)200[c] none[d] 184 16
7 (16+)16 (16+)16 16 16
8 (16+)16 (16+)16 16 16
9 (16+)16[e] (16+)16[e] 16 none
10 (16+)16 none 32 none
11+ 32 none 32 none
* technically this first half-scanline would belong to the preceeding field 1.
"(N+)" indicates an erroneous delay before the pulse.
[a] wrong length synchronizing pulse.
[b] actually 2 pulses with a barely-detectable gap between them.
[c] equalizing pulses are too long, and extend past where the (delayed) next pulse should've started.
[d] missing synchronizing pulse.
[e] 1 too many scanlines of synchronizing pulses.
[b], [c], and [d] are consequences of how vsync is handled: instead of lengthening the sync pulses during vsync, they instead xor sync with the vsync signal.
at startup, the f3 will output an invalid video signal (mostly consisting of garbled vblanks) for several frames.
scanlines 0-9 have two hsync pulses. scanlines 1-10 have shorter hsync pulses. (i.e. these mostly coincide, but not completely)
scanline 23 has one pixel of image output (most games hide this scanline). scanline 255 is missing 1 pixel (some games hide this scanline)