LUNY.CO.UK

Mikro-Gen:Automania

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.

 
F1FBTABLE 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 BYTEDATAMEANING
0xFF,End of data
0xFE,ATTRChange ink colour of tiles to ATTR
0xFD,ATTR, N, TILESet colour to ATTR and then draw N number of TILE in a line
<0xFD,Draw a single tile of the given index number
 
F178TABLE 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 BYTEDATAMEANING
0xFFEnd of data
X, YPosition
88C9TABLE 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 BYTEDATAMEANING
0xFFEnd of data
X, Y, BITMAP[8]...Draw BITMAP[8] at character position(X,Y)
F6E8TABLE 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 BYTEDATAMEANING
00Ignore
carried,sprite no., x, yRepeated six times
 
BDAFTABLE 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 BYTEDATAMEANING
0xFFEnd of data
ATTR, X, YSet ATTR at position X,Y
 
F6D4TABLE 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 BYTEDATAMEANING
00Ignore this part
In pos?,sprite no., x, yrepeat six times
 
F20FTABLE OF POINTERS: MOVING PLATFORMS
 FA81
 FA91
 FAA1
 FAB1
 FAC1
 FAD1
 FAE1
 FAF1
 FB01
 FB11
  
 
1ST BYTEDATAMEANING
FFEnd of data
X,Y, count, dir