Address Length Description
41479 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.
41480 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.
41481 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.
41482 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.
41483 1
Key One Held Flag
One while key 1 is held down on the title screen.
41484 1
Key Two Held Flag
One while key 2 is held down on the title screen.
41485 1
Key Three Held Flag
One while key 3 is held down on the title screen.
41486 1
Menu Entry Number
The number of the entry of the title screen menu which is being looked after.
41487 2
Tile Set Address
The address of the set of tiles which is used by the routines which draw blocks of tiles.
41489 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.
41490 1
Shots Fired Count
The number of shots which the outlaw has fired in a duel.
41491 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.
41492 1
Horizontal Speed
The signed horizontal speed of the object which is being moved, which is set by SetSpeedsFromHeading and used by MoveObject.
41493 1
Vertical Speed
The signed vertical speed of the object which is being moved, which is set by SetSpeedsFromHeading and used by MoveObject.
41494 2
Frame Counter
Counts the frames of the game.
41496 2
First Random Number
The first of two random numbers, which are stirred by UpdateRandomNumbers.
41498 2
Second Random Number
The second of two random numbers, which are stirred by UpdateRandomNumbers.
41500 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.
41501 2
Saved Stack Pointer
The stack pointer is kept here by the routines which use it to move data.
41503 1
Top Speed
The top speed of the sheriff, which is 10 when he walks and 18 when he rides a horse.
41504 1
Sprite Horizontal Position
The horizontal position of the sprite which is being drawn. Some other routines use it to keep a value.
41505 1
Sprite Vertical Position
The vertical position of the sprite which is being drawn.
41506 1
Sprite Row Bytes
The number of bytes in each row of the sprite which is being drawn.
41507 1
Sprite Rows Left
The number of rows of the sprite which is being drawn which are left to draw.
41508 1
Sprite Jump Opcode
Used by the routines at DrawSpriteRow and DrawFlippedRow.
The opcode of a 195 ("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.
41509 2
Sprite Jump Address
The address which is jumped to from SpriteJumpOpcode.
41511 1
Sprite Row Step
The distance in the buffer from the end of one row of the sprite to the start of the next.
41512 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 41517 is changed when the sheriff has just fired.
41522 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.
41532 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.
41533 2
Sound Note Address
The address one byte before the next note of the sound effect which is in progress.
41535 1
Current Player
Zero for the first player and one for the second.
41536 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.
41537 1
Start Game Flag
Set to one on the title screen when the menu has finished and the game is to start.
41538 1
Tune Played Flag
Set to one when the title tune has been played, which stops it from being played again.
41539 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.
41540 1
Fire Held Flag
Set to one when the revolver has been fired and the fire control has not been released since.
41541 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.
41542 1
Reloading Flag
Set to one while the revolver is being loaded with bullets.
41543 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.
41544 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.
41546 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.
41548 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.
41550 2
Screen Horizontal Position
The horizontal position on the screen of the object or the part of a cell which is being drawn.
41552 2
Screen Vertical Position
The vertical position on the screen of the object or the part of a cell which is being drawn.
41554 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.
41555 1
Cell Code
The code of the cell of the town which is being drawn.
41556 1
Cell Column
The column of the cell of the town which was found last.
41557 1
Cell Row
The row of the cell of the town which was found last.
41558 1
Rotate Key Flag
Set to one while the key for rotating the view is held down.
41559 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.
41562 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.
41564 2
Horse Price
The price of a horse, as a packed decimal word with the low byte first.
41566 2
Bullet Price
The price of a bullet, as a packed decimal word with the low byte first.
41568 1
Level
The level which the current player has reached. It chooses the outlaw, the reward and the prices.
41569 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.
41570 1
Bullets Loaded
The number of bullets in the revolver, from zero to six.
41571 1
Lives
The number of lives which the current player has left.
41572 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.
41573 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.
41574 1
Screen Attribute
The attribute with which the screen is filled when the screen is drawn for a stage.
41575 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.
41576 1
View Rotation
Bit 0 is set when the view of the town is rotated by a half turn.
41577 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.
41578 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.
41597 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 0 the type; bytes 1 and 2 the horizontal position; bytes 3 and 4 the vertical position; byte 5 the speed; byte 6 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 7 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 8 and 9 the half width and the half height; bytes 10 and 11 counters; byte 12 the walking frame, in which bit 2 chooses the second set of frames; byte 13 the vertical offset; and bytes 14 and 15 the address of the sprite list.
41613 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.
41629 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.
41645 16
Object Slot 4
The fourth slot, which holds a bullet of the sheriff in the town.
41661 16
Object Slot 5
The fifth slot, which holds the outlaw in the town.
41677 16
Object Slot 6
The sixth slot, which holds the pointing hand next to the sheriff in the town.
41693 16
Object Slot 7
The seventh slot, which holds the cactus.
41709 16
Object Slot 8
The eighth slot, which holds the horse.
41725 16
Object Slot 9
The ninth slot, which holds the tumbleweed.
41741 16
Object Slot 10
The tenth slot, which holds a bystander.
41757 16
Object Slot 11
The eleventh slot, which holds a bystander.
41773 16
Object Slot 12
The twelfth slot, which holds a bystander.
41789 16
Object Slot 13
The thirteenth slot, which holds a bystander.
41805 16
Object Slot 14
The fourteenth slot, which holds the shot which the sheriff fires in the stages outside the town.
41821 16
Object Slot 15
The fifteenth slot, which holds the crosshair in the stages outside the town.
42002 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.
42450 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.
42591 16
Bullet Prices
Eight prices for a bullet, as packed decimal words with the low byte first.
42607 16
Horse Prices
Eight prices for a horse, as packed decimal words with the low byte first.
42623 16
Fine Amounts
Eight amounts for the fine, as packed decimal words with the low byte first.
43056 108
Telegram Lines
The six lines of the telegram panel, each 18 bytes long. The first byte is the number of letters typed so far, which is 14 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 92 in the high score line is the full stop of the font.
43339 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. 128 ends a route.
43638 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.
43784 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.
44110 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 0 (the revolver has not yet fired), 1 (the text is complete), 2 and 3 (the revolver is firing), 4 (the bullet is flying and the text is being typed) and 5 (the entry which reads the keys).
44126 12
Menu Handlers
The routine for each state of a menu entry. States 0 and 1 do nothing, states 2 and 3 use HandleMenuRevolverFiring, state 4 uses HandleMenuBullet and state 5 uses HandleMenuKeys.
44411 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 69 ("E") of each text.
44445 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.
44525 35
Revolver Tiles
The numbers of the tiles which make up a revolver, in rows of seven. A zero is a blank tile.
45042 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 0 is a rest.
46446 60
Outlaw Rewards
The reward for each outlaw, as three packed decimal bytes in dollars, most significant first.
47299 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.
50002 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.
51115 12
Smoke Sprite Lists
The two sprite lists for a puff of smoke. The words point to SmokeSpriteLists_FirstFrame and SmokeSpriteLists_SecondFrame.
51559 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
0 Sprite_Legs_3 legs-3 Sprite_Torso_1 torso-1
1 Sprite_Legs_1 legs-1 Sprite_Torso_1 torso-1
2 Sprite_Legs_4 legs-4 Sprite_Torso_2 torso-2
3 Sprite_Legs_1 legs-1 Sprite_Torso_2 torso-2
Bit 2 set
Frame Lower Middle
4 Sprite_Legs_6 legs-6 Sprite_Torso_3 torso-3
5 Sprite_Legs_5 legs-5 Sprite_Torso_3 torso-3
6 Sprite_Legs_7 legs-7 Sprite_Torso_4 torso-4
7 Sprite_Legs_5 legs-5 Sprite_Torso_4 torso-4
51680 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.
51801 4
Flash Sprite List
The sprite list of a flash.
51906 4
Bullet Sprite List
The sprite list of a bullet.
52004 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.
52307 8
Slow Down Routines
The routines that MovePlayer runs for each heading.
52414 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.
52637 8
Check Walls Routines
The routines that CheckWalls runs for each heading.
54047 8
Bounty Text
The text which is drawn next to the bounty in the town, which starts with its attribute and ends with zero.
54477 10
Telegram Text
The word which is printed in the frame of the telegram, which starts with its attribute and ends with zero.
55019 2688
Playfield Buffer
The buffer in which the playfield is drawn before it is copied to the screen by CopyBufferToScreen. It is 24 bytes in each of 112 rows, and the first row is the bottom row of the playfield. CalculateBufferAddress finds the address of a point.
61952 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 242 and 243 are for two pixels, pages 244 and 245 for four pixels and pages 246 and 247 for six pixels.
63744 256
Reverse Table
A table which has each value of a byte with its bits turned round, which is made by BuildShiftTables.
64000 1536
Shift Tables
Six pages of the tables which are made by BuildShiftTables for the routines which draw sprites. Pages 250 and 251 are for two pixels, pages 252 and 253 for four pixels and pages 254 and 255 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.