The Data Format
Automania extensively uses tables of pointers. Each table holds ten addresses. Each of the ten addresses holds the actual data for each level. This allows the data
to be of variable length without slowing down the game by searching through thedata table each time. Instead we calculate which address we want, from the level
number, which in turn gives us the start address of that particular data, for the current level.
F1FB | TABLE OF POINTERS: ROOM ONE |
| D244 |
| D40F |
| D5DA |
| D7A5 |
| D970 |
| DB3B |
| DD06 |
| DED1 |
| E09C |
| E267 |
|
Each pointer is the address of the start of data for each room.
Data is made up from a variable length of bytes making up shorter strings
of information. Each string of data can be one of the following formats... |
|
1ST BYTE | DATA | MEANING |
0xFF, | | End of data |
0xFE, | ATTR | Change ink colour of tiles to ATTR |
0xFD, | ATTR, N, TILE | Set colour to ATTR and then draw N number of TILE in a line |
<0xFD, | | Draw a single tile of the given index number |
|
|
F178 | TABLE OF POINTERS: TOPS OF LADDERS |
| F18C |
F193 |
F19A |
| F19F |
| F1A4 |
| F1A9 |
| F1B0 |
| F1B7 |
| F1C0 |
| F1C7 |
|
Each pointer is an address to a string of data describing the position of the top
of each ladder. The graphic types are hardcode for all ladders. |
|
1ST BYTE | DATA | MEANING |
0xFF | | End of data |
| X, Y | Position |
|
|
88C9 | TABLE OF POINTERS: CAR PARTS IN ROOM ONE |
| 8914 |
| 8979 |
| 8A06 |
| 8A7F |
| 8AEE |
| 8CBD |
| 8BA3 |
| 8C44 |
| 8D68 |
| 8E09 |
|
Room one has a number of car parts already in position. Each pointer is an address to data
for each room. Each data string describes the position and
bitmap of each 8x8 graphic. |
|
1ST BYTE | DATA | MEANING |
0xFF | | End of data |
| X, Y, BITMAP[8]... | Draw BITMAP[8] at character position(X,Y) |
|
|
F6E8 | TABLE OF POINTERS: CAR PARTS IN ROOM 2 |
| F7EC |
| F804 |
| F81C |
| F834 |
| F84C |
| F864 |
| F87C |
| F894 |
| F8AC |
| F8C4 |
|
This holds the positions of the car parts when in room 2.
When the flag 'carried' is set then they will not be displayed.
Each level holds six parts. |
|
1ST BYTE | DATA | MEANING |
00 | | Ignore |
carried, | sprite no., x, y | Repeated six times |
|
|
BDAF | TABLE OF POINTERS: COLOUR OF CAR PARTS, ROOM 2 |
| BDC3 |
| BDD1 |
| BDDF |
| BDED |
| BDFB |
| BE09 |
| BE17 |
| BE25 |
| BE33 |
| BE41 |
|
Each pointer is an address to a data string describing the position and colour of
the car parts for each level. |
|
1ST BYTE | DATA | MEANING |
0xFF | | End of data |
| ATTR, X, Y | Set ATTR at position X,Y |
|
|
F6D4 | TABLE OF POINTERS: PARTS FINAL POSITION |
| F6FC |
| F714 |
| F72C |
| F744 |
| F75C |
| F774 |
| F78C |
| F7A4 |
| F7BC |
| F7D4 |
|
Each address holds data to where each car part needs to be
in room one. Everytime the player drops a part in room one
the 'in pos' flag tells room one to display it. There are six parts
per level. |
|
1ST BYTE | DATA | MEANING |
00 | | Ignore this part |
In pos?, | sprite no., x, y | repeat six times |
|
|
F20F | TABLE OF POINTERS: MOVING PLATFORMS |
| FA81 |
| FA91 |
| FAA1 |
| FAB1 |
| FAC1 |
| FAD1 |
| FAE1 |
| FAF1 |
| FB01 |
| FB11 |
| |
|
1ST BYTE | DATA | MEANING |
FF | | End of data |
X, | Y, count, dir | |
|