Skip to navigation

Revs on the BBC Micro

List of all variables

This index contains every variable that appears in the source code for Revs, grouped by category. A variable is defined as a labelled memory location that is used for storing data, and this list includes both variables that are defined in workspaces, and variables that are declared within the body of the source code.

3D objects
----------

objectBottomScaffold measurements for the bottom of each object part
objectColourData for the colour of each object part
objectIndexIndex range of an object's data in the object data tables
objectLeftScaffold measurements for the left of each object part
objectPaletteThe object colour palette that maps logical colours 0 to 3 to physical colours
objectRightScaffold measurements for the right of each object part
objectScaffoldThe scaffold used to construct each object, in a scalable format
objectTopScaffold measurements for the top of each object part
scaffoldIndexIndex of an object's scaffold in the objectScaffold table
scaledScaffoldStorage for an object's scaled scaffold
scaleRangeStorage for scale factors when scaling objects
thisObjectTypeThe type of object we are currently drawing
xRoadSignCoordHiThe high byte of the x-coordinate of the road sign's 3D coordinates
xRoadSignCoordLoThe low byte of the x-coordinate of the road sign's 3D coordinates
yRoadSignCoordHiThe high byte of the y-coordinate of the road sign's 3D coordinates
yRoadSignCoordLoThe low byte of the y-coordinate of the road sign's 3D coordinates
zRoadSignCoordHiThe high byte of the z-coordinate of the road sign's 3D coordinates
zRoadSignCoordLoThe low byte of the z-coordinate of the road sign's 3D coordinates

Car geometry
------------

carSpeedLoLow byte of each car's forward speed
crashedIntoFenceFlag that records whether we have crashed into the fence
playerSidewaysContains the player's heading, for testing whether the car is pointing sideways
spinYawAngleHiHigh byte of the amount of yaw angle spin that is being applied to the player's car
spinYawAngleLoLow byte of the amount of yaw angle spin that is being applied to the player's car
spinYawAngleTopTop byte of the amount of yaw angle spin that is being applied to the player's car
xPlayerCoordHiThe high byte of the x-coordinate of the player's 3D coordinates
xPlayerCoordLoThe low byte of the x-coordinate of the player's 3D coordinates
xPlayerCoordTopThe top byte of the x-coordinate of the player's 3D coordinates
yPlayerCoordHiThe high byte of the y-coordinate of the player's 3D coordinates
yPlayerCoordLoThe low byte of the y-coordinate of the player's 3D coordinates
yPlayerCoordTopThe top byte of the y-coordinate of the player's 3D coordinates
zPlayerCoordHiThe high byte of the z-coordinate of the player's 3D coordinates
zPlayerCoordLoThe low byte of the z-coordinate of the player's 3D coordinates
zPlayerCoordTopThe top byte of the z-coordinate of the player's 3D coordinates

Dashboard
---------

dashRightEdgeStorage for the first track pixel byte along the right edge of the dashboard
endMirrorThe offset from mirrorAddress for the end of each mirror segment
fillDataOffsetDash data offsets, tweaked to give bottom line values that are compatible with the process of filling blocks to the left
handPixelsThe number of pixels in the longest axis for the rev counter hand at various points in a half-quadrant
leftDashMaskPixel mask for the left edge of the dashboard
leftDashPixelsPixels along the left edge of the dashboard
leftTyreMaskPixel mask for the edge of the left tyre
leftTyrePixelsPixels along the edge of the left tyre
mirrorAddressHiThe high byte of the base screen address of each mirror segment
mirrorAddressLoThe low byte of the base screen address of each mirror segment
mirrorContentsContains the size of the car in each mirror segment
mirrorSegmentLookup table for working out which mirror segment a car should appear in
rightDashMaskPixel mask for the right edge of the dashboard
rightDashPixelsPixels along the right edge of the dashboard
rightTyreMaskPixel mask for the edge of the right tyre
rightTyrePixelsPixels along the edge of the right tyre
shortAxisCode modifications for the DrawDashboardLine line-drawing routine
startMirrorThe offset from mirrorAddress for the start of each mirror segment
steeringHiThe high byte of the steering wheel position
steeringLoThe low byte of the steering wheel position
stepAxisCode modifications for the DrawDashboardLine line-drawing routine
tyreEdgeIndexIndex of the mask and pixel bytes for the tyre edges on a specific track line
tyreTravelKeeps track of how far we have travelled so we know when to animate the tyres
tyreTreadLeftTyre tread pattern for the left tyre
tyreTreadRightTyre tread pattern for the right tyre
wheelPixelsThe number of pixels in the longest axis for the steering wheel line at various points in a quadrant

Drawing objects
---------------

thisDriverNumberThe number of the current driver when drawing cars

Drawing pixels
--------------

colourPaletteThe main colour palette that maps logical colours 0 to 3 to physical colours
pixelByteA table of pixel bytes with individual pixels set
pixelsEdgeRightPixel byte with all the pixels to the right of position X set, plus pixel X
pixelsToLeftPixel byte with all the pixels to the left of position X set
pixelsToRightPixel byte with all the pixels to the right of position X set
startDialHiThe high byte of the screen address of the start of the dial hand on the rev counter
startDialLoThe low byte of the screen address of the start of the dial hand on the rev counter
yLookupHiLookup table for converting pixel y-coordinate to high byte of screen address
yLookupLoLookup table for converting pixel y-coordinate to low byte of screen address

Drawing the track
-----------------

jumpShallowLeftBranch labels for self-modifying code in the DrawShallowToLeft routine
jumpShallowRightBranch labels for self-modifying code in the DrawShallowToRight routine
jumpSteepLeftBranch labels for self-modifying code in the DrawSteepToLeft routine
jumpSteepRightBranch labels for self-modifying code in the DrawSteepToRight routine
vergeEdgeInOutTable for mapping the verge tables to the outer and inner edges of the verge marks
vergeEdgeRightContain the four pixel bytes for the verge edge we are drawing, masked to only include the rightmost 4, 3, 2 and 1 pixels
vergePixelMaskPixel bytes for drawing track verge edges
vergeTableHiHigh bytes of the addresses of the four verge tables
vergeTableLoLow bytes of the addresses of the four verge tables

Drivers
-------

baseSpeedThe base speed for each car, copied from the track data
competitionStartedA flag to indicate whether or not the competition has started
firstLapStartedFlag to keep track of whether we have started the first lap of practice or qualifying
lapsMenuOptionThe menu option chosen from the laps menu (0 to 2)
lowestPlayerNumberThe number of the player with the lowest player number
numberOfPlayersThe number of players
pointsForPlaceThe points awarded for the top six places, plus the fastest lap
qualifyingTimeThe number of minutes of qualifying lap time
raceClassThe class of the current race
racePointsHiHigh byte of race points calculated for each position
racePointsLoUsed to store the low byte of the race points being awarded to the driver in race position X
totalPointsHiHigh byte of total accumulated points for each driver
totalPointsLoLow byte of total accumulated points for each driver
updateLapTimesControls whether moving the car forward updates the lap number and lap times

Driving model
-------------

