
    OPT C-,O+
    SECTION YUMYUM,CODE_C

	INCLUDE	source:include/HARDWARE.I
	INCLUDE	MYMACROS.I

	INCLUDE	HWSTART.S

RASTERCHECK =   0   ;1 FOR TIMING BACKGROUND, 0 BLACK.

;CAN HANDLE UP TO ABOUT 210 STARS WITH NOTHING ELSE GOING ON...
NUMSTARS    =   200	;NO OF STARS TO CALC (NOT ALL ON SCREEN!!!)
					;MUST BE A MULTIPLE OF 2!

;SCREEN IS 352 ($2C WIDB), 268 HGT
NPL = 2
PLWIDW = 22
PLWIDB = PLWIDW*2
PLHGT  = 268
PLLEN = PLWIDB*PLHGT

CUSTOM	equ	$dff000


_BOOT
	LEA	CUSTOM,A6
	CATCHVB	A6	        			; Wait for VBL
	MOVE.W	#SETIT!DMAEN!BPLEN!BLTEN!COPEN,dmacon(A6)
									; DO NOT BLITTER NASTY! TRIPLE BUFFERED!

	BSR	InitStars	        		; Init stars + Star planes + persp tab
	BSR	StarDoubleBuffer			; Insert planes...

	MOVE.L	#MY_Copper,cop1lch(A6)	; Just set dma/ints and wait!
	MOVE.W	D0,COPJMP1(A6)
	MOVE.L	#MY_VBI,$6C.W
	MOVE.L	#(SETIT!INTEN!VERTB)*65536+$7FFF,intena(A6)
									; My ints + zap intreq!
; Run to button
.LP	MOUSE	.LP
	RTS	
 
 
MY_VBI
	MOVEM.L	D0-D7/A0-A6,-(SP)
	LEA	CUSTOM,A6

    IFNE    RASTERCHECK				; These conditionals just change
    MOVE.W  #$300,$180(A6)			; the background timing so I can see
    ENDC							; how long the code takes to execute!
;
	BSR	WipeOldStars				; Wipe old stars
	BSR	DoStars	        			; DO all stars...
;
    IFNE    RASTERCHECK
    MOVE.W  #0,$180(A6)
    ENDC

	MOVE.W	#INTEN!VERTB,intreq(A6)
	MOVEM.L	(SP)+,D0-D7/A0-A6
	RTE	
 


DoStars
	BSR	ChangeAngles		; Change viewing angle
	BSR	TLateStarVector		; Rotate star vector
	BSR	TLateStarCoords		; Move stars
	BSR	PlotStars			; PLot-them-all (bar clipping) 
	BSR	StarDoubleBuffer	; Triple buffer/wipe old
	RTS	
 
; Change angles and mod to size!
ChangeAngles
	LEA	AngAct(PC),A0
	LEA	AngMod(PC),A1
	MOVE.W	#$3FE,D3		; Angle mask
	MOVEM.W	(A0)+,D0-D2		; Get angles. NB MOVEM.W is sign extended to .L!
	ADD.W	(A1)+,D0		; Add angle change
	ADD.W	(A1)+,D1
	ADD.W	(A1)+,D2
	AND.W	D3,D0			; Clip angles...
	AND.W	D3,D1
	AND.W	D3,D2
	MOVEM.W	D0-D2,-6(A0)
	RTS	
 
