my routine, if the 5th sprite flag is not set, does not cycle
read the asm
in a,(0x99)
ld (_vdps0),a
jp z,_end
bit 06h,a
jp z,3f
....
3:
ld a,SAT & 255
out (0x99),a
ld a,SAT/256 | 64
out (0x99),a
xor a
ld (_curr_plan),a
ld hl,_sprt
ld c,0x98
ld a,(_n_sprt)
ld b,a
otir
1:
ld a,208
out (0x98),a
xor a
ld (_ready),a
_end:
ex af,af'
exx
ei
ret
it means that it does not cycle if there is no 5th sprite,
you can trust me if you do not see it
about your example there is a mess between sprite planes and sprite numbres
say that you display 10 sprites
A B C D E F G H I L
and that
A B C D E F G H are on the same line and are on planes 0 1 2 3 4 5 6 7,
while I & L are elsewhere on planes 8 9
the initial association sprite/planes looks like this
A B C D E F G H I L
0 1 2 3 4 5 6 7 8 9
step 1)
E F G H are hidden by A B C D, (I & L are visible), S0 -> 4
my routine rearranges the sprites like this:
E F G H I L A B C D
0 1 2 3 4 5 6 7 8 9
step 2)
A B C D are hidden by E F G H, (not by I & L that are elsewhere), S0->6
my routine rearranges the sprites like this:
A B C D E F G H I L
0 1 2 3 4 5 6 7 8 9
and so on.
As you can see the routine works perfectly, only the sprites that should disappear actually disappear
and their flickering frequency is 25Hz, i.e. the best you can get on MSX1 and 8 sprites on the same line
[edit]
Now I see your point, you was referring to the Viejo's solution, with fixed increment of the offset
Sorry I misunderstood, I tougnt you was referring to the offset guided by S0,
Yes, the problem you mention can occur with the Viejo's solution.
[/edit]