cosYawAngleHiHigh byte of the cosine of the player's yaw angle
cosYawAngleLoLow byte of the cosine of the player's yaw angle
frontWingSettingThe front wing setting, as entered by the player
liftFromTorqueThe lift of the front of the car caused by acceleration or braking
playerDriftRecords whether the player's car is moving sideways by a significant amount
rearWingSettingThe rear wing setting, as entered by the player
sinYawAngleHiHigh byte of the sine of the player's yaw angle
sinYawAngleLoLow byte of the sine of the player's yaw angle
spinYawDeltaHiHigh byte of the change in the spin yaw angle for the player's car
spinYawDeltaLoLow byte of the change in the spin yaw angle for the player's car
tyreSquealA flag to determine whether the front or rear tyres are squealing
wingBalanceValue used in the driving model when calculating the effect of the two wing settings
wingForceThe downward force from the front and rear wings
wingForce9595% of the downward force from the front and rear wings
wingForceGrassThe base downward force from the weight of the car when on grass, to which the downward force from the wings is added
wingForceTrackThe base downward force from the weight of the car when on the track, to which the downward force from the wings is added
wingScaleFactorScale factors for the wing settings
wingSettingContains the scaled wing settings
xAccelerationHiHigh byte of the x-coordinate of the change in velocity of the player's car in terms of 3D world coordinates
xAccelerationLoLow byte of the x-coordinate of the change in velocity of the player's car in terms of 3D world coordinates
xPlayerAccelHiHigh byte of the x-coordinate of the change in velocity of the player's car in the player's frame of reference
xPlayerAccelLoLow byte of the x-coordinate of the change in velocity of the player's car in the player's frame of reference
xPlayerSpeedHiHigh byte of the x-coordinate of the velocity vector (i.e. x-axis speed) for the player's car during this main loop iteration
xPlayerSpeedLoLow byte of the x-coordinate of the velocity vector (i.e. x-axis speed) for the player's car during this main loop iteration
xPlayerSpeedTopTop byte of the x-coordinate of the velocity vector (i.e. x-axis speed) for the player's car during this main loop iteration
xSteeringForceHiHigh byte of the sideways force applied by steering
xSteeringForceLoLow byte of the sideways force applied by steering
xTyreForceNoseHiHigh byte of the x-coordinate of the force vector produced by the front tyres in the nose of the car
xTyreForceNoseLoLow byte of the x-coordinate of the force vector produced by the front tyres in the nose of the car
xTyreForceRearHiHigh byte of the x-coordinate of the force vector produced by the rear tyres of the car
xTyreForceRearLoLow byte of the x-coordinate of the force vector produced by the rear tyres of the car
xVelocityHiHigh byte of the x-coordinate of the player's velocity vector, from the player's frame of reference
xVelocityLoLow byte of the x-coordinate of the player's velocity vector, from the player's frame of reference
zAccelerationHiHigh byte of the z-coordinate of the change in velocity of the player's car in terms of 3D world coordinates
zAccelerationLoLow byte of the z-coordinate of the change in velocity of the player's car in terms of 3D world coordinates
zPlayerAccelHiHigh byte of the z-coordinate of the change in velocity of the player's car in the player's frame of reference
zPlayerAccelLoLow byte of the z-coordinate of the change in velocity of the player's car in the player's frame of reference
zPlayerSpeedHiHigh byte of the z-coordinate of the velocity vector (i.e. z-axis speed) for the player's car during this main loop iteration
zPlayerSpeedLoLow byte of the z-coordinate of the velocity vector (i.e. z-axis speed) for the player's car during this main loop iteration
zPlayerSpeedTopTop byte of the z-coordinate of the velocity vector (i.e. z-axis speed) for the player's car during this main loop iteration
zTyreForceBothHigh byte of the z-coordinate of the force vector produced by the front and tyres combined
zTyreForceNoseHiHigh byte of the z-coordinate of the force vector produced by the front tyres in the nose of the car
zTyreForceNoseLoLow byte of the z-coordinate of the force vector produced by the front tyres in the nose of the car
zTyreForceRearHiHigh byte of the z-coordinate of the force vector produced by the rear tyres
zTyreForceRearLoLow byte of the z-coordinate of the force vector produced by the rear tyres
zVelocityHiHigh byte of the z-coordinate of the player's velocity vector, from the player's frame of reference
zVelocityLoLow byte of the z-coordinate of the player's velocity vector, from the player's frame of reference

Extra tracks
------------

