; Path: pdxgate!reed!batcomputer!rpi!zaphod.mps.ohio-state.edu!cs.utexas.edu!uunet!mcsun!sunic!ugle.unit.no!aun.uninett.no!nuug!ifi.uio.no!larshaug
; From: larshaug@ifi.uio.no (Lars Haugseth)
; Newsgroups: alt.sys.amiga.demos
; Subject: Re: Writing a StarField. Which method is best?
; Message-ID: <1992Nov11.131803.1276@ifi.uio.no>
; Date: 11 Nov 92 13:18:03 GMT
; References: <1992Nov7.104910.60476@cc.usu.edu>
; Sender: larshaug@ifi.uio.no (Lars Haugseth)
; Organization: Dept. of Informatics, University of Oslo, Norway
; Lines: 600
; Nntp-Posting-Host: skalk.ifi.uio.no
; Originator: larshaug@skalk.ifi.uio.no
;
; Here is a small 3D-stars routine, with sine-table and all...
; I have programmed it in AsmOne, but it should work on most
; assemblers without much work.
;
; No flames about coding-technique, please. After all, this is
; alt.sys.amiga.DEMOS ;-)
;
; You can have almost twice as many stars pr.frame if
; you make some heavy tables to avoid the mulus in the
; star-plotting loop. This you'll have to do youself :)
;
; If you can manage more than 810 stars each frame on a plain
; 68000 Amiga500, send me a mail, ok? :)
;
; larshaug@ifi.uio.no (Perplex/PMC)
;
;---------------------------------------
; 3D STARFIELD
;---------------------------------------

NSTARS	= 435		; Number of stars

;---------------------------------------

	SECTION code,code_p

START	move.l	4.w,a6
	move.l	156(a6),a1
	move.l	38(a1),OLDCP
	bsr	SBUFFER
	bsr	VBLANK
	move.l	#COPPER,$DFF080
	clr.w	$DFF088
	move.w	$DFF01C,OLDIQ
	move.w	$DFF002,OLDCR
	or.w	#$8000,OLDIQ
	or.w	#$8000,OLDCR
	move.w	#$7FFF,$DFF09A
	move.w	#$7FFF,$DFF096
	move.w	#$87C0,$DFF096
	move.w	#$0000,$DFF180

;---------------------------------------

ICOORDS	lea	SCOORDS,a0		; Randomize coordinates
	move.w	#NSTARS-1,d7
ICOO1	bsr	GETRND
	and.w	#$1FFF,d0
	move.w	d0,(a0)+
	bsr	GETRND
	and.w	#$1FFF,d0
	move.w	d0,(a0)+
	bsr	GETRND
	and.w	#$1FFF,d0
	move.w	d0,(a0)+
	dbf	d7,ICOO1

;---------------------------------------

IPERSP	lea	PERSTAB,a0		; Construct perspective table
	moveq	#0,d1
	move.l	#$95FFFF,d0
IPER1	move.l	d0,d2
	move.l	d1,d3
	add.w	#300,d3
	divu	d3,d2
	move.w	d2,(a0)+
	addq.l	#1,d1
	cmp.l	#$2000,d1
	bne.s	IPER1

;---------------------------------------

IPLOT	lea	PLTXTAB,a0		; Construct plot tables
	lea	PLTBTAB,a1
	lea	PLTYTAB,a2
	moveq	#0,d0
IPLO1	move.w	d0,d1
	lsr.w	#3,d1
	move.w	d1,(a0)+
	move.w	d0,d1
	eor.w	#$FFFF,d1
	and.w	#7,d1
	move.w	d1,(a1)+
	cmp.w	#272,d0
	bge.s	IPLO2
	move.w	d0,d1
	mulu	#88,d1
	move.w	d1,(a2)+
IPLO2	addq.w	#1,d0
	cmp.w	#352,d0
	bne.s	IPLO1

;---------------------------------------

MAIN	bsr.s	VBLANK			; Main loop

	move.w	#$000,$DFF180

	btst	#2,$DFF016		; Freeze?
	beq.s	MAIN

	bsr	SANIM
	bsr	SBUFFER
	bsr	SCLEAR
	bsr	SDRAW

	move.w	#$005,$DFF180

	btst	#6,$BFE001		; Exit?
	bne.s	MAIN

;---------------------------------------

