Address Length Description
A207 1
Movement Sound Counter
Counted up each time PlayMovementSound is called for a moving figure. Its lowest bits say on which calls a tone is played.
A208 1
Protection Timer
The time for which the sheriff is protected, which is counted down by the routine for the sheriff. While it is not zero the sheriff does not touch objects.
A209 1
Riding Timer
The time for which the sheriff stays on a horse, which is counted down every fourth frame by the routine for a sheriff who is riding.
A20A 1
Outlaw Shot Flag
Set to one when the outlaw has been hit by a bullet in the town, which makes FinishTownStage end the stage.
A20B 1
Key One Held Flag
One while key 1 is held down on the title screen.
A20C 1
Key Two Held Flag
One while key 2 is held down on the title screen.
A20D 1
Key Three Held Flag
One while key 3 is held down on the title screen.
A20E 1
Menu Entry Number
The number of the entry of the title screen menu which is being looked after.
A20F 2
Tile Set Address
The address of the set of tiles which is used by the routines which draw blocks of tiles.
A211 1
Draw Message State
Zero until the "DRAW!!" message has been printed in a duel. It is one if the player provoked the outlaw and two if the outlaw started to draw. While it is not zero the outlaw's gun moves on every frame.
A212 1
Shots Fired Count
The number of shots which the outlaw has fired in a duel.
A213 1
Name Offset Flag
Used while the name of the outlaw is printed on the poster. It is one if the part of the name has an even number of characters, which means that it is printed half a character across.
A214 1
Horizontal Speed
The signed horizontal speed of the object which is being moved, which is set by SetSpeedsFromHeading and used by MoveObject.
A215 1
Vertical Speed
The signed vertical speed of the object which is being moved, which is set by SetSpeedsFromHeading and used by MoveObject.
A216 2
Frame Counter
Counts the frames of the game.
A218 2
First Random Number
The first of two random numbers, which are stirred by UpdateRandomNumbers.
A21A 2
Second Random Number
The second of two random numbers, which are stirred by UpdateRandomNumbers.
A21C 1
Options
The choices which are made on the title screen. Bit 0 is set for two players and bits 1 and 2 are the type of controls: zero for the keyboard, one for a Kempston joystick, two for a cursor joystick and three for an Interface 2 joystick. Bit 3 is set when the game starts, and makes a joystick give the direction which the sheriff faces instead of turning him.
A21D 2
Saved Stack Pointer
The stack pointer is kept here by the routines which use it to move data.
A21F 1
Top Speed
The top speed of the sheriff, which is 0A when he walks and 12 when he rides a horse.
A220 1
Sprite Horizontal Position
The horizontal position of the sprite which is being drawn. Some other routines use it to keep a value.
A221 1
Sprite Vertical Position
The vertical position of the sprite which is being drawn.
A222 1
Sprite Row Bytes
The number of bytes in each row of the sprite which is being drawn.
A223 1
Sprite Rows Left
The number of rows of the sprite which is being drawn which are left to draw.
A224 1
Sprite Jump Opcode
Used by the routines at DrawSpriteRow and DrawFlippedRow.
The opcode of a C3 ("JP") instruction, which is written when the game starts. It is followed by its address, so the routines for drawing sprites jump from here to the code for the columns of the sprite.
A225 2
Sprite Jump Address
The address which is jumped to from SpriteJumpOpcode.
A227 1
Sprite Row Step
The distance in the buffer from the end of one row of the sprite to the start of the next.
A228 10
Sheriff Sprite List
The sprite list of the sheriff, which has three sprites one above another. The sprite number of the second sprite, which is at A22D is changed when the sheriff has just fired.
A232 10
Outlaw Sprite List
The sprite list of the outlaw in the town, which has three sprites one above another and is made by HandleOutlaw.
A23C 1
Sound Notes Left
The number of notes left to play in the sound effect which is in progress. It is zero when there is none.
A23D 2
Sound Note Address
The address one byte before the next note of the sound effect which is in progress.
A23F 1
Current Player
Zero for the first player and one for the second.
A240 1
Stage Running Flag
Set to one when a stage starts. It is cleared when the stage ends well, and if it is still set when the objects have gone the player loses a life.
A241 1
Start Game Flag
Set to one on the title screen when the menu has finished and the game is to start.
A242 1
Tune Played Flag
Set to one when the title tune has been played, which stops it from being played again.
A243 1
Objects Drawn Count
The number of objects which have been drawn in this frame. The stage is over when there is nothing left to do and this is zero.
A244 1
Fire Held Flag
Set to one when the revolver has been fired and the fire control has not been released since.
A245 1
Fire Timer
The time since the revolver was fired, which is counted down. The sheriff is shown firing while it is not zero, and the revolver is not reloaded.
A246 1
Reloading Flag
Set to one while the revolver is being loaded with bullets.
A247 1
Last Controls
The controls which were used last time, which are used by ReadControls to settle which of two opposite controls is used when they are both pressed.
A248 2
Column Flags
The flags, one bit each for sixteen columns of the screen which are each sixteen pixels wide, which say that a wall has been drawn in the column.
A24A 2
First Object Position
The position in the list of objects of a cell of the town, at CellObjectList, which is after the first object of those which are being compared.
A24C 2
Second Object Position
The position in the list of objects of a cell of the town, at CellObjectList, which is after the second object of those which are being compared.
A24E 2
Screen Horizontal Position
The horizontal position on the screen of the object or the part of a cell which is being drawn.
A250 2
Screen Vertical Position
The vertical position on the screen of the object or the part of a cell which is being drawn.
A252 1
Flip Flag
Zero if the sprite or tile which is being drawn is drawn as it is, and not zero if it is drawn as a reflection.
A253 1
Cell Code
The code of the cell of the town which is being drawn.
A254 1
Cell Column
The column of the cell of the town which was found last.
A255 1
Cell Row
The row of the cell of the town which was found last.
A256 1
Rotate Key Flag
Set to one while the key for rotating the view is held down.
A257 3
Bounty
The bounty of the current player, as three bytes of packed decimal digits with the most significant byte first. This is the start of the nineteen bytes of state for the current player.
A25A 2
Fine
The fine which is taken from the bounty when a bystander is shot, as a packed decimal word with the low byte first.
A25C 2
Horse Price
The price of a horse, as a packed decimal word with the low byte first.
A25E 2
Bullet Price
The price of a bullet, as a packed decimal word with the low byte first.
A260 1
Level
The level which the current player has reached. It chooses the outlaw, the reward and the prices.
A261 1
Skill
How difficult the game is, which goes up by one, to a most of seven, when the player completes some of the levels. It affects how fast the outlaws draw and how the bags fall.
A262 1
Bullets Loaded
The number of bullets in the revolver, from zero to six.
A263 1
Lives
The number of lives which the current player has left.
A264 1
Targets Left
The number of money bags which are still to be made in the stage of the bags, or one for the stage of the duel. The stage goes on while it is not zero.
A265 1
Stage Kind
The kind of the stage when it is not in the town: zero for none, one for the money bags and two for the duel.
A266 1
Screen Attribute
The attribute with which the screen is filled when the screen is drawn for a stage.
A267 1
Town Offset
Four in the town and zero in the other stages. It is the number of columns by which the screen is moved in the town, and it is used to tell the town from the other stages.
A268 1
View Rotation
Bit 0 is set when the view of the town is rotated by a half turn.
A269 1
Bullet Unpaid Flag
Set to one when the bounty cannot pay for a bullet, which stops the revolver from being loaded until the bounty goes up.
A26A 19
Other Player State
The nineteen bytes of state for the player who is not playing, in the same order as the state of the current player which starts at Bounty. SwapPlayerStates exchanges them.
A27D 16
Object Slot 1
The first slot, which holds the sheriff in the town, the outlaw in the duel and the first of the money bags in the stage of the bags. There are fifteen slots of sixteen bytes. The first byte of a slot is the type of the object, which is zero for a slot which is not used. The layout of a slot is: byte 00 the type; bytes 01 and 02 the horizontal position; bytes 03 and 04 the vertical position; byte 05 the speed; byte 06 the heading, in bits 6 and 7, with zero for up the screen, one for the right, two for down and three for the left, and the time to turn in bits 0 to 2; byte 07 the flags, in which bit 0 says that the object has bumped into something, bit 1 says that it has been drawn and bit 6 says that it is flipped; bytes 08 and 09 the half width and the half height; bytes 0A and 0B counters; byte 0C the walking frame, in which bit 2 chooses the second set of frames; byte 0D the vertical offset; and bytes 0E and 0F the address of the sprite list.
A28D 16
Object Slot 2
The second slot, which holds a bullet of the sheriff in the town, and the gun of the outlaw in the duel. It is also the second of the money bags.
A29D 16
Object Slot 3
The third slot, which holds a bullet of the sheriff in the town. It is also the third of the money bags.
A2AD 16
Object Slot 4
The fourth slot, which holds a bullet of the sheriff in the town.
A2BD 16
Object Slot 5
The fifth slot, which holds the outlaw in the town.
A2CD 16
Object Slot 6
The sixth slot, which holds the pointing hand next to the sheriff in the town.
A2DD 16
Object Slot 7
The seventh slot, which holds the cactus.
A2ED 16
Object Slot 8
The eighth slot, which holds the horse.
A2FD 16
Object Slot 9
The ninth slot, which holds the tumbleweed.
A30D 16
Object Slot 10
The tenth slot, which holds a bystander.
A31D 16
Object Slot 11
The eleventh slot, which holds a bystander.
A32D 16
Object Slot 12
The twelfth slot, which holds a bystander.
A33D 16
Object Slot 13
The thirteenth slot, which holds a bystander.
A34D 16
Object Slot 14
The fourteenth slot, which holds the shot which the sheriff fires in the stages outside the town.
A35D 16
Object Slot 15
The fifteenth slot, which holds the crosshair in the stages outside the town.
A412 54
Object Handler Table
One address for each of the twenty-seven object types. The main loop at MainLoop uses the type held in the first byte of an object slot to pick the routine which looks after that object.
A5D2 3
Top Score
The top score of the day as three packed decimal bytes, most significant first. It starts at $10000 and is replaced by CheckTopScore when a player beats it.
A65F 16
Bullet Prices
Eight prices for a bullet, as packed decimal words with the low byte first.
A66F 16
Horse Prices
Eight prices for a horse, as packed decimal words with the low byte first.
A67F 16
Fine Amounts
Eight amounts for the fine, as packed decimal words with the low byte first.
A830 108
Telegram Lines
The six lines of the telegram panel, each 12 bytes long. The first byte is the number of letters typed so far, which is 0E once the line is complete. Then come the screen address of the line, its attribute and fourteen characters. The score lines have room after the dollar sign for the digits. The 5C in the high score line is the full stop of the font.
A94B 54
Tumbleweed Routes
The table of the two routes followed by tumbleweeds, followed by the routes themselves. Each step of a route is a signed vertical speed in the high nibble and a signed horizontal speed in the low nibble. 80 ends a route.
AA76 9
Cactus Positions
The number of cacti, followed by the position of each in the town. The high nibble of a position is the vertical cell and the low nibble is the horizontal cell. CreateCactus also uses the same byte to choose where in its cell the cactus stands, so that the cacti do not all stand in the middle of their cells.
AB08 16
Widened Pixels
Sixteen bytes, one for each pattern of four pixels. Each pixel of the pattern is doubled in width to give eight pixels.
AC4E 16
Menu Entries
The state of the four menu entries. Each entry has four bytes: its state, the horizontal position of its bullet, the vertical position of its bullet and a counter. The states are 00 (the revolver has not yet fired), 01 (the text is complete), 02 and 03 (the revolver is firing), 04 (the bullet is flying and the text is being typed) and 05 (the entry which reads the keys).
AC5E 12
Menu Handlers
The routine for each state of a menu entry. States 00 and 01 do nothing, states 02 and 03 use HandleMenuRevolverFiring, state 04 uses HandleMenuBullet and state 05 uses HandleMenuKeys.
AD7B 34
Number Of Players Texts
The table of texts for the number of players, followed by the texts. Bit 7 of the last character of each text is set. The characters with bit 7 set are the final 45 ("E") of each text.
AD9D 70
Controls Texts
The table of texts for the type of controls, followed by the texts, and then the text of the last menu line. Bit 7 of the last character of each text is set.
ADED 35
Revolver Tiles
The numbers of the tiles which make up a revolver, in rows of seven. A zero is a blank tile.
AFF2 183
Note Table
The table of notes used by PlayNote. Each note has three bytes: the low and high bytes of the length of each half of a pulse, and the number of pulses in a beat. Note 00 is a rest.
B56E 60
Outlaw Rewards
The reward for each outlaw, as three packed decimal bytes in dollars, most significant first.
B8C3 36
Gun Sprite Lists
The table of sprite lists for the six frames of the outlaw's gun, followed by the lists. Each list has one sprite.
C352 32
Cell Object List
The list of the objects in a cell, which is made by FindObjectsInCell. It has room for the addresses of fifteen objects and the zero word which ends the list.
C7AB 12
Smoke Sprite Lists
The two sprite lists for a puff of smoke. The words point to SmokeSpriteLists_FirstFrame and SmokeSpriteLists_SecondFrame.
C967 16
Figure Sprite Numbers
The lower and middle sprite numbers for each walking frame. The lowest two bits choose the step, and bit 2, set from FacingFlags, chooses the second set.
Bit 2 clear
Frame Lower Middle
00 Sprite_Legs_3 legs-3 Sprite_Torso_1 torso-1
01 Sprite_Legs_1 legs-1 Sprite_Torso_1 torso-1
02 Sprite_Legs_4 legs-4 Sprite_Torso_2 torso-2
03 Sprite_Legs_1 legs-1 Sprite_Torso_2 torso-2
Bit 2 set
Frame Lower Middle
04 Sprite_Legs_6 legs-6 Sprite_Torso_3 torso-3
05 Sprite_Legs_5 legs-5 Sprite_Torso_3 torso-3
06 Sprite_Legs_7 legs-7 Sprite_Torso_4 torso-4
07 Sprite_Legs_5 legs-5 Sprite_Torso_4 torso-4
C9E0 12
Chamber Addresses
The addresses in the screen attributes of the six chambers of the revolver which is shown at the bottom left of the screen.
CA59 4
Flash Sprite List
The sprite list of a flash.
CAC2 4
Bullet Sprite List
The sprite list of a bullet.
CB24 5
Chamber Colours
The colours of the chamber of the revolver, used by FlashChamber from the last to the first as the time since the sheriff fired counts down.
CC53 8
Slow Down Routines
The routines that MovePlayer runs for each heading.
CCBE 4
Facing Flags
One byte for each heading. Bit 6 flips the sprites, and bit 2 chooses the second set of walking frames. When ViewRotation is set, SetFacingFlags XORs the heading with two, so opposite headings swap.
CD9D 8
Check Walls Routines
The routines that CheckWalls runs for each heading.
D31F 8
Bounty Text
The text which is drawn next to the bounty in the town, which starts with its attribute and ends with zero.
D4CD 10
Telegram Text
The word which is printed in the frame of the telegram, which starts with its attribute and ends with zero.
D6EB 2688
Playfield Buffer
The buffer in which the playfield is drawn before it is copied to the screen by CopyBufferToScreen. It is 18 bytes in each of 70 rows, and the first row is the bottom row of the playfield. CalculateBufferAddress finds the address of a point.
F200 1536
Reversed Shift Tables
Six pages of the tables which are made by BuildShiftTables for a byte with its bits turned round. See BuildShiftTables for how the pages are used. Pages F2 and F3 are for two pixels, pages F4 and F5 for four pixels and pages F6 and F7 for six pixels.
F900 256
Reverse Table
A table which has each value of a byte with its bits turned round, which is made by BuildShiftTables.
FA00 1536
Shift Tables
Six pages of the tables which are made by BuildShiftTables for the routines which draw sprites. Pages FA and FB are for two pixels, pages FC and FD for four pixels and pages FE and FF for six pixels. In each pair of pages the first is the part of a byte which stays in the byte when it is moved to the right, and the second is the part which moves into the next byte.