modifyAddressHi (Brands Hatch)High byte of the location in the main game code where we modify a two-byte address
modifyAddressHi (Donington Park)High byte of the location in the main game code where we modify a two-byte address
modifyAddressHi (Nürburgring)High byte of the location in the main game code where we modify a two-byte address
modifyAddressHi (Oulton Park)High byte of the location in the main game code where we modify a two-byte address
modifyAddressHi (Snetterton)High byte of the location in the main game code where we modify a two-byte address
modifyAddressLo (Brands Hatch)Low byte of the location in the main game code where we modify a two-byte address
modifyAddressLo (Donington Park)Low byte of the location in the main game code where we modify a two-byte address
modifyAddressLo (Nürburgring)Low byte of the location in the main game code where we modify a two-byte address
modifyAddressLo (Oulton Park)Low byte of the location in the main game code where we modify a two-byte address
modifyAddressLo (Snetterton)Low byte of the location in the main game code where we modify a two-byte address
newContentHi (Brands Hatch)High byte of the two-byte address that we want to poke into the main game code at the modify location
newContentHi (Donington Park)High byte of the two-byte address that we want to poke into the main game code at the modify location
newContentHi (Nürburgring)High byte of the two-byte address that we want to poke into the main game code at the modify location
newContentHi (Oulton Park)High byte of the two-byte address that we want to poke into the main game code at the modify location
newContentHi (Snetterton)High byte of the two-byte address that we want to poke into the main game code at the modify location
newContentLo (Brands Hatch)Low byte of the two-byte address that we want to poke into the main game code at the modify location
newContentLo (Donington Park)Low byte of the two-byte address that we want to poke into the main game code at the modify location
newContentLo (Nürburgring)Low byte of the two-byte address that we want to poke into the main game code at the modify location
newContentLo (Oulton Park)Low byte of the two-byte address that we want to poke into the main game code at the modify location
newContentLo (Snetterton)Low byte of the two-byte address that we want to poke into the main game code at the modify location
segmentSlope (Brands Hatch)The height above ground of the current track sub-section
segmentSlope (Donington Park)The height above ground of the current track sub-section
segmentSlope (Nürburgring)The height above ground of the current track sub-section
segmentSlope (Oulton Park)The height above ground of the current track sub-section
segmentSlope (Snetterton)The height above ground of the current track sub-section
subSection (Brands Hatch)The number of the current sub-section
subSection (Donington Park)The number of the current sub-section
subSection (Nürburgring)The number of the current sub-section
subSection (Oulton Park)The number of the current sub-section
subSection (Snetterton)The number of the current sub-section
subSectionSegment (Brands Hatch)The number of the segment within the current sub-section, counting from the start of the sub-section
subSectionSegment (Donington Park)The number of the segment within the current sub-section, counting from the start of the sub-section
subSectionSegment (Nürburgring)The number of the segment within the current sub-section, counting from the start of the sub-section
subSectionSegment (Oulton Park)The number of the segment within the current sub-section, counting from the start of the sub-section
subSectionSegment (Snetterton)The number of the segment within the current sub-section, counting from the start of the sub-section
Track section data (Part 1 of 2) (Brands Hatch)Data for the track sections
Track section data (Part 2 of 2) (Brands Hatch)Data for the track sections
Track section data (Part 1 of 2) (Donington Park)Data for the track sections
Track section data (Part 2 of 2) (Donington Park)Data for the track sections
Track section data (Part 1 of 2) (Nürburgring)Data for the track sections
Track section data (Part 2 of 2) (Nürburgring)Data for the track sections
Track section data (Part 1 of 2) (Oulton Park)Data for the track sections
Track section data (Part 2 of 2) (Oulton Park)Data for the track sections
Track section data (Part 1 of 2) (Snetterton)Data for the track sections
Track section data (Part 2 of 2) (Snetterton)Data for the track sections
trackBaseSpeed (Brands Hatch)The base speed for each race class, used when generating the best racing lines and non-player driver speeds
trackBaseSpeed (Donington Park)The base speed for each race class, used when generating the best racing lines and non-player driver speeds
trackBaseSpeed (Nürburgring)The base speed for each race class, used when generating the best racing lines and non-player driver speeds
trackBaseSpeed (Oulton Park)The base speed for each race class, used when generating the best racing lines and non-player driver speeds
trackBaseSpeed (Snetterton)The base speed for each race class, used when generating the best racing lines and non-player driver speeds
trackCarSpacing (Brands Hatch)The spacing between the cars at the start of a qualifying lap, in segments
trackCarSpacing (Donington Park)The spacing between the cars at the start of a qualifying lap, in segments
trackCarSpacing (Nürburgring)The spacing between the cars at the start of a qualifying lap, in segments
trackCarSpacing (Oulton Park)The spacing between the cars at the start of a qualifying lap, in segments
trackCarSpacing (Snetterton)The spacing between the cars at the start of a qualifying lap, in segments
trackChecksum (Brands Hatch)The track file's checksum
trackChecksum (Donington Park)The track file's checksum
trackChecksum (Nürburgring)The track file's checksum
trackChecksum (Oulton Park)The track file's checksum
trackChecksum (Snetterton)The track file's checksum
trackGameName (Brands Hatch)The game name
trackGameName (Donington Park)The game name
trackGameName (Nürburgring)The game name
trackGameName (Oulton Park)The game name
trackGameName (Snetterton)The game name
trackGearPower (Brands Hatch)The power for each gear
trackGearPower (Donington Park)The power for each gear
trackGearPower (Nürburgring)The power for each gear
trackGearPower (Oulton Park)The power for each gear
trackGearPower (Snetterton)The power for each gear
trackGearRatio (Brands Hatch)The gear ratio for each gear
trackGearRatio (Donington Park)The gear ratio for each gear
trackGearRatio (Nürburgring)The gear ratio for each gear
trackGearRatio (Oulton Park)The gear ratio for each gear
trackGearRatio (Snetterton)The gear ratio for each gear
trackLapTimeMin (Brands Hatch)Lap times for adjusting the race class (minutes)
trackLapTimeMin (Donington Park)Lap times for adjusting the race class (minutes)
trackLapTimeMin (Nürburgring)Lap times for adjusting the race class (minutes)
trackLapTimeMin (Oulton Park)Lap times for adjusting the race class (minutes)
trackLapTimeMin (Snetterton)Lap times for adjusting the race class (minutes)
trackLapTimeSec (Brands Hatch)Lap times for adjusting the race class (seconds)
trackLapTimeSec (Donington Park)Lap times for adjusting the race class (seconds)
trackLapTimeSec (Nürburgring)Lap times for adjusting the race class (seconds)
trackLapTimeSec (Oulton Park)Lap times for adjusting the race class (seconds)
trackLapTimeSec (Snetterton)Lap times for adjusting the race class (seconds)
trackName (Brands Hatch)The track name
trackName (Donington Park)The track name
trackName (Nürburgring)The track name
trackName (Oulton Park)The track name
trackName (Snetterton)The track name
trackRaceSlowdown (Brands Hatch)Slowdown factor for non-player drivers in the race
trackRaceSlowdown (Donington Park)Slowdown factor for non-player drivers in the race
trackRaceSlowdown (Nürburgring)Slowdown factor for non-player drivers in the race
trackRaceSlowdown (Oulton Park)Slowdown factor for non-player drivers in the race
trackRaceSlowdown (Snetterton)Slowdown factor for non-player drivers in the race
trackSectionCount (Brands Hatch)The total number of track sections * 8
trackSectionCount (Donington Park)The total number of track sections * 8
trackSectionCount (Nürburgring)The total number of track sections * 8
trackSectionCount (Oulton Park)The total number of track sections * 8
trackSectionCount (Snetterton)The total number of track sections * 8
trackSlope (Brands Hatch)The slope at the start of each track section
trackSlope (Donington Park)The slope at the start of each track section
trackSlope (Nürburgring)The slope at the start of each track section
trackSlope (Oulton Park)The slope at the start of each track section
trackSlope (Snetterton)The slope at the start of each track section
trackSlopeDelta (Brands Hatch)The change in the slope (i.e. the change in the gradient) over the course of each segment for each sub-section of the track
trackSlopeDelta (Donington Park)The change in the slope (i.e. the change in the gradient) over the course of each segment for each sub-section of the track
trackSlopeDelta (Nürburgring)The change in the slope (i.e. the change in the gradient) over the course of each segment for each sub-section of the track
trackSlopeDelta (Oulton Park)The change in the slope (i.e. the change in the gradient) over the course of each segment for each sub-section of the track
trackSlopeDelta (Snetterton)The change in the slope (i.e. the change in the gradient) over the course of each segment for each sub-section of the track
trackStartPosition (Brands Hatch)The starting race position of the player during a practice or qualifying lap
trackStartPosition (Donington Park)The starting race position of the player during a practice or qualifying lap
trackStartPosition (Nürburgring)The starting race position of the player during a practice or qualifying lap
trackStartPosition (Oulton Park)The starting race position of the player during a practice or qualifying lap
trackStartPosition (Snetterton)The starting race position of the player during a practice or qualifying lap
trackSteering (Brands Hatch)The optimum steering for non-player drivers on each track section
trackSteering (Donington Park)The optimum steering for non-player drivers on each track section
trackSteering (Nürburgring)The optimum steering for non-player drivers on each track section
trackSteering (Oulton Park)The optimum steering for non-player drivers on each track section
trackSteering (Snetterton)The optimum steering for non-player drivers on each track section
trackSubConfig (Brands Hatch)Configuration data for each section that defines the sub-section numbers, and horizon calculations
trackSubConfig (Donington Park)Configuration data for each section that defines the sub-section numbers, and horizon calculations
trackSubConfig (Nürburgring)Configuration data for each section that defines the sub-section numbers, and horizon calculations
trackSubConfig (Oulton Park)Configuration data for each section that defines the sub-section numbers, and horizon calculations
trackSubConfig (Snetterton)Configuration data for each section that defines the sub-section numbers, and horizon calculations
trackSubCount (Brands Hatch)The total number of sub-sections in the track
trackSubCount (Donington Park)The total number of sub-sections in the track
trackSubCount (Nürburgring)The total number of sub-sections in the track
trackSubCount (Oulton Park)The total number of sub-sections in the track
trackSubCount (Snetterton)The total number of sub-sections in the track
trackSubSize (Brands Hatch)The size of each sub-section, i.e. the number of segments in each sub-section
trackSubSize (Donington Park)The size of each sub-section, i.e. the number of segments in each sub-section
trackSubSize (Nürburgring)The size of each sub-section, i.e. the number of segments in each sub-section
trackSubSize (Oulton Park)The size of each sub-section, i.e. the number of segments in each sub-section
trackSubSize (Snetterton)The size of each sub-section, i.e. the number of segments in each sub-section
trackTimerAdjust (Brands Hatch)Adjustment factor for the speed of the timers to allow for fine-tuning of time on a per-track basis
trackTimerAdjust (Donington Park)Adjustment factor for the speed of the timers to allow for fine-tuning of time on a per-track basis
trackTimerAdjust (Nürburgring)Adjustment factor for the speed of the timers to allow for fine-tuning of time on a per-track basis
trackTimerAdjust (Oulton Park)Adjustment factor for the speed of the timers to allow for fine-tuning of time on a per-track basis
trackTimerAdjust (Snetterton)Adjustment factor for the speed of the timers to allow for fine-tuning of time on a per-track basis
trackYawAngleHi (Brands Hatch)The high byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleHi (Donington Park)The high byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleHi (Nürburgring)The high byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleHi (Oulton Park)The high byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleHi (Snetterton)The high byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleLo (Brands Hatch)The low byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleLo (Donington Park)The low byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleLo (Nürburgring)The low byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleLo (Oulton Park)The low byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawAngleLo (Snetterton)The low byte of the yaw angle of the start of each track section (i.e. the direction of the track at that point)
trackYawDeltaHi (Brands Hatch)High byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaHi (Donington Park)High byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaHi (Nürburgring)High byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaHi (Oulton Park)High byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaHi (Snetterton)High byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaLo (Brands Hatch)Low byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaLo (Donington Park)Low byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaLo (Nürburgring)Low byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaLo (Oulton Park)Low byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
trackYawDeltaLo (Snetterton)Low byte of the change in yaw angle that we apply to each segment in the specified sub-section when building the track
xTrackCurve (Brands Hatch)The x-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
xTrackCurve (Donington Park)The x-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
xTrackCurve (Nürburgring)The x-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
xTrackCurve (Oulton Park)The x-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
xTrackCurve (Snetterton)The x-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
xTrackSignVector (Brands Hatch)The x-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
xTrackSignVector (Donington Park)The x-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
xTrackSignVector (Nürburgring)The x-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
xTrackSignVector (Oulton Park)The x-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
xTrackSignVector (Snetterton)The x-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
yawAngleHi (Brands Hatch)High byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleHi (Donington Park)High byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleHi (Nürburgring)High byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleHi (Oulton Park)High byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleHi (Snetterton)High byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleLo (Brands Hatch)Low byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleLo (Donington Park)Low byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleLo (Nürburgring)Low byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleLo (Oulton Park)Low byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yawAngleLo (Snetterton)Low byte of the current yaw angle of the track, i.e. the angle at which the track is pointing along the ground
yTrackSignVector (Brands Hatch)The y-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
yTrackSignVector (Donington Park)The y-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
yTrackSignVector (Nürburgring)The y-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
yTrackSignVector (Oulton Park)The y-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
yTrackSignVector (Snetterton)The y-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
zTrackCurve (Brands Hatch)The z-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
zTrackCurve (Donington Park)The z-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
zTrackCurve (Nürburgring)The z-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
zTrackCurve (Oulton Park)The z-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
zTrackCurve (Snetterton)The z-coordinate of the tangent vector (i.e. the curve direction) at 64 points on a one-eighth circle covering 0 to 45 degrees
zTrackSignVector (Brands Hatch)The z-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
zTrackSignVector (Donington Park)The z-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
zTrackSignVector (Nürburgring)The z-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
zTrackSignVector (Oulton Park)The z-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
zTrackSignVector (Snetterton)The z-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign

