First, thanks to everyone on the forum - you guys are rockin' the helpful. Hopefully someday soon I can start to help some of you out in return.
I thought I understood HMOVE but not so. First, in an effort to avoid the black side bars - I timed the HMOVE to occur on either cycle 73 or 74 as suggested by various sources. I found that didn't work too well. I thought I had licked the problem by simply having the HMOVE occur several lines ahead of when I needed it but well after WSYNC (having this luxury in my design). That seemed to fix it, but no - after moding the code - the blank lines reappear, even though HMOVE is at least a full scan line separated from the sprites. So in the course of exploring, I have codified these questions:
- do the HMPx reset automatically after each frame? I was not zeroing them with HMCLR and yet I see no motion despite having an HMPx / HMOVE offset on some sprites. I know the offset is working, because when I take it out, the sprites shift back to the 'regular' positions set by RESPx. I am not resetting the HMPx to zero after/before each frame.
- does setting position with RESPx nullify any HMOVE changes, or will newly reset positions still be displayed offset by the same HMPx parameters?
- this is another way of asking the same thing; for a given combo of RESPx and HMPx/HMOVE does the order in which the two are applied affect the final position?
Let me describe one situation. I was setting my position with RESPx after first setting HMPx to 0 followed by HMOVE. Then, I would try to tweak position using mods to the HMPx line. I would find things like setting 0001 to nudge once to the left would do nothing. Then I tried 0010. nothing. Then I stepped by one to the maximum left shift of 0111 (I only needed to shift one pixel left) and finally the shift kicks in at TWO pixels - not 7. Next I chose a different RESPx position (HMPx = 0) - by inserting a couple of NOPs - then when I start to left shift, the behaviour is normal: 0001 shifts one, 0010 shifts two, etc.
I so confused! Obviously I am missing something fundamental. Any input would be very appreciated!!!