There is not a single screenshot here. The tracks are drawn by repeating the chain the cartridge follows to paint them, and the minimaps by integrating their paths. The rest —the listing and the numbers— comes out of the binary and is reproduced with make.
In SCREEN 2 the pattern table is three banks, one per third of the screen. F-1 Spirit loads different drawings under the same index in the top third and the bottom one, and that is where the road's sense of depth comes from. Bits 7, 6 and 5 of the loader's flags say which third each tile goes to.
Each race has a sequence of (piece, flags) pairs. A piece is 24 bytes: 3 rows of 8 metatiles. A metatile is 16 bytes: 4 rows of 4 tiles. One row of a piece fills the screen's width. The flags do not move the track: they rotate the row of metatiles modulo 8, and that rotation, accumulated from one piece to the next, is what makes it wind.
The minimap is not computed: it is 21 byte paths, two signed nibbles each, that move the marker. Its shape does not come from the sequence, but its length does: across all 21 races, steps = pieces / 2 + 1.
Three blocks share one format -pairs of (control mask, how many frames it lasts)- adding up to 43.6 s, 84 s and 12.5 s. The masks are combinations of the direction bits and the two buttons: they are recorded games, what the machine plays by itself.
None of these images is a screenshot: they are drawn from the ROM by tools/imagenes_web.py.