The algorithms behind the stardust particles in the side views
The STARS2 routine moves the stardust sideways according to our speed and which side we are looking out of, and applies our current pitch and roll to each particle of dust, so the stardust moves correctly when we steer our ship.
Let's look at this process in more detail. It breaks down into three stages:
- Moving the stardust sideways
- Applying pitch to the stardust (rotating around the mid-point)
- Applying roll to the stardust (up and down)
Moving the stardust sideways
----------------------------
First, we want to move the stardust sideways, in the correct direction for the current view. The further away the stardust particle (i.e. with a higher value of z) the slower it should move, to give a sense of perspective.
These are the calculations:
1. delta_x = 8 * 256 * speed / z_hi 2. x = x + delta_x
We sign the delta_x value as negative for the left view, where particles go from right to left, and positive for the right view, where particles go from left to right, and then we add the delta to the x-coordinate to move the stardust particle past our side window as we speed along.
Applying pitch to the stardust (rotating)
-----------------------------------------
The following calculations apply the current pitch angle beta to the stardust:
3. x = x + beta * y 4. y = y - beta * x
These are essentially the same as the roll equations from MVS4, just using the pitch angle beta, because when we are looking out of the side views, when the ship pitches, the side views rotate around the middle, just like the front view does when we roll.
Applying roll to the stardust (up/down)
---------------------------------------
The following calculations apply the current roll angle alpha to the stardust:
5. x = x - alpha * x * y 6. y = y + alpha * y * y + alpha
The significant part here is adding alpha to y (or, more specifically, ALPHA * 256). This means that as we roll the ship and alpha increases, the stardust out of the side view goes up and down, which is pretty intuitive.
The other part is currently a bit of a mystery, along with the pitch calculations in STARS1. More analysis needed here...