Keyboard
--------

configKeysDetails of the configuration settings that are set by the shifted configuration keys
lapsFromOptionTable to convert from the option numbers in the laps menu to the actual number of laps
menuKeysNegative inkey values for the menu keys (SPACE, "1", "2" and "3") for the Acornsoft release
menuKeysSupNegative inkey values for the menu keys (SPACE, "1", "2" and "3") for the Superior Software release
shiftedKeysNegative inkey values for the configuration keys that are pressed in combination with SHIFT
timeFromOptionTable to convert from the option numbers in the qualifying lap duration menu to the actual number of minutes

Main loop
---------

mainLoopCounterHiHigh byte of the main loop counter, which increments on each iteration of the main driving loop

Maths (Geometry)
----------------

arctanPTable for arctan values when calculating pitch angles
arctanYTable for arctan values when calculating yaw angles

Screen buffer
-------------

backgroundColourThe background colour for each track line
dashData0Contains code that gets moved into screen memory
dashData1Contains code that gets moved into screen memory
dashData10Contains code that gets moved into screen memory
dashData11Contains code that gets moved into screen memory
dashData12Contains code that gets moved into screen memory
dashData13Contains code that gets moved into screen memory
dashData14Contains code that gets moved into screen memory
dashData15Contains code that gets moved into screen memory
dashData16Contains code that gets moved into screen memory
dashData17Contains code that gets moved into screen memory
dashData18Contains code that gets moved into screen memory
dashData19Contains code that gets moved into screen memory
dashData2Contains code that gets moved into screen memory
dashData20Contains code that gets moved into screen memory
dashData21Contains code that gets moved into screen memory
dashData22Contains code that gets moved into screen memory
dashData23Contains code that gets moved into screen memory
dashData24Contains code that gets moved into screen memory
dashData25Contains code and part of the dashboard image that gets moved into screen memory
dashData26Contains part of the dashboard image that gets moved into screen memory
dashData27Contains part of the dashboard image that gets moved into screen memory
dashData28Contains part of the dashboard image that gets moved into screen memory
dashData29Contains part of the dashboard image that gets moved into screen memory
dashData3Contains code that gets moved into screen memory
dashData30Contains part of the dashboard image that gets moved into screen memory
dashData31Contains part of the dashboard image that gets moved into screen memory
dashData32Contains part of the dashboard image that gets moved into screen memory
dashData33Contains part of the dashboard image that gets moved into screen memory
dashData34Contains part of the dashboard image that gets moved into screen memory
dashData35Contains part of the dashboard image that gets moved into screen memory
dashData36Contains part of the dashboard image that gets moved into screen memory
dashData37Contains part of the dashboard image that gets moved into screen memory
dashData38Contains part of the dashboard image that gets moved into screen memory
dashData39Contains part of the dashboard image that gets moved into screen memory
dashData4Contains code that gets moved into screen memory
dashData40Contains part of the dashboard image that gets moved into screen memory
dashData41Contains part of the dashboard image that gets moved into screen memory
dashData42Contains part of the dashboard image that gets moved into screen memory
dashData5Contains code that gets moved into screen memory
dashData6Contains code that gets moved into screen memory
dashData7Contains code that gets moved into screen memory
dashData8Contains code that gets moved into screen memory
dashData9Contains code that gets moved into screen memory
dashDataAddressAddresses for copying the first block of dash data between the main game code and screen memory
dashDataOffsetOffset of the dash data within each dash data block
fencePixelsGrassPixel bytes for the fence with green grass behind it
fencePixelsSkyPixel bytes for the fence with blue sky behind it
ldaDrawByteLow address bytes of the LDA #0 instructions in the DRAW_BYTE macros, for use when drawing track lines around the dashboard
lowestTrackLineUsed to prevent objects from being drawn below the horizon line
staDrawByteLow address bytes of the STA instructions in the DRAW_BYTE macros, for use when drawing track lines around the dashboard
staDrawByteTyreLow address bytes of the STA instructions in the DRAW_BYTE macros, for use when drawing track lines around the tyres
zeroIfYIs55A lookup table for zeroing Y if and only if it is &55

Screen mode
-----------