TLateStarVector					;XY rotation only! Could put in Z for
								;further rotation... 
	LEA	Sintab(pc),A1			;WATCH for typing errors in commets below!
	LEA	$400(a1),A2				;Add pi by 4 for cos
	LEA	AngAct(PC),A3			;Angles
	MOVEM.W	StarCurV(PC),D0-D2
	MOVE.W	(A3)+,D6
	MOVE.W	(A1,D6.W),D5		;Get sin/cos
	MOVE.W	(A2,D6.W),D6
	MOVE.W	D1,D4
	MULS	D5,D4				;SX*Y
	MULS	D6,D1				;CX*Y
	MULS	D2,D5				;SX*Z
	SUB.L	D5,D1				;CX*Y-SX*Z
	ADD.L	D1,D1				;Divide by 32768
	SWAP	D1
	MULS	D6,D2				;CX*Z
	ADD.L	D4,D2				;SX*Y+CX*Z
	ADD.L	D2,D2				;Divide by 32768
	SWAP	D2

	MOVE.W	(A3),D6
	MOVE.W	(A1,D6.W),D5		;Get sin/cos
	MOVE.W	(A2,D6.W),D6
	MOVE.W	D0,D4			
	MULS	D5,D4				;SY*X
	MULS	D6,D0				;CY*X
	MULS	D2,D5				;SY*(SX*Y+CX*Z)
	SUB.L	D5,D0 				;CY*X-SY*SX*Y-SY*CX*Z
	ADD.L	D0,D0
	SWAP	D0					;DIVIDE BY 32768
	MULS	D6,D2				;CY*(SX*Y+CX*Z)
	ADD.L	D4,D2				;SY*X+SX*CY*Y+CX*CY*Z
	ADD.L	D2,D2				;DIVIDE DOWN
	SWAP	D2
	MOVEM.W	D0-D2,StarActV		;Save out rotated vector...
	RTS	
 
; Translate stars....
TLateStarCoords	LEA	StarList,A0
	MOVE.W	#$3FF,D3			; Max coordinate mask
	MOVEM.W	StarActV(PC),D4-D6
    MOVE.W  #(NUMSTARS/2)-1,D7
TLATESC_LP
	REPT	2			; repeat this lot a bit to cut down on dbra losses
	MOVEM.W	(A0)+,D0-D2			; Get coords
	ADD.W	D4,D0				; Add star vector
	ADD.W	D5,D1
	ADD.W	D6,D2
	AND.W	D3,D0				; Mask posn.				
	AND.W	D3,D1
	AND.W	D3,D2
	MOVEM.W	D0-D2,-6(A0)		; Put em back
	ENDR
    DBRA    D7,TLATESC_LP
	RTS	

 
PlotStars
	LEA	STarList,A0
	MOVE.L	StarDraw(PC),A1		; 1st bit plane
    LEA PLLEN(A1),A6			; 2nd -/-
	LEA	PerspTab,A2
	MOVE.W	PerspOffset(PC),D0
	ADD.W	D0,D0
	LEA	(A2,D0.W),A2
	LEA	134.W,A3	; Y-Centre
	LEA	176.W,A4	; X-Centre
	MOVE.W	#-$200,D5
	MOVE.W	#-$200,D6
	MOVE.W	#NUMSTARS-1,D7	; N stars (!)
PlotStar_lp
	MOVEM.W	(A0)+,D0-D2
	ADD.W	D5,D0			; Tlate!
	ADD.W	D6,D1
    MOVEM.W d0-D2,-(a7)
	ADD.W	D2,D2
	MOVE.W	(A2,D2.W),D2
	MULS	D2,D0
	SWAP	D0
	ADD.W	A4,D0			; Centre coord
	BMI.S	PlotStar_Skip	; Star too far left
	CMP.W	#351,D0			; Too far right
	BPL.S	PlotStar_Skip
	MULS	D2,D1
	SWAP	D1
	ADD.W	A3,D1			; Centre coord
	BMI.S	PlotStar_Skip	; Star too high ?
	CMP.W	#267,D1			; Star too low ?
	BPL.S	PlotStar_Skip
;
	MULU	#PLWIDB,D1			; Y * Bplane width
;
	MOVE.W	D0,D2
	LSR.W	#3,D2
	ADD.W	D2,D1			; Add X/8 byte offset
	NOT.W	D0	    		; Get bit shift value

	MOVEM.W	(A7)+,D2-D4		; Recover coords from stack...    		
    MULS    D2,D2			; Get distance^2 (pythagoras!)
    MULS    D3,D3
    MULS    D4,D4
    ADD.L   D3,D4
    ADD.L   D4,D2			; GET DISTANCE^2.L - USE THIS FOR COLS,OR...
    
    SWAP    D2				; 'DIVIDE' BY 65536
							; D2 IS NOW A ROUGH RANGE

;NOW CHECK D2 AGAINST SOME ARBITRARILY DECIDED VALUES TO CHECK FOR COLOUR.
;GUESS VALUES TO GET A GOOD RANGE OF COLOURS - SUGGEST PUT IN ZANY COLOURS
;LIKE YELLOW/PINK ETC. UNTIL YOU GET THE RANGE RIGHT!