EXIT	move.w	OLDIQ,$DFF09A
	move.l	OLDCP,$DFF080
	move.w	OLDCR,$DFF096
	clr.w	$DFF088
	rts

;---------------------------------------

VBLANK	cmp.b	#0,$DFF006
	bne.s	VBLANK
	btst	#0,$DFF005
	beq.s	VBLANK
	rts

WAITB	nop
	btst	#6,$DFF002
	bne.s	WAITB
	rts

;---------------------------------------

GETRND	bsr.s	GRN1			; Get random word
	and.w	#$FF,d5
	move.w	d5,d0
	lsl.w	#8,d0
	bsr.s	GRN1
	and.w	#$FF,d5
	or.w	d5,d0
	rts

GRN1	move.b	$DFF007,d5		; Get random byte
	move.b	$BFD800,d6
	eor.b	d6,d5
	moveq	#0,d6
	move.b	d5,d6
	ror.b	#1,d6
GRN2	dbf	d6,GRN2
	rts

;---------------------------------------

SDRAW	lea	SCOORDS,a0		; Draw starfield
	lea	PERSTAB,a1
	lea	PLTXTAB,a2
	lea	PLTBTAB,a3
	lea	PLTYTAB,a4
	move.l	SFPTR+4,a6

	move.l	a7,SAVEA7
	lea	$1000.w,a7

	movem.w	SXADD,d3-d4/a5
	add.w	#$1000,d3
	add.w	#$1000,d4
	move.w	#$1FFF,d5

	move.w	#NSTARS-1,d7

SDRW1	movem.w	(a0)+,d0-d2		; Get coordinates
	add.w	d3,d0			; X-movement
	and.w	d5,d0
	sub.w	a7,d0
	add.w	d4,d1			; Y-movement
	and.w	d5,d1
	sub.w	a7,d1
	add.w	a5,d2			; Z-movement
	and.w	d5,d2

	add.w	d2,d2
	move.w	(a1,d2.w),d6
	muls	d6,d0			; X-projection
	swap	d0
	add.w	#176,d0
	cmp.w	#351,d0
	bhi.s	SDRW3
	muls	d6,d1			; Y-projection
	swap	d1
	add.w	#136,d1
	cmp.w	#271,d1
	bhi.s	SDRW3

	add.w	d0,d0
	add.w	d1,d1
	move.w	(a4,d1.w),d6
	add.w	(a2,d0.w),d6
	move.w	(a3,d0.w),d0

	cmp.w	#$2400,d2
	bgt.s	SDRW2

	bset	d0,(a6,d6.w)
	dbf	d7,SDRW1
	bra.s	SPLOTX

SDRW2:	bset	d0,$2C(a6,d6.w)
SDRW3:	dbf	d7,SDRW1

SPLOTX:	move.l	SAVEA7,a7
	rts

;---------------------------------------

SCLEAR	bsr	WAITB			; Clear starfield
	move.l	SFPTR+8,$DFF054
	move.w	#0,$DFF066
	move.l	#$01000000,$DFF040
	move.w	#64*272+44,$DFF058
	rts

;---------------------------------------

SBUFFER	lea	SFPTR,a0		; Triple buffering
	movem.l	(a0),d0-d2
	exg	d0,d1
	exg	d1,d2
	movem.l	d0-d2,(a0)
	move.l	SFPTR,d0
	move.l	SFPTR,d1
	add.l	#$002C,d1
	move.w	d0,C1PL1+6
	swap	d0
	move.w	d0,C1PL1+2
	move.w	d1,C1PL2+6
	swap	d1
	move.w	d1,C1PL2+2
	rts

;---------------------------------------

SANIM	lea	SSINUS,a0		; Animate star-movement
	move.w	SXPOS,d0
	move.w	SYPOS,d1
	move.w	SZPOS,d2
	add.w	SXSPD,d0
	add.w	SYSPD,d1
	add.w	SZSPD,d2
	and.w	#$7FE,d0
	and.w	#$7FE,d1
	and.w	#$7FE,d2
	move.w	d0,SXPOS
	move.w	d1,SYPOS
	move.w	d2,SZPOS
	move.w	SXADD,d3
	move.w	SYADD,d4
	move.w	SZADD,d5
	add.w	(a0,d0.w),d3
	add.w	(a0,d1.w),d4
	add.w	(a0,d2.w),d5
	move.w	d3,SXADD
	move.w	d4,SYADD
	move.w	d5,SZADD

	rts