irq1AddressStores the previous value of IRQ1V before we install our custom IRQ handler
irqCounterCounter that gets incremented every time the IRQ routine reaches section 4 of the custom screen
paletteSection0Colour palette for screen section 0 in the custom screen mode (the mode 4 portion)
paletteSection2Colour palette for screen section 2 in the custom screen mode (part of the mode 5 portion)
paletteSection3Colour palette for screen section 3 in the custom screen mode (part of the mode 5 portion)
paletteSection4Colour palette for screen section 4 in the custom screen mode (part of the mode 5 portion)
screenRegistersThe 6845 registers for the custom screen mode
screenSectionThe section of the screen that is currently being drawn by the custom screen interrupt handler (0 to 4)
screenTimer1The screen timer offset between the start of section 2 and the start of section 3
screenTimer2The screen timer offset between the start of section 3 and the start of section 4

Setup
-----

blockEndHiHigh byte of the end address of blocks moved by the MoveCode routine
blockEndLoLow byte of the end address of blocks moved by the MoveCode routine
blockStartHiHigh byte of the start address of blocks moved by the MoveCode routine
blockStartLoLow byte of the start address of blocks moved by the MoveCode routine
blockToHiHigh byte of the destination address of blocks moved by the MoveCode routine
blockToLoLow byte of the destination address of blocks moved by the MoveCode routine
ldaZeroContains code that's used for modifying the MoveCode routine

Sound
-----

envelopeDataData for the sound envelope for squealing tyres
soundBufferDetails of each sound channel's buffer status
soundDataOSWORD blocks for making the various game sounds
xStoreSoundTemporary storage for X so it can be preserved through calls to the sound routines

Tactics
-------

sectionSteeringThe optimum steering for each section

Text
----

characterDefStorage for a character definition when printing characters
driverNames1The first batch of driver names (1 of 5)
driverNames2The second batch of driver names (2 of 5)
driverNames3The third batch of driver names (3 of 5)
driverNames4The fourth batch of driver names (4 of 5)
driverNames5The fifth batch of driver names (5 of 5)
endChecksThe screen address offset of the end of each chequered header line
gearNumberTextThe character to print on the gear stick for each gear
headerBackgroundBackground colour for printing mode 7 headers
headerForegroundForeground colour for printing mode 7 headers
headerSpacesNumber of spaces for printing mode 7 headers
rowColoursThree different palettes for displaying even-odd rows in tables
startChecksThe screen address offset of the start of each chequered header line
token0Text for recursive token 0
token1Text for recursive token 1
token10Text for recursive token 10
token11Text for recursive token 11
token12Text for recursive token 12
token13Text for recursive token 13
token14Text for recursive token 14
token15Text for recursive token 15
token16Text for recursive token 16
token17Text for recursive token 17
token18Text for recursive token 18
token19Text for recursive token 19
token2Text for recursive token 2
token20Text for recursive token 20
token21Text for recursive token 21
token22Text for recursive token 22
token23Text for recursive token 23
token24Text for recursive token 24
token25Text for recursive token 25
token26Text for recursive token 26
token27Text for recursive token 27
token28Text for recursive token 28
token29Text for recursive token 29
token3Text for recursive token 3
token30Text for recursive token 30
token31Text for recursive token 31
token32Text for recursive token 32
token33Text for recursive token 33
token34Text for recursive token 34
token35Text for recursive token 35
token36Text for recursive token 36
token37Text for recursive token 37
token38Text for recursive token 38
token39Text for recursive token 39
token4Text for recursive token 4
token40Text for recursive token 40
token41Text for recursive token 41
token42Text for recursive token 42
token43Text for recursive token 43
token44Text for recursive token 44
token45Text for recursive token 45
token46Text for recursive token 46
token48Text for recursive token 48
token49Text for recursive token 49
token5Text for recursive token 5
token50Text for recursive token 50
token51Text for recursive token 51
token52Text for recursive token 52
token53Text for recursive token 53
token6Text for recursive token 6
token7Text for recursive token 7
token8Text for recursive token 8
token9Text for recursive token 9
tokenHihigh byte of the token address lookup table
tokenLoLow byte of the token address lookup table
updateDriverInfoFlag that controls whether the driver names are updated in the information block at the top of the screen
xCursorThe cursor's x-coordinate, which can either be a pixel coordinate or a character row
xHeaderColumn number for printing mode 7 headers
yCursorThe cursor's pixel y-coordinate
yHeaderRow number for printing mode 7 headers

Track data
----------

Track section data (Part 1 of 2) (Silverstone)Data for the track sections
Track section data (Part 2 of 2) (Silverstone)Data for the track sections
trackBaseSpeed (Silverstone)The base speed for each race class, used when generating the best racing lines and non-player driver speeds
trackCarSpacing (Silverstone)The spacing between the cars at the start of a qualifying lap, in segments
trackChecksum (Silverstone)The track file's checksum
trackGameName (Silverstone)The game name
trackGearPower (Silverstone)The power for each gear
trackGearRatio (Silverstone)The gear ratio for each gear
trackLapTimeMin (Silverstone)Lap times for adjusting the race class (minutes)
trackLapTimeSec (Silverstone)Lap times for adjusting the race class (seconds)
trackLength (Brands Hatch)The length of the full track in terms of segments
trackLength (Donington Park)The length of the full track in terms of segments
trackLength (Nürburgring)The length of the full track in terms of segments
trackLength (Oulton Park)The length of the full track in terms of segments
trackLength (Silverstone)The length of the full track in terms of segments
trackLength (Snetterton)The length of the full track in terms of segments
trackName (Silverstone)The track name
trackRaceSlowdown (Silverstone)Slowdown factor for non-player drivers in the race
trackSectionCount (Silverstone)The total number of track sections * 8
trackSignData (Brands Hatch)Base coordinates and object types for 16 road signs
trackSignData (Donington Park)Base coordinates and object types for 16 road signs
trackSignData (Nürburgring)Base coordinates and object types for 16 road signs
trackSignData (Oulton Park)Base coordinates and object types for 16 road signs
trackSignData (Silverstone)Base coordinates and object types for 16 road signs
trackSignData (Snetterton)Base coordinates and object types for 16 road signs
trackStartLine (Brands Hatch)The segment number of the starting line
trackStartLine (Donington Park)The segment number of the starting line
trackStartLine (Nürburgring)The segment number of the starting line
trackStartLine (Oulton Park)The segment number of the starting line
trackStartLine (Silverstone)The segment number of the starting line
trackStartLine (Snetterton)The segment number of the starting line
trackStartPosition (Silverstone)The starting race position of the player during a practice or qualifying lap
trackSteering (Silverstone)The optimum steering for non-player drivers on each track section
trackTimerAdjust (Silverstone)Adjustment factor for the speed of the timers to allow for fine-tuning of time on a per-track basis
trackVectorCount (Brands Hatch)The total number of segment vectors in the segment vector tables
trackVectorCount (Donington Park)The total number of segment vectors in the segment vector tables
trackVectorCount (Nürburgring)The total number of segment vectors in the segment vector tables
trackVectorCount (Oulton Park)The total number of segment vectors in the segment vector tables
trackVectorCount (Silverstone)The total number of segment vectors in the segment vector tables
trackVectorCount (Snetterton)The total number of segment vectors in the segment vector tables
xTrackSegmentI (Silverstone)Vector x-coordinates between two consecutive segments on the inside of the track
xTrackSegmentO (Silverstone)Vector x-coordinates from the inside to the outside of the track for each segment
xTrackSignVector (Silverstone)The x-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
yTrackSegmentI (Silverstone)Vector y-coordinates between two consecutive segments on the inside of the track
yTrackSignVector (Silverstone)The y-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
zTrackSegmentI (Silverstone)Vector z-coordinates between two consecutive segments on the inside of the track
zTrackSegmentO (Silverstone)Vector z-coordinates from the inside to the outside of the track for each segment
zTrackSignVector (Silverstone)The z-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign

