Reposition Player 1 routines done
The Reposition Player 1 routines have been rewritten. It now takes 4 scanlines to reposition player 1, plus an additional scan line to get back into sync with the main kernel loop. The player 1 graphics can start on the additional scan line, but a reposition of player 0 cannot be triggered on it as the BMI KernelEvent is what was dropped to get back in sync.
The new kernels take up a bit more ROM than before as I had to move the jmp() outside of the horizontal retrace time, which means each reposition kernel has more duplicated code than before. There was also a minor tradeoff, the reposition kernels that hit RESP1 on cycles 65 and 70 do not update AUDV0.
At the moment which reposition kernel is called is hardcoded in Color1DataStream.
This screenshot shows reposition kernel P1EarlyHM65 in use, as well as the updating of NUSIZ1 (missile 1's size is currently being changed) so that player 1 can be resized for the special room objects. If you want to see the other kernels in use, change the entry in Color1DataStream and recompile.
In the prior post's comments I speculated that I might not need all 11 kernels because I didn't use all 160 positions. I changed my mind about that after remembering that the room & humanoid shift offscreen when you exit the room.
Next up is to rewrite the Reposition Player 0 routines.
ROM
source
- 1
3 Comments
Recommended Comments