ADD1=ADD1+.6WHAT EFFECT DO THESES HAVE?
ADD2=ADD2+.3
ADD3=ADD3+.7
ADD1, ADD2,ADD3 are variables and they are "doubles" That means that they can hold numbers containing a decimal point which means that we can add very small amounts to them.
This is useful when we want to use things like sin and cos which might need a fraction of a degree added to them to get a nice movement

C1=60+59*sin(add3*3.14/180)NOT A BETTY BOO
C2=60+59*cos(add3*3.14/360)
C3=60+59*sin(add3*3.14/720)
The important things here are SIN and COS
Both these commands have one thing in common, they return a number between -1 and +1 depending on what angle (the math jargon is theta) that you give it.
So..
X=sin(100) will put a number somewhere between -1 and +1 in x, this will change according to the number in the brackets.
Sin and Cos are trig functions, as a default they use something called radians.
We tend to think of angles in degrees.
To convert a radian into a degree;
angle = radian multiplied by pi divided by 180
Pi is about 3.14
so..
add3*3.14/180
Turns the radian "add3" into a degree
Bear in mind that the values from these calculations are stored in C1,C2,C3
Anyway..
We're talking about waveforms here, COS (or cosine) is inverse sine
X = RADIUS * SIN (THETA)
Y = RADIUS * COS (THETA)
Where theta ranges between 0 and 359 ( for THETA = 0 TO 359 )
Will actually plot a circle

All you need to know at this stage is that you can use sin and cos to make a nice number that bounces smoothly within a range!
Y= 100*SIN(ANGLE)
Because you are multiplying it by 100, remember sin returns -1 to +1 you increase this range to -100 and +100

Since -100 is off the screen, you can add 100 on to make the range between 0 and 200
Y= 100+(100*SIN(ANGLE))
Remember that expressions inside the brackets are evaluated first

SCREEN_R(Y)=120+(C1*SIN((Y-ADD2)*3.14/180))NOT A SCOOBY
SCREEN_G(Y)=120+(C2*COS((Y+ADD2)*3.14/180))
SCREEN_B(Y)=120+(C3*SIN((Y-ADD1)*3.14/180))
SCREEN_R(Y) etc..
These are arrays. are you ok with arrays or do you need more practice?