;NB. TRY PLOTTING BOBS HERE (BLIT!!!), WITH VARYING SIZE ACCORDING TO D2.L
;(FROM BEFORE SWAP) FOR NEAT FX! SLOWS CODE TONNES THOUGH: LOWER NO. STARS

 	CMP.W	#4,D2			; CHECK AGAINST RANGE...
	BPL.S	.COL2 
    BSET    D0,(A1,D1.W)	; PIXEL COL 1
    BRA.S	.COL
.COL2    CMP.W   #8,d2
    BPL.S   .COL3
    BSET    D0,(A6,D1.W)	; PIXEL COL 2
    BRA.S	.COL
.COL3
	BSET	D0,(A1,D1.W)	; PIXEL COL 3
	BSET	D0,(A6,D1.W)	;
.COL	
	DBRA	D7,PlotStar_lp	; BAD bit of code here - 2 exits from a loop!
OUT	LEA	CUSTOM,A6
	RTS
		
PlotStar_Skip
    ADDQ	#6,A7			; Recover Stack
	DBRA	D7,PlotStar_lp
    BRA.S	OUT	
 
 
StarDoubleBuffer	; LIES! TRIPLE BUFFERED SO BLITTER CAN CLEAR
					; ONE SCREEN WHILE THE 68000 IS GOING PIXEL CRAZY!
;WAS OLD/NOW/NEXT					
	MOVE.L	StarShow(PC),D0		;GET NEXT
	MOVEM.L	StarWipe(PC),D1/D2	;GET OLD/NOW
	MOVEM.L	D0-D2,StarWipe	;NEXT/OLD/NOW
	MOVE.L	#PLLEN,D0
	MOVEQ.L	#1,D7
	LEA	CopSTptr(PC),A0
StarDoubleBuffer_lp
	MOVE.W	D2,4(A0)
	SWAP	D2
	MOVE.W	D2,(A0)
	SWAP	D2
	ADD.L	D0,D2
	ADDQ.L	#8,A0
	DBRA	D7,StarDoubleBuffer_lp
	RTS	
 
InitStars				;CREATE STARS / WIPE STAR PLANES / PERSP TABLE
	BSR	InitPtab
	BSR	InitStarPl
	BSR	MakeStarCoords
	RTS	
 
; Set up perspective table...
InitPTab
	LEA	PerspTab,A0
	MOVE.W	#470,D0		;PERSP FACTOR
	MOVE.W	D0,D1
	MOVE.W	#7999,D7
	MOVE.W	#$7FFF,D4
InitPTab_lp				;DO 470*Z*32768/INC
	MOVE.W	D4,D3
	MULU	D0,D3
	DIVU	D1,D3
	MOVE.W	D3,(A0)+
	ADDQ.W	#1,D1
	DBRA	D7,InitPTab_lp
	RTS	
 
; WIpes old star plane...
WipeOldStars
	MOVE.L	StarWipe(PC),D0
	MOVE.W	#(PLHGT*64*NPL)+PLWIDW,D1
	BSR.S	WIPE
	RTS	

;WIPE ALL STAR PLANES!
InitStarPl
	MOVE.L	StarWipe(PC),D0				;PL TO WIPE
	MOVE.W	#(PLHGT*NPL*64)+PLWIDW,D1	;BLTSIZE
	BSR.S	WIPE
	MOVE.L	StarDraw(PC),D0
	BSR.S	WIPE
	MOVE.L	STARShow(PC),D0
	BSR.S	WIPE
	BLITWAIT	A6
	RTS

WIPE	BLITWAIT	A6
	MOVE.L	#$01000000,bltcon0(A6)
	MOVE.L	D0,bltdpth(A6)
	CLR.W	bltdmod(A6)
	MOVE.W	D1,bltsize(A6)
	RTS
 
MakeStarCoords						; Random star posns
	LEA	StarList,A0
	MOVE.W	#$3FF,D1				; Max value
	MOVE.L	#$11081974,D2			; Seed : my birthday
	MOVE.W	#(NUMSTARS*3)-1,D7
