home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / alt / sys / amiga / demos / 1538 < prev    next >
Encoding:
Text File  |  1992-11-11  |  15.8 KB  |  615 lines

  1. Nntp-Posting-Host: skalk.ifi.uio.no
  2. Newsgroups: alt.sys.amiga.demos
  3. Path: sparky!uunet!mcsun!sunic!ugle.unit.no!aun.uninett.no!nuug!ifi.uio.no!larshaug
  4. From: larshaug@ifi.uio.no (Lars Haugseth)
  5. Subject: Re: Writing a StarField. Which method is best?
  6. Message-ID: <1992Nov11.131803.1276@ifi.uio.no>
  7. Sender: larshaug@ifi.uio.no (Lars Haugseth)
  8. Organization: Dept. of Informatics, University of Oslo, Norway
  9. References:  <1992Nov7.104910.60476@cc.usu.edu>
  10. Date: Wed, 11 Nov 1992 13:18:03 GMT
  11. Lines: 601
  12. Originator: larshaug@skalk.ifi.uio.no
  13.  
  14.  
  15. Here is a small 3D-stars routine, with sine-table and all...
  16. I have programmed it in AsmOne, but it should work on most
  17. assemblers without much work.
  18.  
  19. No flames about coding-technique, please. After all, this is
  20. alt.sys.amiga.DEMOS ;-)
  21.  
  22. You can have almost twice as many stars pr.frame if
  23. you make some heavy tables to avoid the mulus in the
  24. star-plotting loop. This you'll have to do youself :)
  25.  
  26. If you can manage more than 810 stars each frame on a plain
  27. 68000 Amiga500, send me a mail, ok? :)
  28.  
  29. larshaug@ifi.uio.no (Perplex/PMC)
  30.  
  31. ;---------------------------------------
  32. ; 3D STARFIELD
  33. ;---------------------------------------
  34.  
  35. NSTARS    = 435        ; Number of stars
  36.  
  37. ;---------------------------------------
  38.  
  39.     SECTION code,code_p
  40.  
  41. START    move.l    4.w,a6
  42.     move.l    156(a6),a1
  43.     move.l    38(a1),OLDCP
  44.     bsr    SBUFFER
  45.     bsr    VBLANK
  46.     move.l    #COPPER,$DFF080
  47.     clr.w    $DFF088
  48.     move.w    $DFF01C,OLDIQ
  49.     move.w    $DFF002,OLDCR
  50.     or.w    #$8000,OLDIQ
  51.     or.w    #$8000,OLDCR
  52.     move.w    #$7FFF,$DFF09A
  53.     move.w    #$7FFF,$DFF096
  54.     move.w    #$87C0,$DFF096
  55.     move.w    #$0000,$DFF180
  56.  
  57. ;---------------------------------------
  58.  
  59. ICOORDS    lea    SCOORDS,a0        ; Randomize coordinates
  60.     move.w    #NSTARS-1,d7
  61. ICOO1    bsr    GETRND
  62.     and.w    #$1FFF,d0
  63.     move.w    d0,(a0)+
  64.     bsr    GETRND
  65.     and.w    #$1FFF,d0
  66.     move.w    d0,(a0)+
  67.     bsr    GETRND
  68.     and.w    #$1FFF,d0
  69.     move.w    d0,(a0)+
  70.     dbf    d7,ICOO1
  71.  
  72. ;---------------------------------------
  73.  
  74. IPERSP    lea    PERSTAB,a0        ; Construct perspective table
  75.     moveq    #0,d1
  76.     move.l    #$95FFFF,d0
  77. IPER1    move.l    d0,d2
  78.     move.l    d1,d3
  79.     add.w    #300,d3
  80.     divu    d3,d2
  81.     move.w    d2,(a0)+
  82.     addq.l    #1,d1
  83.     cmp.l    #$2000,d1
  84.     bne.s    IPER1
  85.  
  86. ;---------------------------------------
  87.  
  88. IPLOT    lea    PLTXTAB,a0        ; Construct plot tables
  89.     lea    PLTBTAB,a1
  90.     lea    PLTYTAB,a2
  91.     moveq    #0,d0
  92. IPLO1    move.w    d0,d1
  93.     lsr.w    #3,d1
  94.     move.w    d1,(a0)+
  95.     move.w    d0,d1
  96.     eor.w    #$FFFF,d1
  97.     and.w    #7,d1
  98.     move.w    d1,(a1)+
  99.     cmp.w    #272,d0
  100.     bge.s    IPLO2
  101.     move.w    d0,d1
  102.     mulu    #88,d1
  103.     move.w    d1,(a2)+
  104. IPLO2    addq.w    #1,d0
  105.     cmp.w    #352,d0
  106.     bne.s    IPLO1
  107.  
  108. ;---------------------------------------
  109.  
  110. MAIN    bsr.s    VBLANK            ; Main loop
  111.  
  112.     move.w    #$000,$DFF180
  113.  
  114.     btst    #2,$DFF016        ; Freeze?
  115.     beq.s    MAIN
  116.  
  117.     bsr    SANIM
  118.     bsr    SBUFFER
  119.     bsr    SCLEAR
  120.     bsr    SDRAW
  121.  
  122.     move.w    #$005,$DFF180
  123.  
  124.     btst    #6,$BFE001        ; Exit?
  125.     bne.s    MAIN
  126.  
  127. ;---------------------------------------
  128.  
  129. EXIT    move.w    OLDIQ,$DFF09A
  130.     move.l    OLDCP,$DFF080
  131.     move.w    OLDCR,$DFF096
  132.     clr.w    $DFF088
  133.     rts
  134.  
  135. ;---------------------------------------
  136.  
  137. VBLANK    cmp.b    #0,$DFF006
  138.     bne.s    VBLANK
  139.     btst    #0,$DFF005
  140.     beq.s    VBLANK
  141.     rts
  142.  
  143. WAITB    nop
  144.     btst    #6,$DFF002
  145.     bne.s    WAITB
  146.     rts
  147.  
  148. ;---------------------------------------
  149.  
  150. GETRND    bsr.s    GRN1            ; Get random word
  151.     and.w    #$FF,d5
  152.     move.w    d5,d0
  153.     lsl.w    #8,d0
  154.     bsr.s    GRN1
  155.     and.w    #$FF,d5
  156.     or.w    d5,d0
  157.     rts
  158.  
  159. GRN1    move.b    $DFF007,d5        ; Get random byte
  160.     move.b    $BFD800,d6
  161.     eor.b    d6,d5
  162.     moveq    #0,d6
  163.     move.b    d5,d6
  164.     ror.b    #1,d6
  165. GRN2    dbf    d6,GRN2
  166.     rts
  167.  
  168. ;---------------------------------------
  169.  
  170. SDRAW    lea    SCOORDS,a0        ; Draw starfield
  171.     lea    PERSTAB,a1
  172.     lea    PLTXTAB,a2
  173.     lea    PLTBTAB,a3
  174.     lea    PLTYTAB,a4
  175.     move.l    SFPTR+4,a6
  176.  
  177.     move.l    a7,SAVEA7
  178.     lea    $1000.w,a7
  179.  
  180.     movem.w    SXADD,d3-d4/a5
  181.     add.w    #$1000,d3
  182.     add.w    #$1000,d4
  183.     move.w    #$1FFF,d5
  184.  
  185.     move.w    #NSTARS-1,d7
  186.  
  187. SDRW1    movem.w    (a0)+,d0-d2        ; Get coordinates
  188.     add.w    d3,d0            ; X-movement
  189.     and.w    d5,d0
  190.     sub.w    a7,d0
  191.     add.w    d4,d1            ; Y-movement
  192.     and.w    d5,d1
  193.     sub.w    a7,d1
  194.     add.w    a5,d2            ; Z-movement
  195.     and.w    d5,d2
  196.  
  197.     add.w    d2,d2
  198.     move.w    (a1,d2.w),d6
  199.     muls    d6,d0            ; X-projection
  200.     swap    d0
  201.     add.w    #176,d0
  202.     cmp.w    #351,d0
  203.     bhi.s    SDRW3
  204.     muls    d6,d1            ; Y-projection
  205.     swap    d1
  206.     add.w    #136,d1
  207.     cmp.w    #271,d1
  208.     bhi.s    SDRW3
  209.  
  210.     add.w    d0,d0
  211.     add.w    d1,d1
  212.     move.w    (a4,d1.w),d6
  213.     add.w    (a2,d0.w),d6
  214.     move.w    (a3,d0.w),d0
  215.  
  216.     cmp.w    #$2400,d2
  217.     bgt.s    SDRW2
  218.  
  219.     bset    d0,(a6,d6.w)
  220.     dbf    d7,SDRW1
  221.     bra.s    SPLOTX
  222.  
  223. SDRW2:    bset    d0,$2C(a6,d6.w)
  224. SDRW3:    dbf    d7,SDRW1
  225.  
  226. SPLOTX:    move.l    SAVEA7,a7
  227.     rts
  228.  
  229. ;---------------------------------------
  230.  
  231. SCLEAR    bsr    WAITB            ; Clear starfield
  232.     move.l    SFPTR+8,$DFF054
  233.     move.w    #0,$DFF066
  234.     move.l    #$01000000,$DFF040
  235.     move.w    #64*272+44,$DFF058
  236.     rts
  237.  
  238. ;---------------------------------------
  239.  
  240. SBUFFER    lea    SFPTR,a0        ; Triple buffering
  241.     movem.l    (a0),d0-d2
  242.     exg    d0,d1
  243.     exg    d1,d2
  244.     movem.l    d0-d2,(a0)
  245.     move.l    SFPTR,d0
  246.     move.l    SFPTR,d1
  247.     add.l    #$002C,d1
  248.     move.w    d0,C1PL1+6
  249.     swap    d0
  250.     move.w    d0,C1PL1+2
  251.     move.w    d1,C1PL2+6
  252.     swap    d1
  253.     move.w    d1,C1PL2+2
  254.     rts
  255.  
  256. ;---------------------------------------
  257.  
  258. SANIM    lea    SSINUS,a0        ; Animate star-movement
  259.     move.w    SXPOS,d0
  260.     move.w    SYPOS,d1
  261.     move.w    SZPOS,d2
  262.     add.w    SXSPD,d0
  263.     add.w    SYSPD,d1
  264.     add.w    SZSPD,d2
  265.     and.w    #$7FE,d0
  266.     and.w    #$7FE,d1
  267.     and.w    #$7FE,d2
  268.     move.w    d0,SXPOS
  269.     move.w    d1,SYPOS
  270.     move.w    d2,SZPOS
  271.     move.w    SXADD,d3
  272.     move.w    SYADD,d4
  273.     move.w    SZADD,d5
  274.     add.w    (a0,d0.w),d3
  275.     add.w    (a0,d1.w),d4
  276.     add.w    (a0,d2.w),d5
  277.     move.w    d3,SXADD
  278.     move.w    d4,SYADD
  279.     move.w    d5,SZADD
  280.  
  281.     rts
  282.  
  283. ;---------------------------------------
  284.  
  285.     SECTION copper,data_c
  286.  
  287. COPPER    dc.w    $0092,$0030
  288.     dc.w    $0094,$00D8
  289.     dc.w    $008E,$2C71
  290.     dc.w    $0090,$2CD1
  291.     dc.w    $0102,$0000
  292.     dc.w    $0108,$002C
  293.     dc.w    $010A,$002C
  294.  
  295.     dc.w    $2307,$FFFE
  296.     dc.w    $0182,$0DDD
  297.     dc.w    $0184,$0888
  298.     dc.w    $0186,$0DDD
  299.  
  300.     dc.w    $2407,$FFFE
  301.     dc.w    $0100,$2200
  302. C1PL1    dc.w    $00E0,$0000
  303.     dc.w    $00E2,$0000
  304. C1PL2    dc.w    $00E4,$0000
  305.     dc.w    $00E6,$0000
  306.  
  307.     dc.w    $FFDF,$FFFE
  308.     dc.w    $3407,$FFFE
  309.     dc.w    $0100,$0000
  310.  
  311.     dc.w    $FFFF,$FFFE
  312.  
  313. ;---------------------------------------
  314.  
  315.     SECTION data,data_p
  316.  
  317. OLDSP    dc.l    0            ; Temporaries
  318. OLDCP    dc.l    0
  319. OLDCR    dc.w    0
  320. OLDIQ    dc.w    0
  321.  
  322. SAVEA7    dc.l    0
  323.  
  324. SXADD    dc.w    33            ; Star movement
  325. SYADD    dc.w    12
  326. SZADD    dc.w    -114
  327.  
  328. SXPOS    dc.w    0            ; Sinus positions
  329. SYPOS    dc.w    $136
  330. SZPOS    dc.w    $500
  331.  
  332. SXSPD    dc.w    -4            ; Sinus speeds
  333. SYSPD    dc.w    6
  334. SZSPD    dc.w    2
  335.  
  336. SFPTR    dc.l    SPLANE1            ; Starfield pointers
  337.     dc.l    SPLANE2
  338.     dc.l    SPLANE3
  339.  
  340. SCOORDS    blk.w    3*NSTARS        ; Star coordinates
  341.  
  342. PERSTAB    blk.w    $2000,0            ; Perspective table
  343.  
  344. PLTXTAB    blk.w    352,0            ; Plot tables
  345. PLTBTAB    blk.w    352,0
  346. PLTYTAB    blk.w    272,0
  347.  
  348. ;---------------------------------------
  349.  
  350. SSINUS    DC.B    $00,$00,$00,$00,$00,$00,$00,$01
  351.     DC.B    $00,$01,$00,$02,$00,$02,$00,$03
  352.     DC.B    $00,$03,$00,$03,$00,$04,$00,$04
  353.     DC.B    $00,$05,$00,$05,$00,$06,$00,$06
  354.     DC.B    $00,$06,$00,$07,$00,$07,$00,$08
  355.     DC.B    $00,$08,$00,$09,$00,$09,$00,$09
  356.     DC.B    $00,$0A,$00,$0A,$00,$0B,$00,$0B
  357.     DC.B    $00,$0B,$00,$0C,$00,$0C,$00,$0D
  358.     DC.B    $00,$0D,$00,$0E,$00,$0E,$00,$0E
  359.     DC.B    $00,$0F,$00,$0F,$00,$10,$00,$10
  360.     DC.B    $00,$11,$00,$11,$00,$11,$00,$12
  361.     DC.B    $00,$12,$00,$13,$00,$13,$00,$13
  362.     DC.B    $00,$14,$00,$14,$00,$15,$00,$15
  363.     DC.B    $00,$15,$00,$16,$00,$16,$00,$17
  364.     DC.B    $00,$17,$00,$18,$00,$18,$00,$18
  365.     DC.B    $00,$19,$00,$19,$00,$1A,$00,$1A
  366.     DC.B    $00,$1A,$00,$1B,$00,$1B,$00,$1B
  367.     DC.B    $00,$1C,$00,$1C,$00,$1D,$00,$1D
  368.     DC.B    $00,$1D,$00,$1E,$00,$1E,$00,$1F
  369.     DC.B    $00,$1F,$00,$1F,$00,$20,$00,$20
  370.     DC.B    $00,$21,$00,$21,$00,$21,$00,$22
  371.     DC.B    $00,$22,$00,$22,$00,$23,$00,$23
  372.     DC.B    $00,$24,$00,$24,$00,$24,$00,$25
  373.     DC.B    $00,$25,$00,$25,$00,$26,$00,$26
  374.     DC.B    $00,$26,$00,$27,$00,$27,$00,$27
  375.     DC.B    $00,$28,$00,$28,$00,$29,$00,$29
  376.     DC.B    $00,$29,$00,$2A,$00,$2A,$00,$2A
  377.     DC.B    $00,$2B,$00,$2B,$00,$2B,$00,$2C
  378.     DC.B    $00,$2C,$00,$2C,$00,$2D,$00,$2D
  379.     DC.B    $00,$2D,$00,$2E,$00,$2E,$00,$2E
  380.     DC.B    $00,$2F,$00,$2F,$00,$2F,$00,$2F
  381.     DC.B    $00,$30,$00,$30,$00,$30,$00,$31
  382.     DC.B    $00,$31,$00,$31,$00,$32,$00,$32
  383.     DC.B    $00,$32,$00,$33,$00,$33,$00,$33
  384.     DC.B    $00,$33,$00,$34,$00,$34,$00,$34
  385.     DC.B    $00,$35,$00,$35,$00,$35,$00,$35
  386.     DC.B    $00,$36,$00,$36,$00,$36,$00,$36
  387.     DC.B    $00,$37,$00,$37,$00,$37,$00,$38
  388.     DC.B    $00,$38,$00,$38,$00,$38,$00,$39
  389.     DC.B    $00,$39,$00,$39,$00,$39,$00,$3A
  390.     DC.B    $00,$3A,$00,$3A,$00,$3A,$00,$3A
  391.     DC.B    $00,$3B,$00,$3B,$00,$3B,$00,$3B
  392.     DC.B    $00,$3C,$00,$3C,$00,$3C,$00,$3C
  393.     DC.B    $00,$3C,$00,$3D,$00,$3D,$00,$3D
  394.     DC.B    $00,$3D,$00,$3D,$00,$3E,$00,$3E
  395.     DC.B    $00,$3E,$00,$3E,$00,$3E,$00,$3F
  396.     DC.B    $00,$3F,$00,$3F,$00,$3F,$00,$3F
  397.     DC.B    $00,$40,$00,$40,$00,$40,$00,$40
  398.     DC.B    $00,$40,$00,$40,$00,$41,$00,$41
  399.     DC.B    $00,$41,$00,$41,$00,$41,$00,$41
  400.     DC.B    $00,$41,$00,$42,$00,$42,$00,$42
  401.     DC.B    $00,$42,$00,$42,$00,$42,$00,$42
  402.     DC.B    $00,$43,$00,$43,$00,$43,$00,$43
  403.     DC.B    $00,$43,$00,$43,$00,$43,$00,$43
  404.     DC.B    $00,$43,$00,$44,$00,$44,$00,$44
  405.     DC.B    $00,$44,$00,$44,$00,$44,$00,$44
  406.     DC.B    $00,$44,$00,$44,$00,$44,$00,$44
  407.     DC.B    $00,$44,$00,$45,$00,$45,$00,$45
  408.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  409.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  410.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  411.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  412.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  413.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  414.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  415.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  416.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  417.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  418.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  419.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  420.     DC.B    $00,$45,$00,$45,$00,$45,$00,$45
  421.     DC.B    $00,$44,$00,$44,$00,$44,$00,$44
  422.     DC.B    $00,$44,$00,$44,$00,$44,$00,$44
  423.     DC.B    $00,$44,$00,$44,$00,$44,$00,$43
  424.     DC.B    $00,$43,$00,$43,$00,$43,$00,$43
  425.     DC.B    $00,$43,$00,$43,$00,$43,$00,$43
  426.     DC.B    $00,$42,$00,$42,$00,$42,$00,$42
  427.     DC.B    $00,$42,$00,$42,$00,$42,$00,$42
  428.     DC.B    $00,$41,$00,$41,$00,$41,$00,$41
  429.     DC.B    $00,$41,$00,$41,$00,$40,$00,$40
  430.     DC.B    $00,$40,$00,$40,$00,$40,$00,$40
  431.     DC.B    $00,$3F,$00,$3F,$00,$3F,$00,$3F
  432.     DC.B    $00,$3F,$00,$3F,$00,$3E,$00,$3E
  433.     DC.B    $00,$3E,$00,$3E,$00,$3E,$00,$3D
  434.     DC.B    $00,$3D,$00,$3D,$00,$3D,$00,$3D
  435.     DC.B    $00,$3C,$00,$3C,$00,$3C,$00,$3C
  436.     DC.B    $00,$3B,$00,$3B,$00,$3B,$00,$3B
  437.     DC.B    $00,$3B,$00,$3A,$00,$3A,$00,$3A
  438.     DC.B    $00,$3A,$00,$39,$00,$39,$00,$39
  439.     DC.B    $00,$39,$00,$38,$00,$38,$00,$38
  440.     DC.B    $00,$38,$00,$37,$00,$37,$00,$37
  441.     DC.B    $00,$37,$00,$36,$00,$36,$00,$36
  442.     DC.B    $00,$36,$00,$35,$00,$35,$00,$35
  443.     DC.B    $00,$34,$00,$34,$00,$34,$00,$34
  444.     DC.B    $00,$33,$00,$33,$00,$33,$00,$32
  445.     DC.B    $00,$32,$00,$32,$00,$31,$00,$31
  446.     DC.B    $00,$31,$00,$31,$00,$30,$00,$30
  447.     DC.B    $00,$30,$00,$2F,$00,$2F,$00,$2F
  448.     DC.B    $00,$2E,$00,$2E,$00,$2E,$00,$2D
  449.     DC.B    $00,$2D,$00,$2D,$00,$2C,$00,$2C
  450.     DC.B    $00,$2C,$00,$2B,$00,$2B,$00,$2B
  451.     DC.B    $00,$2A,$00,$2A,$00,$2A,$00,$29
  452.     DC.B    $00,$29,$00,$29,$00,$28,$00,$28
  453.     DC.B    $00,$28,$00,$27,$00,$27,$00,$27
  454.     DC.B    $00,$26,$00,$26,$00,$26,$00,$25
  455.     DC.B    $00,$25,$00,$24,$00,$24,$00,$24
  456.     DC.B    $00,$23,$00,$23,$00,$23,$00,$22
  457.     DC.B    $00,$22,$00,$21,$00,$21,$00,$21
  458.     DC.B    $00,$20,$00,$20,$00,$20,$00,$1F
  459.     DC.B    $00,$1F,$00,$1E,$00,$1E,$00,$1E
  460.     DC.B    $00,$1D,$00,$1D,$00,$1C,$00,$1C
  461.     DC.B    $00,$1C,$00,$1B,$00,$1B,$00,$1B
  462.     DC.B    $00,$1A,$00,$1A,$00,$19,$00,$19
  463.     DC.B    $00,$19,$00,$18,$00,$18,$00,$17
  464.     DC.B    $00,$17,$00,$16,$00,$16,$00,$16
  465.     DC.B    $00,$15,$00,$15,$00,$14,$00,$14
  466.     DC.B    $00,$14,$00,$13,$00,$13,$00,$12
  467.     DC.B    $00,$12,$00,$12,$00,$11,$00,$11
  468.     DC.B    $00,$10,$00,$10,$00,$0F,$00,$0F
  469.     DC.B    $00,$0F,$00,$0E,$00,$0E,$00,$0D
  470.     DC.B    $00,$0D,$00,$0D,$00,$0C,$00,$0C
  471.     DC.B    $00,$0B,$00,$0B,$00,$0A,$00,$0A
  472.     DC.B    $00,$0A,$00,$09,$00,$09,$00,$08
  473.     DC.B    $00,$08,$00,$07,$00,$07,$00,$07
  474.     DC.B    $00,$06,$00,$06,$00,$05,$00,$05
  475.     DC.B    $00,$04,$00,$04,$00,$04,$00,$03
  476.     DC.B    $00,$03,$00,$02,$00,$02,$00,$01
  477.     DC.B    $00,$01,$00,$01,$00,$00,$00,$00
  478.     DC.B    $00,$00,$00,$00,$FF,$FF,$FF,$FF
  479.     DC.B    $FF,$FF,$FF,$FE,$FF,$FE,$FF,$FD
  480.     DC.B    $FF,$FD,$FF,$FC,$FF,$FC,$FF,$FC
  481.     DC.B    $FF,$FB,$FF,$FB,$FF,$FA,$FF,$FA
  482.     DC.B    $FF,$F9,$FF,$F9,$FF,$F9,$FF,$F8
  483.     DC.B    $FF,$F8,$FF,$F7,$FF,$F7,$FF,$F6
  484.     DC.B    $FF,$F6,$FF,$F6,$FF,$F5,$FF,$F5
  485.     DC.B    $FF,$F4,$FF,$F4,$FF,$F3,$FF,$F3
  486.     DC.B    $FF,$F3,$FF,$F2,$FF,$F2,$FF,$F1
  487.     DC.B    $FF,$F1,$FF,$F1,$FF,$F0,$FF,$F0
  488.     DC.B    $FF,$EF,$FF,$EF,$FF,$EE,$FF,$EE
  489.     DC.B    $FF,$EE,$FF,$ED,$FF,$ED,$FF,$EC
  490.     DC.B    $FF,$EC,$FF,$EC,$FF,$EB,$FF,$EB
  491.     DC.B    $FF,$EA,$FF,$EA,$FF,$EA,$FF,$E9
  492.     DC.B    $FF,$E9,$FF,$E8,$FF,$E8,$FF,$E7
  493.     DC.B    $FF,$E7,$FF,$E7,$FF,$E6,$FF,$E6
  494.     DC.B    $FF,$E5,$FF,$E5,$FF,$E5,$FF,$E4
  495.     DC.B    $FF,$E4,$FF,$E4,$FF,$E3,$FF,$E3
  496.     DC.B    $FF,$E2,$FF,$E2,$FF,$E2,$FF,$E1
  497.     DC.B    $FF,$E1,$FF,$E0,$FF,$E0,$FF,$E0
  498.     DC.B    $FF,$DF,$FF,$DF,$FF,$DF,$FF,$DE
  499.     DC.B    $FF,$DE,$FF,$DD,$FF,$DD,$FF,$DD
  500.     DC.B    $FF,$DC,$FF,$DC,$FF,$DC,$FF,$DB
  501.     DC.B    $FF,$DB,$FF,$DA,$FF,$DA,$FF,$DA
  502.     DC.B    $FF,$D9,$FF,$D9,$FF,$D9,$FF,$D8
  503.     DC.B    $FF,$D8,$FF,$D8,$FF,$D7,$FF,$D7
  504.     DC.B    $FF,$D7,$FF,$D6,$FF,$D6,$FF,$D6
  505.     DC.B    $FF,$D5,$FF,$D5,$FF,$D5,$FF,$D4
  506.     DC.B    $FF,$D4,$FF,$D4,$FF,$D3,$FF,$D3
  507.     DC.B    $FF,$D3,$FF,$D2,$FF,$D2,$FF,$D2
  508.     DC.B    $FF,$D1,$FF,$D1,$FF,$D1,$FF,$D0
  509.     DC.B    $FF,$D0,$FF,$D0,$FF,$CF,$FF,$CF
  510.     DC.B    $FF,$CF,$FF,$CF,$FF,$CE,$FF,$CE
  511.     DC.B    $FF,$CE,$FF,$CD,$FF,$CD,$FF,$CD
  512.     DC.B    $FF,$CC,$FF,$CC,$FF,$CC,$FF,$CC
  513.     DC.B    $FF,$CB,$FF,$CB,$FF,$CB,$FF,$CA
  514.     DC.B    $FF,$CA,$FF,$CA,$FF,$CA,$FF,$C9
  515.     DC.B    $FF,$C9,$FF,$C9,$FF,$C9,$FF,$C8
  516.     DC.B    $FF,$C8,$FF,$C8,$FF,$C8,$FF,$C7
  517.     DC.B    $FF,$C7,$FF,$C7,$FF,$C7,$FF,$C6
  518.     DC.B    $FF,$C6,$FF,$C6,$FF,$C6,$FF,$C5
  519.     DC.B    $FF,$C5,$FF,$C5,$FF,$C5,$FF,$C5
  520.     DC.B    $FF,$C4,$FF,$C4,$FF,$C4,$FF,$C4
  521.     DC.B    $FF,$C3,$FF,$C3,$FF,$C3,$FF,$C3
  522.     DC.B    $FF,$C3,$FF,$C2,$FF,$C2,$FF,$C2
  523.     DC.B    $FF,$C2,$FF,$C2,$FF,$C1,$FF,$C1
  524.     DC.B    $FF,$C1,$FF,$C1,$FF,$C1,$FF,$C1
  525.     DC.B    $FF,$C0,$FF,$C0,$FF,$C0,$FF,$C0
  526.     DC.B    $FF,$C0,$FF,$C0,$FF,$BF,$FF,$BF
  527.     DC.B    $FF,$BF,$FF,$BF,$FF,$BF,$FF,$BF
  528.     DC.B    $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
  529.     DC.B    $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
  530.     DC.B    $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
  531.     DC.B    $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
  532.     DC.B    $FF,$BD,$FF,$BC,$FF,$BC,$FF,$BC
  533.     DC.B    $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
  534.     DC.B    $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
  535.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  536.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  537.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  538.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  539.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  540.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  541.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  542.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  543.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  544.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  545.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  546.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  547.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
  548.     DC.B    $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BC
  549.     DC.B    $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
  550.     DC.B    $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
  551.     DC.B    $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BD
  552.     DC.B    $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
  553.     DC.B    $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
  554.     DC.B    $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
  555.     DC.B    $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BF
  556.     DC.B    $FF,$BF,$FF,$BF,$FF,$BF,$FF,$BF
  557.     DC.B    $FF,$BF,$FF,$BF,$FF,$C0,$FF,$C0
  558.     DC.B    $FF,$C0,$FF,$C0,$FF,$C0,$FF,$C0
  559.     DC.B    $FF,$C1,$FF,$C1,$FF,$C1,$FF,$C1
  560.     DC.B    $FF,$C1,$FF,$C2,$FF,$C2,$FF,$C2
  561.     DC.B    $FF,$C2,$FF,$C2,$FF,$C3,$FF,$C3
  562.     DC.B    $FF,$C3,$FF,$C3,$FF,$C3,$FF,$C4
  563.     DC.B    $FF,$C4,$FF,$C4,$FF,$C4,$FF,$C4
  564.     DC.B    $FF,$C5,$FF,$C5,$FF,$C5,$FF,$C5
  565.     DC.B    $FF,$C6,$FF,$C6,$FF,$C6,$FF,$C6
  566.     DC.B    $FF,$C7,$FF,$C7,$FF,$C7,$FF,$C7
  567.     DC.B    $FF,$C7,$FF,$C8,$FF,$C8,$FF,$C8
  568.     DC.B    $FF,$C8,$FF,$C9,$FF,$C9,$FF,$C9
  569.     DC.B    $FF,$CA,$FF,$CA,$FF,$CA,$FF,$CA
  570.     DC.B    $FF,$CB,$FF,$CB,$FF,$CB,$FF,$CB
  571.     DC.B    $FF,$CC,$FF,$CC,$FF,$CC,$FF,$CD
  572.     DC.B    $FF,$CD,$FF,$CD,$FF,$CD,$FF,$CE
  573.     DC.B    $FF,$CE,$FF,$CE,$FF,$CF,$FF,$CF
  574.     DC.B    $FF,$CF,$FF,$D0,$FF,$D0,$FF,$D0
  575.     DC.B    $FF,$D1,$FF,$D1,$FF,$D1,$FF,$D1
  576.     DC.B    $FF,$D2,$FF,$D2,$FF,$D2,$FF,$D3
  577.     DC.B    $FF,$D3,$FF,$D3,$FF,$D4,$FF,$D4
  578.     DC.B    $FF,$D4,$FF,$D5,$FF,$D5,$FF,$D5
  579.     DC.B    $FF,$D6,$FF,$D6,$FF,$D6,$FF,$D7
  580.     DC.B    $FF,$D7,$FF,$D7,$FF,$D8,$FF,$D8
  581.     DC.B    $FF,$D9,$FF,$D9,$FF,$D9,$FF,$DA
  582.     DC.B    $FF,$DA,$FF,$DA,$FF,$DB,$FF,$DB
  583.     DC.B    $FF,$DB,$FF,$DC,$FF,$DC,$FF,$DC
  584.     DC.B    $FF,$DD,$FF,$DD,$FF,$DE,$FF,$DE
  585.     DC.B    $FF,$DE,$FF,$DF,$FF,$DF,$FF,$DF
  586.     DC.B    $FF,$E0,$FF,$E0,$FF,$E1,$FF,$E1
  587.     DC.B    $FF,$E1,$FF,$E2,$FF,$E2,$FF,$E3
  588.     DC.B    $FF,$E3,$FF,$E3,$FF,$E4,$FF,$E4
  589.     DC.B    $FF,$E5,$FF,$E5,$FF,$E5,$FF,$E6
  590.     DC.B    $FF,$E6,$FF,$E6,$FF,$E7,$FF,$E7
  591.     DC.B    $FF,$E8,$FF,$E8,$FF,$E8,$FF,$E9
  592.     DC.B    $FF,$E9,$FF,$EA,$FF,$EA,$FF,$EB
  593.     DC.B    $FF,$EB,$FF,$EB,$FF,$EC,$FF,$EC
  594.     DC.B    $FF,$ED,$FF,$ED,$FF,$ED,$FF,$EE
  595.     DC.B    $FF,$EE,$FF,$EF,$FF,$EF,$FF,$EF
  596.     DC.B    $FF,$F0,$FF,$F0,$FF,$F1,$FF,$F1
  597.     DC.B    $FF,$F2,$FF,$F2,$FF,$F2,$FF,$F3
  598.     DC.B    $FF,$F3,$FF,$F4,$FF,$F4,$FF,$F5
  599.     DC.B    $FF,$F5,$FF,$F5,$FF,$F6,$FF,$F6
  600.     DC.B    $FF,$F7,$FF,$F7,$FF,$F8,$FF,$F8
  601.     DC.B    $FF,$F8,$FF,$F9,$FF,$F9,$FF,$FA
  602.     DC.B    $FF,$FA,$FF,$FA,$FF,$FB,$FF,$FB
  603.     DC.B    $FF,$FC,$FF,$FC,$FF,$FD,$FF,$FD
  604.     DC.B    $FF,$FD,$FF,$FE,$FF,$FE,$FF,$FF
  605.     DC.B    $FF,$FF,$00,$00,$00,$00,$00,$00
  606.  
  607. ;---------------------------------------
  608.  
  609.     SECTION gfx,data_c
  610.  
  611. SPLANE1    blk.b    $5D80,0            ; Starfield bitmaps
  612. SPLANE2    blk.b    $5D80,0
  613. SPLANE3    blk.b    $5D80,0
  614.  
  615.