Skip to navigation

Elite on the BBC Micro and NES

Drawing circles: CIRCLE

[NES version, Bank 1]

Name: CIRCLE [Show more] Type: Subroutine Category: Drawing circles Summary: Draw a circle for the planet Deep dive: Drawing circles
Context: See this subroutine in context in the source code References: This subroutine is called as follows: * PL9 (Part 1 of 3) calls CIRCLE

Draw a circle with the centre at (K3, K4) and radius K. Used to draw the planet's main outline.
Arguments: K The planet's radius K3(1 0) Pixel x-coordinate of the centre of the planet K4(1 0) Pixel y-coordinate of the centre of the planet
.CIRCLE SETUP_PPU_FOR_ICON_BAR ; If the PPU has started drawing the icon bar, configure ; the PPU to use nametable 0 and pattern table 0 JSR CHKON ; Call CHKON to check whether the circle fits on-screen BCS RTS2 ; If CHKON set the C flag then the circle does not fit ; on-screen, so return from the subroutine (as RTS2 ; contains an RTS) LDX K ; Set X = K = radius LDA #8 ; Set A = 8 CPX #8 ; If the radius < 8, skip to PL89 BCC PL89 LSR A ; Halve A so A = 4 CPX #60 ; If the radius < 60, skip to PL89 BCC PL89 LSR A ; Halve A so A = 2 .PL89 STA STP ; Set STP = A. STP is the step size for the circle, so ; the above sets a smaller step size for bigger circles ; Fall through into CIRCLE2 to draw the circle with the ; correct step size