80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
_runtimePath_ "../runtime"
 | 
						|
_codeRomType_ ROMv2
 | 
						|
 | 
						|
'DRAW 3D CUBE WITH SOME
 | 
						|
'ROTATION AROUND X
 | 
						|
 | 
						|
K=0:X=K:M=X:N=M:I=N:A=I:B=A:L=B:F=L
 | 
						|
DIM P(7)=0
 | 
						|
DIM Q(7)=0
 | 
						|
 | 
						|
init time, noupdate
 | 
						|
set FGBG_COLOUR, &h3F00
 | 
						|
 | 
						|
10 MODE 3:CLS:U=48:GOTO 100
 | 
						|
 | 
						|
'ROTATION AND PROJECTION
 | 
						|
20 R=K+L+F
 | 
						|
25 pi=80+X/R : P(I)=pi
 | 
						|
30 qi=60+(M-N)/R : Q(I)=qi
 | 
						|
35 P(I+4)=160-pi
 | 
						|
40 Q(I+4)=qi
 | 
						|
45 INC I : RETURN
 | 
						|
 | 
						|
50 LINE P(A), Q(A), P(B), Q(B) : tick time : RETURN
 | 
						|
 | 
						|
'SETUP CAMERA
 | 
						|
' S=SIN C=COS F=FLEN
 | 
						|
100 S=45:C=45:F=U LSL 2
 | 
						|
    gosub 110
 | 
						|
 | 
						|
timer=0
 | 
						|
for i=0 &to 100
 | 
						|
    gosub 254
 | 
						|
next i    
 | 
						|
timer = get("TIMER")
 | 
						|
print timer/60;" ";timer % 60;"/60"
 | 
						|
end
 | 
						|
 | 
						|
'loop: gosub get("BUTTON_STATE")
 | 
						|
'      goto &loop
 | 
						|
 | 
						|
'PROCESS CUBE CORNERS
 | 
						|
110 I=0:X=U*U
 | 
						|
120 K=S:M=U*C
 | 
						|
130 L=C:N=U*S:GOSUB 20
 | 
						|
140 L=-L:N=-N:GOSUB 20
 | 
						|
150 K=-K:M=-M:GOSUB 20
 | 
						|
160 L=-L:N=-N:GOSUB 20
 | 
						|
170 GOSUB 200:RETURN
 | 
						|
 | 
						|
'DRAW CUBE
 | 
						|
200 A=0:B=1:GOSUB 50
 | 
						|
205 A=1:B=2:GOSUB 50
 | 
						|
210 A=2:B=3:GOSUB 50
 | 
						|
215 A=3:B=0:GOSUB 50
 | 
						|
220 A=4:B=5:GOSUB 50
 | 
						|
225 A=5:B=6:GOSUB 50
 | 
						|
230 A=6:B=7:GOSUB 50
 | 
						|
235 A=7:B=4:GOSUB 50
 | 
						|
240 A=4:B=0:GOSUB 50
 | 
						|
245 A=5:B=1:GOSUB 50
 | 
						|
250 A=6:B=2:GOSUB 50
 | 
						|
255 A=7:B=3:GOSUB 50
 | 
						|
    return
 | 
						|
 | 
						|
254: set VIDEO_TOP, 238 'disable video output
 | 
						|
     set FG_COLOUR, &h00 : gosub 200 'erase cube
 | 
						|
     
 | 
						|
     set VIDEO_TOP, 0 'enable video output
 | 
						|
     S = S + 5 : if S &&>= 45 then S = -40
 | 
						|
     set FG_COLOUR, &h3F : gosub 110 'draw cube
 | 
						|
     return
 | 
						|
     
 | 
						|
253: set VIDEO_TOP, 238 'disable video output
 | 
						|
     set FG_COLOUR, &h00 : gosub 200 'erase cube
 | 
						|
     
 | 
						|
     set VIDEO_TOP, 0 'enable video output
 | 
						|
     S = S - 5 : if S &&<= -45 then S = 40
 | 
						|
     set FG_COLOUR, &h3F : gosub 110 'draw cube
 | 
						|
     return |