MakeStarCoordsLp
	ROR.L	D2,D2					; Rot rand seed
	EOR.W	#$342E,D2				; Bit Feedback lark for random value... 
	NOT.L	D2
	ROR.L	D2,D2
	SWAP	D2
	ROL.L	D2,D2
	EOR.W	#$F613,D2
	SWAP	D2

	MOVE.W	D2,D0					; D0 is random no
	
	AND.W	D1,D0					; Mask to my size...
	MOVE.W	D0,(A0)+
	DBRA	D7,MakeStarCoordsLp
	RTS	
 
MY_Copper
	dc.w	diwstrt,$2A71,diwstop,$36D1
	dc.w	ddfstrt,$30,ddfstop,$D8
	dc.w	bplcon0,$2200
	dc.w	bplcon1,0,bplcon2,0
	dc.w	bpl1mod,0,bpl2mod,0

    IFEQ    RASTERCHECK
	dc.w	$0180,$000
    ENDC

    dc.w    $182,$888,$184,$666,$186,$444	;foreg. | mid | back. <-STAR COLS
	dc.w	bpl1pth
CopSTptr	dc.w	0,bpl1ptl,0
	dc.w	bpl2pth,0,bpl2ptl,0
	dc.w	$FFFF,$FFFE

AngAct	ds.w	3				; Actual x,y,z angles
AngMod	dc.w	4,6,8			; x,y,z angle additions
StarActV	dc.w	2,0,-16		; Actual star vector (rotated)

;Fiddle with these next values for even weirder FX!
StarCurV	dc.w	2,0,-16	    ; Initial star vector

StarWipe	    dc.l    SCREEN
StarDraw	    dc.l    SCREEN+2*PLLEN	;Draw on this
StarShow	dc.l	SCREEN+4*PLLEN

PerspOffset	dc.w	0

