I think 99% of the free-flight now works with patch 4 (about time too!)
Only problem left now is roll left and roll right command do not update the object's 'z' angle, even though it graphically rolls.
Try code below to expermient different rotates
I do believe there is now enough working for people to finally write a game!
sync on : a#=0.5 : c$=chr$(13)+chr$(10)
k$="Rotate keys:"+c$+c$
k$=k$+"1=X angle +"+c$+"2=X angle -"
k$=k$+c$+"3=Y angle +"+c$+"4=Y angle -"
k$=k$+c$+"5=Z angle +"+c$+"6=Z angle -"
k$=k$+c$+c$+"Free-flight keys:"+c$
k$=k$+c$+"q=pitch down"+c$+"w=pitch up"
k$=k$+c$+"e=turn right"+c$+"r=turn left"
k$=k$+c$+"t=roll left"+c$+"y=roll right"
k$=k$+c$+c$+"m=Move Forward"+c$+c$+"0=Reset"
make object box 1,30,10,50
make object box 2,200,1,1
make object box 3,200,1,1 : yrotate object 3,90
make object box 4,200,1,1 : zrotate object 4,90
make object box 5,200,2,2 : color object 5,rgb(255,0,0)
make object box 6,2,2,200 : color object 6,rgb(0,0,255)
make object box 7,2,200,2 : color object 7,rgb(0,255,0)
make object cube 8,4 : color object 8,rgb(0,0,255)
position camera 40,30,-200 : point camera 0,0,0
do
if inkey$()="0" then position object 1,0,0,0 : rotate object 1,0,0,0
if inkey$()="m" then move object 1,a#
if inkey$()="1" then xrotate object 1,wrapvalue(object angle x(1)+a#)
if inkey$()="2" then xrotate object 1,wrapvalue(object angle x(1)-a#)
if inkey$()="3" then yrotate object 1,wrapvalue(object angle y(1)+a#)
if inkey$()="4" then yrotate object 1,wrapvalue(object angle y(1)-a#)
if inkey$()="5" then zrotate object 1,wrapvalue(object angle z(1)+a#)
if inkey$()="6" then zrotate object 1,wrapvalue(object angle z(1)-a#)
if inkey$()="q" then pitch object down 1,a#
if inkey$()="w" then pitch object up 1,a#
if inkey$()="e" then turn object right 1,a#
if inkey$()="r" then turn object left 1,a#
if inkey$()="t" then roll object left 1,a#
if inkey$()="y" then roll object right 1,a#
q1#=object position x(1) : q2#=object position y(1) : q3#=object position z(1)
q4#=object angle x(1) : q5#=object angle y(1) : q6#=object angle z(1)
position object 2,q1#,q2#,q3# : position object 3,q1#,q2#,q3#
position object 4,q1#,q2#,q3# : position object 5,q1#,q2#,q3#
position object 6,q1#,q2#,q3# : position object 7,q1#,q2#,q3#
position object 8,q1#,q2#,q3# : set object to object orientation 8,1 : move object 8,100
set object to object orientation 5,1
set object to object orientation 6,1
set object to object orientation 7,1
s$="x="+str$(q1#)
s$=s$+c$+"y="+str$(q2#)
s$=s$+c$+"z="+str$(q3#)
s$=s$+c$+"x ang="+str$(q4#)
s$=s$+c$+"y ang="+str$(q5#)
s$=s$+c$+"z ang="+str$(q6#)
s$=s$+c$+c$+k$ : text 0,0,s$
sync
loop
Gronda, Gronda