![]() |
Game status buffer |
| Address | Length | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A207 | 1 |
Counted up each time PlayMovementSound is called for a moving figure. Its lowest bits say on which calls a tone is played.
|
||||||||||||||||||||||||||||||||||||
| A208 | 1 |
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 |
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 |
Set to one when the outlaw has been hit by a bullet in the town, which makes FinishTownStage end the stage.
|
||||||||||||||||||||||||||||||||||||
| A20B | 1 |
One while key 1 is held down on the title screen.
|
||||||||||||||||||||||||||||||||||||
| A20C | 1 |
One while key 2 is held down on the title screen.
|
||||||||||||||||||||||||||||||||||||
| A20D | 1 |
One while key 3 is held down on the title screen.
|
||||||||||||||||||||||||||||||||||||
| A20E | 1 |
The number of the entry of the title screen menu which is being looked after.
|
||||||||||||||||||||||||||||||||||||
| A20F | 2 |
The address of the set of tiles which is used by the routines which draw blocks of tiles.
|
||||||||||||||||||||||||||||||||||||
| A211 | 1 |
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 |
The number of shots which the outlaw has fired in a duel.
|
||||||||||||||||||||||||||||||||||||
| A213 | 1 |
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 |
The signed horizontal speed of the object which is being moved, which is set by SetSpeedsFromHeading and used by MoveObject.
|
||||||||||||||||||||||||||||||||||||
| A215 | 1 |
The signed vertical speed of the object which is being moved, which is set by SetSpeedsFromHeading and used by MoveObject.
|
||||||||||||||||||||||||||||||||||||
| A216 | 2 |
Counts the frames of the game.
|
||||||||||||||||||||||||||||||||||||
| A218 | 2 |
The first of two random numbers, which are stirred by UpdateRandomNumbers.
|
||||||||||||||||||||||||||||||||||||
| A21A | 2 |
The second of two random numbers, which are stirred by UpdateRandomNumbers.
|
||||||||||||||||||||||||||||||||||||
| A21C | 1 |
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 |
The stack pointer is kept here by the routines which use it to move data.
|
||||||||||||||||||||||||||||||||||||
| A21F | 1 |
The top speed of the sheriff, which is 0A when he walks and 12 when he rides a horse.
|
||||||||||||||||||||||||||||||||||||
| A220 | 1 |
The horizontal position of the sprite which is being drawn. Some other routines use it to keep a value.
|
||||||||||||||||||||||||||||||||||||
| A221 | 1 |
The vertical position of the sprite which is being drawn.
|
||||||||||||||||||||||||||||||||||||
| A222 | 1 |
The number of bytes in each row of the sprite which is being drawn.
|
||||||||||||||||||||||||||||||||||||
| A223 | 1 |
The number of rows of the sprite which is being drawn which are left to draw.
|
||||||||||||||||||||||||||||||||||||
| A224 | 1 |
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 |
The address which is jumped to from SpriteJumpOpcode.
|
||||||||||||||||||||||||||||||||||||
| A227 | 1 |
The distance in the buffer from the end of one row of the sprite to the start of the next.
|
||||||||||||||||||||||||||||||||||||
| A228 | 10 |
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 |
The sprite list of the outlaw in the town, which has three sprites one above another and is made by HandleOutlaw.
|
||||||||||||||||||||||||||||||||||||
| A23C | 1 |
The number of notes left to play in the sound effect which is in progress. It is zero when there is none.
|
||||||||||||||||||||||||||||||||||||
| A23D | 2 |
The address one byte before the next note of the sound effect which is in progress.
|
||||||||||||||||||||||||||||||||||||
| A23F | 1 |
Zero for the first player and one for the second.
|
||||||||||||||||||||||||||||||||||||
| A240 | 1 |
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 |
Set to one on the title screen when the menu has finished and the game is to start.
|
||||||||||||||||||||||||||||||||||||
| A242 | 1 |
Set to one when the title tune has been played, which stops it from being played again.
|
||||||||||||||||||||||||||||||||||||
| A243 | 1 |
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 |
Set to one when the revolver has been fired and the fire control has not been released since.
|
||||||||||||||||||||||||||||||||||||
| A245 | 1 |
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 |
Set to one while the revolver is being loaded with bullets.
|
||||||||||||||||||||||||||||||||||||
| A247 | 1 |
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 |
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 |
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 |
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 |
The horizontal position on the screen of the object or the part of a cell which is being drawn.
|
||||||||||||||||||||||||||||||||||||
| A250 | 2 |
The vertical position on the screen of the object or the part of a cell which is being drawn.
|
||||||||||||||||||||||||||||||||||||
| A252 | 1 |
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 |
The code of the cell of the town which is being drawn.
|
||||||||||||||||||||||||||||||||||||
| A254 | 1 |
The column of the cell of the town which was found last.
|
||||||||||||||||||||||||||||||||||||
| A255 | 1 |
The row of the cell of the town which was found last.
|
||||||||||||||||||||||||||||||||||||
| A256 | 1 |
Set to one while the key for rotating the view is held down.
|
||||||||||||||||||||||||||||||||||||
| A257 | 3 |
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 |
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 |
The price of a horse, as a packed decimal word with the low byte first.
|
||||||||||||||||||||||||||||||||||||
| A25E | 2 |
The price of a bullet, as a packed decimal word with the low byte first.
|
||||||||||||||||||||||||||||||||||||
| A260 | 1 |
The level which the current player has reached. It chooses the outlaw, the reward and the prices.
|
||||||||||||||||||||||||||||||||||||
| A261 | 1 |
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 |
The number of bullets in the revolver, from zero to six.
|
||||||||||||||||||||||||||||||||||||
| A263 | 1 |
The number of lives which the current player has left.
|
||||||||||||||||||||||||||||||||||||
| A264 | 1 |
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 |
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 |
The attribute with which the screen is filled when the screen is drawn for a stage.
|
||||||||||||||||||||||||||||||||||||
| A267 | 1 |
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 |
Bit 0 is set when the view of the town is rotated by a half turn.
|
||||||||||||||||||||||||||||||||||||
| A269 | 1 |
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 |
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 |
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 |
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 |
The third slot, which holds a bullet of the sheriff in the town. It is also the third of the money bags.
|
||||||||||||||||||||||||||||||||||||
| A2AD | 16 |
The fourth slot, which holds a bullet of the sheriff in the town.
|
||||||||||||||||||||||||||||||||||||
| A2BD | 16 |
The fifth slot, which holds the outlaw in the town.
|
||||||||||||||||||||||||||||||||||||
| A2CD | 16 |
The sixth slot, which holds the pointing hand next to the sheriff in the town.
|
||||||||||||||||||||||||||||||||||||
| A2DD | 16 |
The seventh slot, which holds the cactus.
|
||||||||||||||||||||||||||||||||||||
| A2ED | 16 |
The eighth slot, which holds the horse.
|
||||||||||||||||||||||||||||||||||||
| A2FD | 16 |
The ninth slot, which holds the tumbleweed.
|
||||||||||||||||||||||||||||||||||||
| A30D | 16 |
The tenth slot, which holds a bystander.
|
||||||||||||||||||||||||||||||||||||
| A31D | 16 |
The eleventh slot, which holds a bystander.
|
||||||||||||||||||||||||||||||||||||
| A32D | 16 |
The twelfth slot, which holds a bystander.
|
||||||||||||||||||||||||||||||||||||
| A33D | 16 |
The thirteenth slot, which holds a bystander.
|
||||||||||||||||||||||||||||||||||||
| A34D | 16 |
The fourteenth slot, which holds the shot which the sheriff fires in the stages outside the town.
|
||||||||||||||||||||||||||||||||||||
| A35D | 16 |
The fifteenth slot, which holds the crosshair in the stages outside the town.
|
||||||||||||||||||||||||||||||||||||
| A412 | 54 |
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 |
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 |
Eight prices for a bullet, as packed decimal words with the low byte first.
|
||||||||||||||||||||||||||||||||||||
| A66F | 16 |
Eight prices for a horse, as packed decimal words with the low byte first.
|
||||||||||||||||||||||||||||||||||||
| A67F | 16 |
Eight amounts for the fine, as packed decimal words with the low byte first.
|
||||||||||||||||||||||||||||||||||||
| A830 | 108 |
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 |
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 |
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 |
Sixteen bytes, one for each pattern of four pixels. Each pixel of the pattern is doubled in width to give eight pixels.
|
||||||||||||||||||||||||||||||||||||
| AC4E | 16 |
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 |
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 |
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 |
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 |
The numbers of the tiles which make up a revolver, in rows of seven. A zero is a blank tile.
|
||||||||||||||||||||||||||||||||||||
| AFF2 | 183 |
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 |
The reward for each outlaw, as three packed decimal bytes in dollars, most significant first.
|
||||||||||||||||||||||||||||||||||||
| B8C3 | 36 |
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 |
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 |
The two sprite lists for a puff of smoke. The words point to SmokeSpriteLists_FirstFrame and SmokeSpriteLists_SecondFrame.
|
||||||||||||||||||||||||||||||||||||
| C967 | 16 |
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.
|
||||||||||||||||||||||||||||||||||||
| C9E0 | 12 |
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 |
The sprite list of a flash.
|
||||||||||||||||||||||||||||||||||||
| CAC2 | 4 |
The sprite list of a bullet.
|
||||||||||||||||||||||||||||||||||||
| CB24 | 5 |
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 |
The routines that MovePlayer runs for each heading.
|
||||||||||||||||||||||||||||||||||||
| CCBE | 4 |
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 |
The routines that CheckWalls runs for each heading.
|
||||||||||||||||||||||||||||||||||||
| D31F | 8 |
The text which is drawn next to the bounty in the town, which starts with its attribute and ends with zero.
|
||||||||||||||||||||||||||||||||||||
| D4CD | 10 |
The word which is printed in the frame of the telegram, which starts with its attribute and ends with zero.
|
||||||||||||||||||||||||||||||||||||
| D6EB | 2688 |
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 |
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 |
A table which has each value of a byte with its bits turned round, which is made by BuildShiftTables.
|
||||||||||||||||||||||||||||||||||||
| FA00 | 1536 |
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.
|
||||||||||||||||||||||||||||||||||||