One Step forward - Two steps back
Hi there!
Phew... so I hit yet another brickwall.
Yesterday I discovered that a single scanline resolution object also requires a single scanline precission for its vertical motion.
The problem is with slow moving objects. When an object is moving two scanlines at once every other frame, it's visible on the same position for 2 frames and then makes a 2 scanline jump. The human eye expects this object to move one scanline every frame tough. And so it interpolates an extra *merger* step inbetween the two actual moves. Basically that effect either makes the object just look different, or, what's worse, when the object moves diagonal, it looks like it jitters.
Now, why do I move it 2 scanlines at once in the first place?
Because I need to update the particles and the crosshair every other scanline. The code for this is not that complex:
; Draw CROSSHAIR LDA (crossPtr),Y STA GRP0 ; Draw particles CPY particle1 PHP CPY particle2 PHP CPY particle3 PHP
But, it can't happen on a repositioning scanline.
So, a reposition can only happen in the line between those updates.
Well, I now have plan for a possible solution. I'm not sure if it'd work out though, but it might be worth a last try. (When not succeeding, I'll go back to 2LK sprites. The jitter effect is unacceptable for me.)
The plan is like this:
- I'll double the resolution of my linecounter.
- I'll position the first visible sprite already before the kernel starts.
-* I'll then wait until the sprite starts.
-* Depending on wether it starts on an odd or even line, the sprite drawing part must either kick in with the line updating the particles or the other.
-* Then it'll draw the sprite until it's done.
-* Then I must skip to the next displayable sprite
-* Then I must complete the current 2 line step
- Use the next two lines to reposition
- Then wait again, until it starts.
Ugh... even thinking about trying to get all of that done in the correct order, with the correct timings gives me creeps. In all those lines marked with a * I need to correctly execute the particle/crosshair code every other line, even though individual steps here may *randomly* require a odd or even numbers of lines...
Not sure if it's even worth trying...
Greetings,
Manuel
4 Comments
Recommended Comments