Hmm, it looks like sta RESP0 at cycle 23 gives me $F for the screen position. If I sta RESP0 exactly 20 cycles in, though, it gives me 6 for the position! I think this code is going to work. It's not as efficient as the one I found on the forum (I waste 5 cycles), but it's mine
And now I can see why the author of this positioning code I was looking at wanted to hit 6-- it so happens that this is the left-most position in my fine-tuning table, and since fine-tune is only 16 values signed, it's slim pickings! I think the only alternative may be to have a special case for the left-most values, or to just offset everything (maybe by using sprite wrapping on the right-most side..?)
I investigated the Air-Sea Battle code for a bit, and it looks like that one doesn't let sprites go all the way to the left (I think x=3 may have been the minimum..?). It's a fascinating system where getting full-range motion for sprites is considered a breakthrough!
So is it documented somewhere what X position you can expect when strobing the RESP0 register at various times? I'm assuming it's a constant lag time once the beam moves onto the visible screen (from "pixel position" 0 onward), but it seems unpredictable as long as the pixel position is negative, giving 3 for the majority of the time. I wonder if Atari programmers were armed with this knowledge, or if they were just winging it? I'm guessing when you're coding Atari games 8+ hours a day, you have the luxury of being able to experiment
BTW when I say pixel position, I'm thinking the counter in the Stella debugger.
Thanks so much for your help!