Track geometry
--------------

horizonTrackWidthThe arc of the track at the horizon (i.e. the track width at the horizon), halved
markerDataThe segment flags for each of the three corner markers
markerListIndexThe index of the corresponding entry in the track segment list for each of the three corner markers
newSectionFetchedFlag that determines whether a new track section has been fetched
previousSignNumberStores the number of the sign from the previous call to the BuildRoadSign routine
segmentFlagMaskA mask for extracting bits from the segment flag byte when processing the track verge and corner markers
segmentStepThe number of segments we step over when working backwards through the track segment buffer in GetSegmentAngles
vergeColourLookup table for converting bits 0-2 of the segment flag byte into the verge colour scheme
vergeDataLeftData (such as colour) for the verge marks on the left side of the track
vergeDataRightData (such as colour) for the verge marks on the right side of the track
vergeScaleScale factors for the track verge width for different types of verge (larger value = smaller verge width)
xMarkerHiHigh byte of the x-axis distance between the track edge and the three corner markers
xMarkerLoLow byte of the x-axis distance between the track edge and the three corner markers
xVergeLeftHiHigh byte of segment yaw angles along the left track verge in front of the player (i.e. along the x-axis)
xVergeLeftLoLow byte of segment yaw angles along the left track verge in front of the player (i.e. along the x-axis)
xVergeRightHiHigh byte of segment yaw angles along the right track verge in front of the player (i.e. along the x-axis)
xVergeRightLoLow byte of segment yaw angles along the right track verge in front of the player (i.e. along the x-axis)
yVergeLeftSegment pitch angles along the left track verge in front of the player (i.e. along the up-down y-axis)
yVergeRightSegment pitch angles along the right track verge in front of the player (i.e. along the up-down y-axis)

Workspace variables
-------------------