;---------------------------------------

	SECTION copper,data_c

COPPER	dc.w	$0092,$0030
	dc.w	$0094,$00D8
	dc.w	$008E,$2C71
	dc.w	$0090,$2CD1
	dc.w	$0102,$0000
	dc.w	$0108,$002C
	dc.w	$010A,$002C

	dc.w	$2307,$FFFE
	dc.w	$0182,$0DDD
	dc.w	$0184,$0888
	dc.w	$0186,$0DDD

	dc.w	$2407,$FFFE
	dc.w	$0100,$2200
C1PL1	dc.w	$00E0,$0000
	dc.w	$00E2,$0000
C1PL2	dc.w	$00E4,$0000
	dc.w	$00E6,$0000

	dc.w	$FFDF,$FFFE
	dc.w	$3407,$FFFE
	dc.w	$0100,$0000

	dc.w	$FFFF,$FFFE

;---------------------------------------

	SECTION data,data_p

OLDSP	dc.l	0			; Temporaries
OLDCP	dc.l	0
OLDCR	dc.w	0
OLDIQ	dc.w	0

SAVEA7	dc.l	0

SXADD	dc.w	33			; Star movement
SYADD	dc.w	12
SZADD	dc.w	-114

SXPOS	dc.w	0			; Sinus positions
SYPOS	dc.w	$136
SZPOS	dc.w	$500

SXSPD	dc.w	-4			; Sinus speeds
SYSPD	dc.w	6
SZSPD	dc.w	2

SFPTR	dc.l	SPLANE1			; Starfield pointers
	dc.l	SPLANE2
	dc.l	SPLANE3

SCOORDS	blk.w	3*NSTARS		; Star coordinates

PERSTAB	blk.w	$2000,0			; Perspective table

PLTXTAB	blk.w	352,0			; Plot tables
PLTBTAB	blk.w	352,0
PLTYTAB	blk.w	272,0

;---------------------------------------