SinTab	; A SIN TABLE! I'D ASSEMBLE THIS AND 'INCBIN' IT AS A RAW FILE
		; USUALLY!
		
	DC.W	$0000,$0192,$0324,$04B6,$0648,$07D9,$096B,$0AFB
	DC.W	$0C8C,$0E1C,$0FAB,$113A,$12C8,$1455,$15E2,$176E
	DC.W	$18F9,$1A82,$1C0B,$1D93,$1F1A,$209F,$2223,$23A6
	DC.W	$2528,$26A8,$2827,$29A4,$2B1F,$2C99,$2E11,$2F87
	DC.W	$30FB,$326E,$33DF,$354D,$36BA,$3824,$398D,$3AF3
	DC.W	$3C56,$3DB8,$3F17,$4074,$41CE,$4325,$447B,$45CD
	DC.W	$471D,$486A,$49B4,$4AFB,$4C3F,$4D81,$4EC0,$4FFB
	DC.W	$5133,$5269,$539B,$54CA,$55F5,$571D,$5842,$5964
	DC.W	$5A82,$5B9D,$5CB4,$5DC7,$5ED7,$5FE3,$60EC,$61F0
	DC.W	$62F1,$63EF,$64E8,$65DD,$66CF,$67BC,$68A6,$698C
	DC.W	$6A6D,$6B4A,$6C24,$6CF9,$6DC9,$6E96,$6F5E,$7022
	DC.W	$70E2,$719E,$7255,$7307,$73B5,$745F,$7504,$75A5
	DC.W	$7641,$76D9,$776C,$77FA,$7884,$7909,$7989,$7A05
	DC.W	$7A7C,$7AEE,$7B5C,$7BC5,$7C29,$7C88,$7CE3,$7D39
	DC.W	$7D89,$7DD5,$7E1D,$7E5F,$7E9D,$7ED5,$7F08,$7F37
	DC.W	$7F61,$7F86,$7FA6,$7FC1,$7FD8,$7FE9,$7FF5,$7FFD
	DC.W	$7FFF,$7FFD,$7FF5,$7FE9,$7FD8,$7FC1,$7FA6,$7F86
	DC.W	$7F61,$7F37,$7F09,$7ED5,$7E9C,$7E5F,$7E1D,$7DD5
	DC.W	$7D89,$7D39,$7CE3,$7C88,$7C29,$7BC5,$7B5C,$7AEE
	DC.W	$7A7C,$7A05,$7989,$7909,$7884,$77FA,$776B,$76D8
	DC.W	$7641,$75A5,$7504,$745F,$73B5,$7307,$7254,$719D
	DC.W	$70E2,$7022,$6F5E,$6E96,$6DC9,$6CF8,$6C23,$6B4A
	DC.W	$6A6D,$698B,$68A6,$67BC,$66CF,$65DD,$64E8,$63EE
	DC.W	$62F1,$61F0,$60EB,$5FE3,$5ED7,$5DC7,$5CB3,$5B9C
	DC.W	$5A82,$5963,$5842,$571D,$55F5,$54C9,$539A,$5268
	DC.W	$5133,$4FFB,$4EBF,$4D81,$4C3F,$4AFB,$49B3,$4869
	DC.W	$471C,$45CC,$447A,$4325,$41CD,$4073,$3F16,$3DB7
	DC.W	$3C56,$3AF2,$398C,$3824,$36B9,$354D,$33DE,$326E
	DC.W	$30FB,$2F87,$2E10,$2C98,$2B1E,$29A3,$2826,$26A7
	DC.W	$2527,$23A6,$2223,$209F,$1F19,$1D93,$1C0B,$1A82
	DC.W	$18F8,$176D,$15E1,$1455,$12C7,$1139,$0FAA,$0E1B
	DC.W	$0C8B,$0AFB,$096A,$07D9,$0647,$04B5,$0324,$0191
	DC.W	$0000,$FE6E,$FCDC,$FB4A,$F9B9,$F827,$F696,$F505
	DC.W	$F375,$F1E5,$F055,$EEC6,$ED38,$EBAB,$EA1E,$E893
	DC.W	$E708,$E57E,$E3F5,$E26D,$E0E6,$DF61,$DDDD,$DC5A
	DC.W	$DAD8,$D958,$D7DA,$D65D,$D4E1,$D368,$D1EF,$D079
	DC.W	$CF05,$CD92,$CC22,$CAB3,$C946,$C7DC,$C674,$C50E
	DC.W	$C3AA,$C248,$C0E9,$BF8D,$BE32,$BCDB,$BB86,$BA33
	DC.W	$B8E4,$B797,$B64D,$B505,$B3C1,$B27F,$B141,$B005
	DC.W	$AECD,$AD98,$AC65,$AB37,$AA0B,$A8E3,$A7BE,$A69C
	DC.W	$A57E,$A464,$A34D,$A239,$A129,$A01D,$9F15,$9E10
	DC.W	$9D0F,$9C12,$9B18,$9A23,$9931,$9844,$975A,$9675
	DC.W	$9593,$94B6,$93DD,$9308,$9237,$916A,$90A2,$8FDE
	DC.W	$8F1E,$8E63,$8DAC,$8CF9,$8C4B,$8BA1,$8AFC,$8A5B
	DC.W	$89BF,$8928,$8895,$8806,$877C,$86F7,$8677,$85FB
	DC.W	$8584,$8512,$84A4,$843B,$83D7,$8378,$831D,$82C7
	DC.W	$8277,$822B,$81E3,$81A1,$8164,$812B,$80F7,$80C9
	DC.W	$809F,$807A,$805A,$803F,$8028,$8017,$800B,$8003
	DC.W	$8001,$8003,$800B,$8017,$8028,$803F,$805A,$807A
	DC.W	$809F,$80C9,$80F7,$812B,$8164,$81A1,$81E3,$822B
	DC.W	$8277,$82C8,$831D,$8378,$83D7,$843B,$84A4,$8512
	DC.W	$8584,$85FB,$8677,$86F7,$877D,$8806,$8895,$8928
	DC.W	$89BF,$8A5C,$8AFC,$8BA1,$8C4B,$8CF9,$8DAC,$8E63
	DC.W	$8F1E,$8FDE,$90A2,$916A,$9237,$9308,$93DD,$94B6
	DC.W	$9594,$9675,$975A,$9844,$9932,$9A23,$9B19,$9C12
	DC.W	$9D0F,$9E10,$9F15,$A01D,$A12A,$A23A,$A34D,$A464
	DC.W	$A57F,$A69D,$A7BE,$A8E3,$AA0B,$AB37,$AC66,$AD98
	DC.W	$AECD,$B006,$B141,$B280,$B3C1,$B506,$B64D,$B797
	DC.W	$B8E4,$BA34,$BB86,$BCDB,$BE33,$BF8D,$C0EA,$C249
	DC.W	$C3AA,$C50E,$C674,$C7DD,$C947,$CAB4,$CC22,$CD93
	DC.W	$CF05,$D07A,$D1F0,$D368,$D4E2,$D65D,$D7DA,$D959
	DC.W	$DAD9,$DC5B,$DDDD,$DF62,$E0E7,$E26E,$E3F5,$E57E
	DC.W	$E708,$E893,$EA1F,$EBAC,$ED39,$EEC7,$F056,$F1E5
	DC.W	$F375,$F506,$F696,$F828,$F9B9,$FB4B,$FCDD,$FE6F
	DC.W	$7FFF,$7FFD,$7FF5,$7FE9,$7FD8,$7FC1,$7FA6,$7F86
	DC.W	$7F61,$7F37,$7F09,$7ED5,$7E9C,$7E5F,$7E1D,$7DD5
	DC.W	$7D89,$7D39,$7CE3,$7C88,$7C29,$7BC5,$7B5C,$7AEE
	DC.W	$7A7C,$7A05,$7989,$7909,$7884,$77FA,$776B,$76D8
	DC.W	$7641,$75A5,$7504,$745F,$73B5,$7307,$7254,$719D
	DC.W	$70E2,$7022,$6F5E,$6E96,$6DC9,$6CF8,$6C23,$6B4A
	DC.W	$6A6D,$698B,$68A6,$67BC,$66CF,$65DD,$64E8,$63EE
	DC.W	$62F1,$61F0,$60EB,$5FE3,$5ED7,$5DC7,$5CB3,$5B9C
	DC.W	$5A82,$5963,$5842,$571D,$55F5,$54C9,$539A,$5268
	DC.W	$5133,$4FFB,$4EBF,$4D81,$4C3F,$4AFB,$49B3,$4869
	DC.W	$471C,$45CC,$447A,$4325,$41CD,$4073,$3F16,$3DB7
	DC.W	$3C56,$3AF2,$398C,$3824,$36B9,$354D,$33DE,$326E
	DC.W	$30FB,$2F87,$2E10,$2C98,$2B1E,$29A3,$2826,$26A7
	DC.W	$2527,$23A6,$2223,$209F,$1F19,$1D93,$1C0B,$1A82
	DC.W	$18F8,$176D,$15E1,$1455,$12C7,$1139,$0FAA,$0E1B
	DC.W	$0C8B,$0AFB,$096A,$07D9,$0647,$04B5,$0324,$0191
	DC.W	$0000,$FE6E,$FCDC,$FB4A,$F9B9,$F827,$F696,$F505
	DC.W	$F375,$F1E5,$F055,$EEC6,$ED38,$EBAB,$EA1E,$E893
	DC.W	$E708,$E57E,$E3F5,$E26D,$E0E6,$DF61,$DDDD,$DC5A
	DC.W	$DAD8,$D958,$D7DA,$D65D,$D4E1,$D368,$D1EF,$D079
	DC.W	$CF05,$CD92,$CC22,$CAB3,$C946,$C7DC,$C674,$C50E
	DC.W	$C3AA,$C248,$C0E9,$BF8D,$BE32,$BCDB,$BB86,$BA33
	DC.W	$B8E4,$B797,$B64D,$B505,$B3C1,$B27F,$B141,$B005
	DC.W	$AECD,$AD98,$AC65,$AB37,$AA0B,$A8E3,$A7BE,$A69C
	DC.W	$A57E,$A464,$A34D,$A239,$A129,$A01D,$9F15,$9E10
	DC.W	$9D0F,$9C12,$9B18,$9A23,$9931,$9844,$975A,$9675
	DC.W	$9593,$94B6,$93DD,$9308,$9237,$916A,$90A2,$8FDE
	DC.W	$8F1E,$8E63,$8DAC,$8CF9,$8C4B,$8BA1,$8AFC,$8A5B
	DC.W	$89BF,$8928,$8895,$8806,$877C,$86F7,$8677,$85FB
	DC.W	$8584,$8512,$84A4,$843B,$83D7,$8378,$831D,$82C7
	DC.W	$8277,$822B,$81E3,$81A1,$8164,$812B,$80F7,$80C9
	DC.W	$809F,$807A,$805A,$803F,$8028,$8017,$800B,$8003
	DC.W	$8001,$8003,$800B,$8017,$8028,$803F,$805A,$807A
	DC.W	$809F,$80C9,$80F7,$812B,$8164,$81A1,$81E3,$822B
	DC.W	$8277,$82C8,$831D,$8378,$83D7,$843B,$84A4,$8512
	DC.W	$8584,$85FB,$8677,$86F7,$877D,$8806,$8895,$8928
	DC.W	$89BF,$8A5C,$8AFC,$8BA1,$8C4B,$8CF9,$8DAC,$8E63
	DC.W	$8F1E,$8FDE,$90A2,$916A,$9237,$9308,$93DD,$94B6
	DC.W	$9594,$9675,$975A,$9844,$9932,$9A23,$9B19,$9C12
	DC.W	$9D0F,$9E10,$9F15,$A01D,$A12A,$A23A,$A34D,$A464
	DC.W	$A57F,$A69D,$A7BE,$A8E3,$AA0B,$AB37,$AC66,$AD98
	DC.W	$AECD,$B006,$B141,$B280,$B3C1,$B506,$B64D,$B797
	DC.W	$B8E4,$BA34,$BB86,$BCDB,$BE33,$BF8D,$C0EA,$C249
	DC.W	$C3AA,$C50E,$C674,$C7DD,$C947,$CAB4,$CC22,$CD93
	DC.W	$CF05,$D07A,$D1F0,$D368,$D4E2,$D65D,$D7DA,$D959
	DC.W	$DAD9,$DC5B,$DDDD,$DF62,$E0E7,$E26E,$E3F5,$E57E
	DC.W	$E708,$E893,$EA1F,$EBAC,$ED39,$EEC7,$F056,$F1E5
	DC.W	$F375,$F506,$F696,$F828,$F9B9,$FB4B,$FCDD,$FE6F
	DC.W	$0000,$0192,$0324,$04B6,$0648,$07D9,$096B,$0AFB
	DC.W	$0C8C,$0E1C,$0FAB,$113A,$12C8,$1455,$15E2,$176E
	DC.W	$18F9,$1A82,$1C0B,$1D93,$1F1A,$209F,$2223,$23A6
	DC.W	$2528,$26A8,$2827,$29A4,$2B1F,$2C99,$2E11,$2F87
	DC.W	$30FB,$326E,$33DF,$354D,$36BA,$3824,$398D,$3AF3
	DC.W	$3C56,$3DB8,$3F17,$4074,$41CE,$4325,$447B,$45CD
	DC.W	$471D,$486A,$49B4,$4AFB,$4C3F,$4D81,$4EC0,$4FFB
	DC.W	$5133,$5269,$539B,$54CA,$55F5,$571D,$5842,$5964
	DC.W	$5A82,$5B9D,$5CB4,$5DC7,$5ED7,$5FE3,$60EC,$61F0
	DC.W	$62F1,$63EF,$64E8,$65DD,$66CF,$67BC,$68A6,$698C
	DC.W	$6A6D,$6B4A,$6C24,$6CF9,$6DC9,$6E96,$6F5E,$7022
	DC.W	$70E2,$719E,$7255,$7307,$73B5,$745F,$7504,$75A5
	DC.W	$7641,$76D9,$776C,$77FA,$7884,$7909,$7989,$7A05
	DC.W	$7A7C,$7AEE,$7B5C,$7BC5,$7C29,$7C88,$7CE3,$7D39
	DC.W	$7D89,$7DD5,$7E1D,$7E5F,$7E9D,$7ED5,$7F08,$7F37
	DC.W	$7F61,$7F86,$7FA6,$7FC1,$7FD8,$7FE9,$7FF5,$7FFD

    SECTION	VIEWME,BSS_C

PerspTab    ds.w    8000		;Perspective
StarList    ds.w    NUMSTARS*3	;Star coords
SCREEN      DS.B	6*PLLEN		;View planes