backgroundLeft Details of the verge colour for the left side of the verge edge we are drawing, to use as the track line's background colour
backgroundRight Details of the verge colour for the right side of the verge edge we are drawing, to use as the track line's background colour
bestLapMinutes Minutes of each driver's best lap time, stored in BCD
bestLapSeconds Seconds of each driver's best lap time, stored in BCD
bestLapTenths Tenths of seconds of each driver's best lap time, stored in BCD
blockCounter A counter for the dash data block we are processing
blockNumber The dash data block number for the current edge
blockOffset The dash data offset for the current edge
bottomTrackLine The bottom track line for the current object part
bumpyGrassHeight The height of the bumps when driving over grass, which fluctuates randomly in the range 1 to 7
carProgress Lowest byte of each car's progress through the segment it's in
carRacingLine Each car's position on the track in the x-axis
carSectionSpeed Set to the driver speed for the next track section, which is taken from the track data and used to set the section's maximum speed for non-player drivers
carSpeedHi High byte of each car's forward speed
carStatus Each car's status byte
carSteering Contains the steering to apply to each car
clockMinutes Minutes for the clock timer
clockSeconds Seconds for the clock timer
clockTenths Tenths of seconds for the clock timer
clutchEngaged Determines whether the clutch is engaged
collisionDriver The number of the driver being hit by the player's car
colourData Colour data for the current object part
colourScheme The number of the table colour scheme passed to the SetRowColours routine:
configAssist A key has been pressed to toggle computer assisted steering (CAS)
configJoystick A key has been pressed to set joystick or keyboard
configPause A key has been pressed to pause the game
configStop A key has been pressed that stops the race
configVolume A key has been pressed to change the volume
currentPlayer The number of the current player
currentPosition The position of the current player
currentPositionBCD The current race position in BCD
debugSpinning This variable is never read, but is set to 64 and back to 0 when the car spins past the point where it changes the direction that it is facing along the track
directionFacing The direction that our car is facing
driverGridRow The grid row for each driver (0 to 9)
driverLapNumber The current lap number for each driver
driverPrinted The number of the driver we just printed in the PrintPositionName routine
driversInOrder A list of driver numbers in order
driversInOrder2 Used to store a copy of the driversInOrder list
driverSpeed The average speed of this driver in the race (88 to 162)
edgeDistanceHi High byte of the distance between the player's car and the nearest track edge
edgeDistanceLo Low byte of the distance between the player's car and the nearest track edge
edgePixel The current edge, as a one-pixel byte
edgePixelMask The pixel mask for the previous edge
edgeSegmentNumber The number of the segment within the track segment list that is closest to the player's car
edgeSegmentPointer The index of the segment within the track verge buffer that is closest to the player's car
edgeYawAngle The yaw angle of the track segment that is closest to the player's car, from the point of view of the car
engineStatus Whether or not the engine is on
engineTorque The power being generated by the engine
frontSegmentIndex Used to store the index * 3 of the front track segment in the track segment buffer
G Temporary storage, used in a number of places
gearChange Used to store the direction of the gear change
gearChangeKey Determines whether or not a gear change key has been pressed
gearNumber The current gear number
GG Temporary storage, used in a number of places
H Temporary storage, used in a number of places
heightAboveTrack The car's height above the track, for when it is being dropped from the crane, or jumping from hitting the verge too fast
HH This byte does not appear to be used
horizonLine The track line number of the horizon
horizonListIndex The track section or segment that's on the horizon, given in terms of the index within the track section list (or the track segment list)
I Temporary storage, used in a number of places
II Temporary storage, used in a number of places
J Temporary storage, used in a number of places
JJ Temporary storage, used in a number of places
K Temporary storage, used in a number of places
L Temporary storage, used in a number of places
lapMinutes Minutes for the lap timer
lapSeconds Seconds for the lap timer
lapTenths Tenths of seconds for the lap timer
leaveTrackTimer The leave track timer
leftOfEdge The fill colour to the left of the edge we are drawing
leftSegment For each track line, the index of the segment within the track segment list for the left verge
leftTrackStart For each track line, the block number where the track starts (i.e. the left edge of the black track)
leftVergeStart For each track line, the block number where the left track verge starts
lineBufferAddrHi The low byte of the screen address of each pixel in the line buffer
lineBufferAddrLo The low byte of the screen address of each pixel in the line buffer
lineBufferPixel The original screen contents of each pixel in the line buffer
lineBufferSize The size of the line buffer
LL Temporary storage, used in a number of places
M Temporary storage, used in a number of places
mainLoopCounterLo Low byte of the main loop counter, which increments on each iteration of the main driving loop
markerNumber The marker number that we are drawing in the DrawCornerMarkers routine
markersToDraw The number of corner markers to draw
MM Temporary storage, used in a number of places
nextBlockNumber The dash data block number for the next edge
nextEdge The next edge that we are drawing as part of an object part (where applicable)
nextEdgeCoord The x-coordinate for the next edge
NN Temporary storage, used in a number of places
numberOfLaps The number of laps in the race (5, 10 or 20)
objectDistanceHi The high byte of the distance to the current object
objectDistanceLo The low byte of the distance to the current object
objectNumber The object number of the four-part car we are drawing
objectPitchAngle Each object's pitch angle
objectSegmentHi High byte of each object's segment, i.e. its position around on the track
objectSegmentLo Low byte of each object's segment, i.e. its position around on the track
objectSize The size of each of the objects (i.e. the scaled value of scaleUp for the object)
objectStatus Various status flags for each object
objectType The type of object to draw (0 to 12)
objSectionSegmt Each object's segment number within the current track section, counting from the start of the section
objTrackSection The number of the track section * 8 for each object
objYawAngleHi High byte of each object's yaw angle
objYawAngleLo Low byte of each object's yaw angle
oddsOfEngineStart The chances of the engine starting while revving the engine (the engine will start with a chance of 1 in oddsOfEngineStart)
P Temporary storage, used in a number of places
pastHalfway Stores which half of the track the player is in
pixelMaskIndex The index into the vergePixelMask table for the colour of the verge edge we are drawing in DrawSegmentEdge
pixelMaskNoVerge Offset within the vergePixelMask table for segments that are too far away to show a verge, i.e. those outside the verge depth of field
pixelMaskVerge Offset within the vergePixelMask table for segments that are close enough to show a verge, i.e. those within the verge depth of field
playerHeading The player's yaw angle, relative to the direction of the track, where a heading of 0 means the player is pointing straight along the track
playerMoving Flag to denote whether the player's car is moving
playerPastSegment Determines whether the player has gone past the closest segment to the player (i.e. whether the relative yaw angle of the segment is greater than 90 degrees)
playerPitchAngle The player's pitch angle
playerSegmentIndex Used to store the index * 3 of the track segment containing the player's car in the track segment buffer
playerSpeedHi High byte of the speed of the player's car along the track
playerSpeedLo Low byte of the speed of the player's car along the track
playerYawAngleHi High byte of the player's yaw angle
playerYawAngleLo Low byte of the player's yaw angle
positionAhead The number of the position ahead of the current player's position
positionBehind The number of the position behind the current player's position
positionChangeBCD The change in BCD for the player's race position
positionNumber Position numbers to show in the first column of the driver table
PP Temporary storage, used in a number of places
pressingShiftArrow Bit 7 is set if we are pressing SHIFT and right arrow (which restarts the game)
prevBlockNumber The dash data block number for the previous edge
prevDriverSpeed06 Bits 0-6 of the previous value of trackDriverSpeed when calculating the optimum steering for a track segment
prevDriverSpeed7 The previous value of trackDriverSpeed when calculating the optimum steering for a track segment, only used for accessing bit 7
prevEdgeInByte Determines whether we are drawing two edges within the same pixel byte in DrawObjectEdge
prevHorizonIndex The value of horizonListIndex from the previous call to the GetTrackAndMarkers routine
previousSteering The previous value of sectionSteering when calculating the optimum steering for a track segment
prevPitchIndex The index of the pitch angles in the verge buffer for the previous entry in the verge buffer when drawing the verge edges
prevSegmentIndex Used to store the index * 3 of the previous track segment
prevSegmentOffset The segment coordinate offset for the previous segment when adding segments to the track segment list
prevYawIndex The index of the yaw angles in the verge buffer for the previous entry in the verge buffer when drawing the verge edges
printMode Determines how the next character is printed on-screen:
processContact Another car is close enough to the player's car for us to process car-on-car contact
Q Temporary storage, used in a number of places
QQ Temporary storage, used in a number of places
qualifyTimeEnding Determines whether the time warnings have been shown at the end of the qualifying time:
R Temporary storage, used in a number of places
raceStarted Flag determining whether the race has started
raceStarting The current stage of the starting lights at the start of the race
resetSectionList Controls whether to reset the contents of the track section list
revCount The current rev count, as shown on the rev counter
revsOnGearChange The rev count when the gear was last changed
rightGrassStart For each track line, the block number where the grass starts to the right of the track
rightOfEdge The fill colour to the right of the edge we are drawing
rightSegment For each track line, the index of the segment within the track segment list for the right verge
rightVergeStart For each track line, the block number where the right track verge starts
rowCounter The table row number when printing the driver tables
RR Temporary storage, used in a number of places
S Temporary storage, used in a number of places
scaleDown The denominator scale factor for scaling an object scaffold (i.e. scale down)
scaleUp The nominator scale factor for scaling an object scaffold (i.e. scale up)
secondAxis The number of the second axis to calculate in the GetRotationMatrix routine
sectionBehind Used to store the number * 8 of the track section behind us when we drive backwards along the track
sectionCounter A counter for the track section we are processing
sectionListPointer The index of the current entry in the track section list, as we only update one entry in the list on each iteration of the main driving loop
sectionListSize The size of the track section list that's used when calculating the positions of the track verges
sectionListStart The start index of the track section list that's used when calculating the positions of the track verges
sectionListValid The index of the first valid entry in the track section list
segmentCounter A counter for the track segment we are processing
segmentDirection The relative dirction of our car, to use when processing segments in the GetSegmentAngles routine
segmentFlags Flags for a track segment in the track segment buffer
segmentListPointer The index of the current entry in the track segment list
segmentListRight The index of the last entry in the track segment list for the right side of the track
segmentOffset The offset to use for the segment being processed in the GetSegmentAngles routine
segmentSteering The carSteering value to steer round the corner for a track segment in the track segment buffer
segmentVector The segment vector number for a track segment in the track segment buffer
setSpeedForDriver The driver whose speed will be set on the next call to the SetDriverSpeed routine
soundRevCount The current pitch for the revs sound
soundRevTarget The target pitch for the revs sound
spinPitchAngle The amount of pitch angle spin that is being applied to the player's car
SS Temporary storage, used in a number of places
startingStack The value of the stack pointer when the game starts, so we can restore it when restarting the game
T Temporary storage, used in a number of places
thisDriver The number of the car we are currently drawing
thisEdge The current edge that we are drawing as part of an object part
thisObjectIndex The index of the current object part's data as we work our way through an object's constituent parts
thisPitchIndex The index of the pitch angle in the track segment list for the verge we are processing
thisPosition The position of the car that we are analysing in the MoveAndDrawCars routine
thisSectionFlags The track section flags for the current track section
thisSectionNumber The number * 8 of the current section number when calculating the track verges
thisSignNumber The sign number that we are currently building
thisVectorNumber The number of the segment vector for the current track segment, ready to store in the track segment buffer as segmentVector
thisYawIndex The index of the yaw angle in the track segment list for the verge we are processing
throttleBrake The amount of throttle or brake being applied
throttleBrakeState Denotes whether the throttle or brake are being applied
timerAdjust A counter for implementing the clock speed adjustment
topTrackLine The top track line for the current object part
totalPointsTop Top byte of total accumulated points for each driver
totalRaceMinutes Minutes of each driver's total race time, stored in BCD
totalRaceSeconds Seconds of each driver's total race time, stored in BCD
totalRaceTenths Tenths of seconds of each driver's total race time, stored in BCD
trackBaseSpeed The base speed for each race class, used when generating the best racing lines and non-player driver speeds
trackCarSpacing The spacing between the cars at the start of a qualifying lap, in segments
trackDriverSpeed The maximum speed for non-player drivers on this section of the track
trackGearPower The power for each gear
trackGearRatio The gear ratio for each gear
trackLapTimeMin Lap times for adjusting the race class (minutes)
trackLapTimeSec Lap times for adjusting the race class (seconds)
trackLength The length of the full track in terms of segments
trackRaceSlowdown Slowdown factor for non-player drivers in the race
trackSectionCount The total number of track sections * 8
trackSectionData Various data for the track section:
trackSectionFlag Various flags for the track section:
trackSectionFrom The number of the first segment vector in each section, which enables us to fetch the segment vectors for a given track section
trackSectionSize The length of each track section in terms of segments
trackSectionTurn The number of the segment in the section where non-player drivers should start turning in preparation for the next section
trackSignData Base coordinates and object types for 16 road signs
trackStartLine The segment number of the starting line
trackStartPosition The starting race position of the player during a practice or qualifying lap
trackSteering The optimum steering for non-player drivers to apply on each track section
trackTimerAdjust Adjustment factor for the speed of the timers to allow for fine-tuning of time on a per-track basis
trackVectorCount The total number of segment vectors in the segment vector tables
TT Temporary storage, used in a number of places
turnCounter A counter for the length of turn when calculating the optimum steering for a track segment
tyreRightEdge Storage for the first track pixel byte along the right edge of the left tyre
U Temporary storage, used in a number of places
updateBackground Flag to indicate we have changed the background colour of a track line
updateDrivingInfo Determines which parts of the driving information should be updated at the top of the screen
UU Temporary storage, used in a number of places
V Temporary storage, used in a number of places
vectorNumber The segment vector number when building car objects in the BuildCarObjects routine
vergeBufferEnd The index of the last entry in the track verge buffer for the side of the track we are currently drawing in DrawTrack
vergeDepthOfField The index into the verge buffer of the furthest verge mark, so for segments further from the player than this point, we do not draw verge marks
vergeOnScreenEdge Determines whether the verge edge we are drawing for the current segment is partially off-screen
vergeTopLeft The track line just above the segment at vergeDepthOfField (i.e. the furthest segment that might contain a verge) when drawing the left verge
vergeTopRight The track line just above the segment at vergeDepthOfField (i.e. the furthest segment that might contain a verge) when drawing the right verge
vergeType The type of verge that is currently being drawn in the DrawTrack routine:
volumeLevel The game's volume level
VV Temporary storage, used in a number of places
W Temporary storage, used in a number of places
WW Temporary storage, used in a number of places
xCoord1Hi The high byte of the x-coordinate of the temporary coordinate variable (xCoord1, yCoord1, zCoord1)
xCoord1Lo The low byte of the x-coordinate of the temporary coordinate variable (xCoord1, yCoord1, zCoord1)
xCoord2Hi The high byte of the x-coordinate of the temporary coordinate variable (xCoord2, yCoord2, zCoord2)
xCoord2Lo The low byte of the x-coordinate of the temporary coordinate variable (xCoord2, yCoord2, zCoord2)
xHelmetCoordHi High byte of the x-coordinate of the body/helmet object in the four-object car
xHelmetCoordLo Low byte of the x-coordinate of the body/helmet object in the four-object car
xPixelCoord The pixel x-coordinate of the centre of the current object
xPrevVelocityHi Used to store the high byte of the x-coordinate of the player's previous velocity vector during the driving model calculations (i.e. the velocity from the last iteration of the main loop)
xPrevVelocityLo Used to store the low byte of the x-coordinate of the player's previous velocity vector during the driving model calculations (i.e. the velocity from the last iteration of the main loop)
xSegmentCoordIHi The high byte of the 3D x-coordinate for an inner track segment in the track segment buffer
xSegmentCoordILo The low byte of the 3D x-coordinate for an inner track segment in the track segment buffer
xSegmentCoordOHi The high byte of the 3D x-coordinate for an outer track segment in the track segment buffer
xSegmentCoordOLo The low byte of the 3D x-coordinate for an outer track segment in the track segment buffer
xSpinVelocityHi Used to store the high byte of the scaled spin yaw angle during the driving model calculations
xSpinVelocityLo Used to store the low byte of the scaled spin yaw angle during the driving model calculations
xStoreDraw Temporary storage for X so it can be preserved through calls to DrawCarInPosition, DrawCarOrSign and DrawSegmentEdge
xTrackSectionIHi High byte of the x-coordinate of the starting point of the inner verge of each track section
xTrackSectionILo Low byte of the x-coordinate of the starting point of the inner verge of each track section
xTrackSectionOHi High byte of the x-coordinate of the starting point of the outside verge of each track section
xTrackSectionOLo Low byte of the x-coordinate of the starting point of the outside verge of each track section
xTrackSegmentI Vector x-coordinates between two consecutive segments on the inside of the track
xTrackSegmentO Vector x-coordinates from the inside to the outside of the track for each segment
xTrackSignVector The x-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
yCoord1Hi The high byte of the y-coordinate of the temporary coordinate variable (xCoord1, yCoord1, zCoord1)
yCoord1Lo The low byte of the y-coordinate of the temporary coordinate variable (xCoord1, yCoord1, zCoord1)
yCoord2Hi The high byte of the y-coordinate of the temporary coordinate variable (xCoord2, yCoord2, zCoord2)
yCoord2Lo The low byte of the y-coordinate of the temporary coordinate variable (xCoord2, yCoord2, zCoord2)
yGravityDelta The distance in the y-axis that the car would fall if the track wasn't there, for use when calculating the outcome of jumps and being dropped from the crane
yHelmetCoordHi High byte of the y-coordinate of the body/helmet object in the four-object car
yHelmetCoordLo Low byte of the y-coordinate of the body/helmet object in the four-object car
yJumpHeight The height of the car's jump (or crane lift), in terms of track lines, which we use to alter the position of the horizon
yPixelCoord The pixel y-coordinate of the centre of the current object
ySegmentCoordIHi The high byte of the 3D y-coordinate for an inner track segment in the track segment buffer
ySegmentCoordILo The low byte of the 3D y-coordinate for an inner track segment in the track segment buffer
ySegmentCoordOHi The high byte of the 3D y-coordinate for an outer track segment in the track segment buffer
ySegmentCoordOLo The low byte of the 3D y-coordinate for an outer track segment in the track segment buffer
yTrackSectionIHi High byte of the y-coordinate of the starting point of the inner verge of each track section
yTrackSectionILo Low byte of the y-coordinate of the starting point of the inner verge of each track section
yTrackSegmentI Vector y-coordinates between two consecutive segments on the inside of the track
yTrackSignVector The y-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign
zCoord1Hi The high byte of the z-coordinate of the temporary coordinate variable (xCoord1, yCoord1, zCoord1)
zCoord1Lo The low byte of the z-coordinate of the temporary coordinate variable (xCoord1, yCoord1, zCoord1)
zCoord2Hi The high byte of the z-coordinate of the temporary coordinate variable (xCoord2, yCoord2, zCoord2)
zCoord2Lo The low byte of the z-coordinate of the temporary coordinate variable (xCoord2, yCoord2, zCoord2)
zHelmetCoordHi High byte of the z-coordinate of the body/helmet object in the four-object car
zHelmetCoordLo Low byte of the z-coordinate of the body/helmet object in the four-object car
zSegmentCoordIHi The high byte of the 3D z-coordinate for an inner track segment in the track segment buffer
zSegmentCoordILo The low byte of the 3D z-coordinate for an inner track segment in the track segment buffer
zSegmentCoordOHi The high byte of the 3D z-coordinate for an outer track segment in the track segment buffer
zSegmentCoordOLo The low byte of the 3D z-coordinate for an outer track segment in the track segment buffer
zTrackSectionIHi High byte of the z-coordinate of the starting point of the inner verge of each track section
zTrackSectionILo Low byte of the z-coordinate of the starting point of the inner verge of each track section
zTrackSectionOHi High byte of the z-coordinate of the starting point of the outside verge of each track section
zTrackSectionOLo Low byte of the z-coordinate of the starting point of the outside verge of each track section
zTrackSegmentI Vector z-coordinates between two consecutive segments on the inside of the track
zTrackSegmentO Vector z-coordinates from the inside to the outside of the track for each segment
zTrackSignVector The z-coordinate of the track sign vector for each sign, to be scaled and added to the inner track section vector for the sign