SSINUS	DC.B	$00,$00,$00,$00,$00,$00,$00,$01
	DC.B	$00,$01,$00,$02,$00,$02,$00,$03
	DC.B	$00,$03,$00,$03,$00,$04,$00,$04
	DC.B	$00,$05,$00,$05,$00,$06,$00,$06
	DC.B	$00,$06,$00,$07,$00,$07,$00,$08
	DC.B	$00,$08,$00,$09,$00,$09,$00,$09
	DC.B	$00,$0A,$00,$0A,$00,$0B,$00,$0B
	DC.B	$00,$0B,$00,$0C,$00,$0C,$00,$0D
	DC.B	$00,$0D,$00,$0E,$00,$0E,$00,$0E
	DC.B	$00,$0F,$00,$0F,$00,$10,$00,$10
	DC.B	$00,$11,$00,$11,$00,$11,$00,$12
	DC.B	$00,$12,$00,$13,$00,$13,$00,$13
	DC.B	$00,$14,$00,$14,$00,$15,$00,$15
	DC.B	$00,$15,$00,$16,$00,$16,$00,$17
	DC.B	$00,$17,$00,$18,$00,$18,$00,$18
	DC.B	$00,$19,$00,$19,$00,$1A,$00,$1A
	DC.B	$00,$1A,$00,$1B,$00,$1B,$00,$1B
	DC.B	$00,$1C,$00,$1C,$00,$1D,$00,$1D
	DC.B	$00,$1D,$00,$1E,$00,$1E,$00,$1F
	DC.B	$00,$1F,$00,$1F,$00,$20,$00,$20
	DC.B	$00,$21,$00,$21,$00,$21,$00,$22
	DC.B	$00,$22,$00,$22,$00,$23,$00,$23
	DC.B	$00,$24,$00,$24,$00,$24,$00,$25
	DC.B	$00,$25,$00,$25,$00,$26,$00,$26
	DC.B	$00,$26,$00,$27,$00,$27,$00,$27
	DC.B	$00,$28,$00,$28,$00,$29,$00,$29
	DC.B	$00,$29,$00,$2A,$00,$2A,$00,$2A
	DC.B	$00,$2B,$00,$2B,$00,$2B,$00,$2C
	DC.B	$00,$2C,$00,$2C,$00,$2D,$00,$2D
	DC.B	$00,$2D,$00,$2E,$00,$2E,$00,$2E
	DC.B	$00,$2F,$00,$2F,$00,$2F,$00,$2F
	DC.B	$00,$30,$00,$30,$00,$30,$00,$31
	DC.B	$00,$31,$00,$31,$00,$32,$00,$32
	DC.B	$00,$32,$00,$33,$00,$33,$00,$33
	DC.B	$00,$33,$00,$34,$00,$34,$00,$34
	DC.B	$00,$35,$00,$35,$00,$35,$00,$35
	DC.B	$00,$36,$00,$36,$00,$36,$00,$36
	DC.B	$00,$37,$00,$37,$00,$37,$00,$38
	DC.B	$00,$38,$00,$38,$00,$38,$00,$39
	DC.B	$00,$39,$00,$39,$00,$39,$00,$3A
	DC.B	$00,$3A,$00,$3A,$00,$3A,$00,$3A
	DC.B	$00,$3B,$00,$3B,$00,$3B,$00,$3B
	DC.B	$00,$3C,$00,$3C,$00,$3C,$00,$3C
	DC.B	$00,$3C,$00,$3D,$00,$3D,$00,$3D
	DC.B	$00,$3D,$00,$3D,$00,$3E,$00,$3E
	DC.B	$00,$3E,$00,$3E,$00,$3E,$00,$3F
	DC.B	$00,$3F,$00,$3F,$00,$3F,$00,$3F
	DC.B	$00,$40,$00,$40,$00,$40,$00,$40
	DC.B	$00,$40,$00,$40,$00,$41,$00,$41
	DC.B	$00,$41,$00,$41,$00,$41,$00,$41
	DC.B	$00,$41,$00,$42,$00,$42,$00,$42
	DC.B	$00,$42,$00,$42,$00,$42,$00,$42
	DC.B	$00,$43,$00,$43,$00,$43,$00,$43
	DC.B	$00,$43,$00,$43,$00,$43,$00,$43
	DC.B	$00,$43,$00,$44,$00,$44,$00,$44
	DC.B	$00,$44,$00,$44,$00,$44,$00,$44
	DC.B	$00,$44,$00,$44,$00,$44,$00,$44
	DC.B	$00,$44,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$45,$00,$45,$00,$45,$00,$45
	DC.B	$00,$44,$00,$44,$00,$44,$00,$44
	DC.B	$00,$44,$00,$44,$00,$44,$00,$44
	DC.B	$00,$44,$00,$44,$00,$44,$00,$43
	DC.B	$00,$43,$00,$43,$00,$43,$00,$43
	DC.B	$00,$43,$00,$43,$00,$43,$00,$43
	DC.B	$00,$42,$00,$42,$00,$42,$00,$42
	DC.B	$00,$42,$00,$42,$00,$42,$00,$42
	DC.B	$00,$41,$00,$41,$00,$41,$00,$41
	DC.B	$00,$41,$00,$41,$00,$40,$00,$40
	DC.B	$00,$40,$00,$40,$00,$40,$00,$40
	DC.B	$00,$3F,$00,$3F,$00,$3F,$00,$3F
	DC.B	$00,$3F,$00,$3F,$00,$3E,$00,$3E
	DC.B	$00,$3E,$00,$3E,$00,$3E,$00,$3D
	DC.B	$00,$3D,$00,$3D,$00,$3D,$00,$3D
	DC.B	$00,$3C,$00,$3C,$00,$3C,$00,$3C
	DC.B	$00,$3B,$00,$3B,$00,$3B,$00,$3B
	DC.B	$00,$3B,$00,$3A,$00,$3A,$00,$3A
	DC.B	$00,$3A,$00,$39,$00,$39,$00,$39
	DC.B	$00,$39,$00,$38,$00,$38,$00,$38
	DC.B	$00,$38,$00,$37,$00,$37,$00,$37
	DC.B	$00,$37,$00,$36,$00,$36,$00,$36
	DC.B	$00,$36,$00,$35,$00,$35,$00,$35
	DC.B	$00,$34,$00,$34,$00,$34,$00,$34
	DC.B	$00,$33,$00,$33,$00,$33,$00,$32
	DC.B	$00,$32,$00,$32,$00,$31,$00,$31
	DC.B	$00,$31,$00,$31,$00,$30,$00,$30
	DC.B	$00,$30,$00,$2F,$00,$2F,$00,$2F
	DC.B	$00,$2E,$00,$2E,$00,$2E,$00,$2D
	DC.B	$00,$2D,$00,$2D,$00,$2C,$00,$2C
	DC.B	$00,$2C,$00,$2B,$00,$2B,$00,$2B
	DC.B	$00,$2A,$00,$2A,$00,$2A,$00,$29
	DC.B	$00,$29,$00,$29,$00,$28,$00,$28
	DC.B	$00,$28,$00,$27,$00,$27,$00,$27
	DC.B	$00,$26,$00,$26,$00,$26,$00,$25
	DC.B	$00,$25,$00,$24,$00,$24,$00,$24
	DC.B	$00,$23,$00,$23,$00,$23,$00,$22
	DC.B	$00,$22,$00,$21,$00,$21,$00,$21
	DC.B	$00,$20,$00,$20,$00,$20,$00,$1F
	DC.B	$00,$1F,$00,$1E,$00,$1E,$00,$1E
	DC.B	$00,$1D,$00,$1D,$00,$1C,$00,$1C
	DC.B	$00,$1C,$00,$1B,$00,$1B,$00,$1B
	DC.B	$00,$1A,$00,$1A,$00,$19,$00,$19
	DC.B	$00,$19,$00,$18,$00,$18,$00,$17
	DC.B	$00,$17,$00,$16,$00,$16,$00,$16
	DC.B	$00,$15,$00,$15,$00,$14,$00,$14
	DC.B	$00,$14,$00,$13,$00,$13,$00,$12
	DC.B	$00,$12,$00,$12,$00,$11,$00,$11
	DC.B	$00,$10,$00,$10,$00,$0F,$00,$0F
	DC.B	$00,$0F,$00,$0E,$00,$0E,$00,$0D
	DC.B	$00,$0D,$00,$0D,$00,$0C,$00,$0C
	DC.B	$00,$0B,$00,$0B,$00,$0A,$00,$0A
	DC.B	$00,$0A,$00,$09,$00,$09,$00,$08
	DC.B	$00,$08,$00,$07,$00,$07,$00,$07
	DC.B	$00,$06,$00,$06,$00,$05,$00,$05
	DC.B	$00,$04,$00,$04,$00,$04,$00,$03
	DC.B	$00,$03,$00,$02,$00,$02,$00,$01
	DC.B	$00,$01,$00,$01,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$FF,$FF,$FF,$FF
	DC.B	$FF,$FF,$FF,$FE,$FF,$FE,$FF,$FD
	DC.B	$FF,$FD,$FF,$FC,$FF,$FC,$FF,$FC
	DC.B	$FF,$FB,$FF,$FB,$FF,$FA,$FF,$FA
	DC.B	$FF,$F9,$FF,$F9,$FF,$F9,$FF,$F8
	DC.B	$FF,$F8,$FF,$F7,$FF,$F7,$FF,$F6
	DC.B	$FF,$F6,$FF,$F6,$FF,$F5,$FF,$F5
	DC.B	$FF,$F4,$FF,$F4,$FF,$F3,$FF,$F3
	DC.B	$FF,$F3,$FF,$F2,$FF,$F2,$FF,$F1
	DC.B	$FF,$F1,$FF,$F1,$FF,$F0,$FF,$F0
	DC.B	$FF,$EF,$FF,$EF,$FF,$EE,$FF,$EE
	DC.B	$FF,$EE,$FF,$ED,$FF,$ED,$FF,$EC
	DC.B	$FF,$EC,$FF,$EC,$FF,$EB,$FF,$EB
	DC.B	$FF,$EA,$FF,$EA,$FF,$EA,$FF,$E9
	DC.B	$FF,$E9,$FF,$E8,$FF,$E8,$FF,$E7
	DC.B	$FF,$E7,$FF,$E7,$FF,$E6,$FF,$E6
	DC.B	$FF,$E5,$FF,$E5,$FF,$E5,$FF,$E4
	DC.B	$FF,$E4,$FF,$E4,$FF,$E3,$FF,$E3
	DC.B	$FF,$E2,$FF,$E2,$FF,$E2,$FF,$E1
	DC.B	$FF,$E1,$FF,$E0,$FF,$E0,$FF,$E0
	DC.B	$FF,$DF,$FF,$DF,$FF,$DF,$FF,$DE
	DC.B	$FF,$DE,$FF,$DD,$FF,$DD,$FF,$DD
	DC.B	$FF,$DC,$FF,$DC,$FF,$DC,$FF,$DB
	DC.B	$FF,$DB,$FF,$DA,$FF,$DA,$FF,$DA
	DC.B	$FF,$D9,$FF,$D9,$FF,$D9,$FF,$D8
	DC.B	$FF,$D8,$FF,$D8,$FF,$D7,$FF,$D7
	DC.B	$FF,$D7,$FF,$D6,$FF,$D6,$FF,$D6
	DC.B	$FF,$D5,$FF,$D5,$FF,$D5,$FF,$D4
	DC.B	$FF,$D4,$FF,$D4,$FF,$D3,$FF,$D3
	DC.B	$FF,$D3,$FF,$D2,$FF,$D2,$FF,$D2
	DC.B	$FF,$D1,$FF,$D1,$FF,$D1,$FF,$D0
	DC.B	$FF,$D0,$FF,$D0,$FF,$CF,$FF,$CF
	DC.B	$FF,$CF,$FF,$CF,$FF,$CE,$FF,$CE
	DC.B	$FF,$CE,$FF,$CD,$FF,$CD,$FF,$CD
	DC.B	$FF,$CC,$FF,$CC,$FF,$CC,$FF,$CC
	DC.B	$FF,$CB,$FF,$CB,$FF,$CB,$FF,$CA
	DC.B	$FF,$CA,$FF,$CA,$FF,$CA,$FF,$C9
	DC.B	$FF,$C9,$FF,$C9,$FF,$C9,$FF,$C8
	DC.B	$FF,$C8,$FF,$C8,$FF,$C8,$FF,$C7
	DC.B	$FF,$C7,$FF,$C7,$FF,$C7,$FF,$C6
	DC.B	$FF,$C6,$FF,$C6,$FF,$C6,$FF,$C5
	DC.B	$FF,$C5,$FF,$C5,$FF,$C5,$FF,$C5
	DC.B	$FF,$C4,$FF,$C4,$FF,$C4,$FF,$C4
	DC.B	$FF,$C3,$FF,$C3,$FF,$C3,$FF,$C3
	DC.B	$FF,$C3,$FF,$C2,$FF,$C2,$FF,$C2
	DC.B	$FF,$C2,$FF,$C2,$FF,$C1,$FF,$C1
	DC.B	$FF,$C1,$FF,$C1,$FF,$C1,$FF,$C1
	DC.B	$FF,$C0,$FF,$C0,$FF,$C0,$FF,$C0
	DC.B	$FF,$C0,$FF,$C0,$FF,$BF,$FF,$BF
	DC.B	$FF,$BF,$FF,$BF,$FF,$BF,$FF,$BF
	DC.B	$FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
	DC.B	$FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
	DC.B	$FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
	DC.B	$FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
	DC.B	$FF,$BD,$FF,$BC,$FF,$BC,$FF,$BC
	DC.B	$FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
	DC.B	$FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
	DC.B	$FF,$BB,$FF,$BB,$FF,$BB,$FF,$BC
	DC.B	$FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
	DC.B	$FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
	DC.B	$FF,$BC,$FF,$BC,$FF,$BC,$FF,$BD
	DC.B	$FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
	DC.B	$FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
	DC.B	$FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
	DC.B	$FF,$BE,$FF,$BE,$FF,$BE,$FF,$BF
	DC.B	$FF,$BF,$FF,$BF,$FF,$BF,$FF,$BF
	DC.B	$FF,$BF,$FF,$BF,$FF,$C0,$FF,$C0
	DC.B	$FF,$C0,$FF,$C0,$FF,$C0,$FF,$C0
	DC.B	$FF,$C1,$FF,$C1,$FF,$C1,$FF,$C1
	DC.B	$FF,$C1,$FF,$C2,$FF,$C2,$FF,$C2
	DC.B	$FF,$C2,$FF,$C2,$FF,$C3,$FF,$C3
	DC.B	$FF,$C3,$FF,$C3,$FF,$C3,$FF,$C4
	DC.B	$FF,$C4,$FF,$C4,$FF,$C4,$FF,$C4
	DC.B	$FF,$C5,$FF,$C5,$FF,$C5,$FF,$C5
	DC.B	$FF,$C6,$FF,$C6,$FF,$C6,$FF,$C6
	DC.B	$FF,$C7,$FF,$C7,$FF,$C7,$FF,$C7
	DC.B	$FF,$C7,$FF,$C8,$FF,$C8,$FF,$C8
	DC.B	$FF,$C8,$FF,$C9,$FF,$C9,$FF,$C9
	DC.B	$FF,$CA,$FF,$CA,$FF,$CA,$FF,$CA
	DC.B	$FF,$CB,$FF,$CB,$FF,$CB,$FF,$CB
	DC.B	$FF,$CC,$FF,$CC,$FF,$CC,$FF,$CD
	DC.B	$FF,$CD,$FF,$CD,$FF,$CD,$FF,$CE
	DC.B	$FF,$CE,$FF,$CE,$FF,$CF,$FF,$CF
	DC.B	$FF,$CF,$FF,$D0,$FF,$D0,$FF,$D0
	DC.B	$FF,$D1,$FF,$D1,$FF,$D1,$FF,$D1
	DC.B	$FF,$D2,$FF,$D2,$FF,$D2,$FF,$D3
	DC.B	$FF,$D3,$FF,$D3,$FF,$D4,$FF,$D4
	DC.B	$FF,$D4,$FF,$D5,$FF,$D5,$FF,$D5
	DC.B	$FF,$D6,$FF,$D6,$FF,$D6,$FF,$D7
	DC.B	$FF,$D7,$FF,$D7,$FF,$D8,$FF,$D8
	DC.B	$FF,$D9,$FF,$D9,$FF,$D9,$FF,$DA
	DC.B	$FF,$DA,$FF,$DA,$FF,$DB,$FF,$DB
	DC.B	$FF,$DB,$FF,$DC,$FF,$DC,$FF,$DC
	DC.B	$FF,$DD,$FF,$DD,$FF,$DE,$FF,$DE
	DC.B	$FF,$DE,$FF,$DF,$FF,$DF,$FF,$DF
	DC.B	$FF,$E0,$FF,$E0,$FF,$E1,$FF,$E1
	DC.B	$FF,$E1,$FF,$E2,$FF,$E2,$FF,$E3
	DC.B	$FF,$E3,$FF,$E3,$FF,$E4,$FF,$E4
	DC.B	$FF,$E5,$FF,$E5,$FF,$E5,$FF,$E6
	DC.B	$FF,$E6,$FF,$E6,$FF,$E7,$FF,$E7
	DC.B	$FF,$E8,$FF,$E8,$FF,$E8,$FF,$E9
	DC.B	$FF,$E9,$FF,$EA,$FF,$EA,$FF,$EB
	DC.B	$FF,$EB,$FF,$EB,$FF,$EC,$FF,$EC
	DC.B	$FF,$ED,$FF,$ED,$FF,$ED,$FF,$EE
	DC.B	$FF,$EE,$FF,$EF,$FF,$EF,$FF,$EF
	DC.B	$FF,$F0,$FF,$F0,$FF,$F1,$FF,$F1
	DC.B	$FF,$F2,$FF,$F2,$FF,$F2,$FF,$F3
	DC.B	$FF,$F3,$FF,$F4,$FF,$F4,$FF,$F5
	DC.B	$FF,$F5,$FF,$F5,$FF,$F6,$FF,$F6
	DC.B	$FF,$F7,$FF,$F7,$FF,$F8,$FF,$F8
	DC.B	$FF,$F8,$FF,$F9,$FF,$F9,$FF,$FA
	DC.B	$FF,$FA,$FF,$FA,$FF,$FB,$FF,$FB
	DC.B	$FF,$FC,$FF,$FC,$FF,$FD,$FF,$FD
	DC.B	$FF,$FD,$FF,$FE,$FF,$FE,$FF,$FF
	DC.B	$FF,$FF,$00,$00,$00,$00,$00,$00

;---------------------------------------

	SECTION gfx,data_c

SPLANE1	blk.b	$5D80,0			; Starfield bitmaps
SPLANE2	blk.b	$5D80,0
SPLANE3	blk.b	$5D80,0

