This answer elaborates a bit on the answers by @Raffzahn and @thrust26. The answer by @thrust26 is correct. The alien sprites are not positioned by repeated
RESP1 triggers as the code below shows. The book "Racing the beam" mentions the following in a section about sprites:
Rick Maurer, the programmer for the VCS port of Space Invaders, discovered that strobing
HMOVE while a line was being drawn would reposition objects immediately.
This suggests that this technique was used in Space Invaders. However, the only
HMOVE triggers that appear in the code occur directly after a
WSYNC, so definitely not multiple times per scan line.
The aliens are drawn using the two player sprites. Both
NUSIZ1 are set to
$06 which means single pixel resolution and three copies each at a medium spacing. The copies of both sprites interlace to form a row of six in a pattern "A B A B A B". The appearance of each "copy" is changed by loading different sprite patterns in the
GRP1 registers by carefully timed code:
lda ($f8),y ; Load pattern for alien six in X.
lda ($ee),y ; Load pattern for alien one in GRP0
lda ($f0),y ; Load pattern for alien two in GRP1
lda ($f2),y ; Update pattern for alien three in GRP0
lda ($f4),y ; Update pattern for alien four in GRP1
lda ($f6),y ; Update pattern for alien five in GRP0
txa ; Update pattern for alien six in GRP1
Y register counts down from 9 to 0 (inclusive) to draw ten scan lines for each alien in a row. An alien pattern can easily be modified by adjusting the low byte of any of the pointers in
$f8. Interestingly, these scan lines are drawn without any intermediate
WSYNC trigger, purely based on careful instruction timing.