Atic Atac ATIC ATAC DATA FORMAT
this document contains the data format for atic atac, it is not complete but gives a good start and understanding. for futher information download atic atac  source this may help fill in some of the blanks. should you find any errors with this document or indeed have any information to add, please send me an email.

 

address 0xA854 screen table
the screen table has a entry for every screen
type offset description
BYTE 00 attribute - colour for this screen
BYTE 01 type - screen image type from the following list

 

screen types

00 01 02 03 04
05 06 07 08 09
10 11
the final screen
12
the fallin screen

 

address 0xA982 screen types data
the screen types data allows the construction of all the above screen data. the table works with a list of points and then effective lineto instructions using these points.
type offset description
BYTE 00 width - width of interior
BYTE 01 height - height of interior
WORD 02 points - offset to points data
WORD 04 lineto - offset to lineto data
points
BYTE 00 x position
BYTE 01 y position
lineto
BYTE 00 point index
this table list all the points required to draw the screen. it is used by first reading an entry. if the value is 255 then we have finished. this is the entry to the first point. we then read the next entry and draw a line from the first point to this point. we keep reading until the entry = 255, and draw always from the first point to this.

psuedo code:

do
  read lineto_entry
  if lineto_entry == 255 then exit do
  startpoint = points[lineto_entry]
  do
    read lineto_entry
    if lineto_entry == 255 then exit do
    endpoint = points[lineto_entry]
    drawline from startpoint to endpoint
  loop
loop

 

address 0x645D background items
this table is all the background items for all the screens.  if an item is connected to another item on another screen then the item it is connected to is either before or after this entry depending on if it is an odd or even entry eg. 0 connects to 1, 3 connects to 2. etc.
type offset description
BYTE 00 graphic - graphic representaion of this entry
BYTE 01 screen - screen this entry belongs to
BYTE 02 unknown but common 0x34,0x38,0xc4 (0 if not a door)
BYTE 03 x position
BYTE 04 y position
BYTE 05 flags - ( do not fully understant )
rotation 0x00=top, 0x60=right, 0x80=bottom, 0xE0=left
or other common values...
0x41 - 0x11
0x04 - used if table 0x12
0x03 - used if trapdoor 0x19
used by rug 0x1b
---- these are used by objects that are doors ----
0x01 - 0x10
0x61 - 0x10, 0x11
0x81 - 0x10, 0x11, 0x015, 0x16, 0x26
0xe1 - 0x10, 0x11, 0x1a, 0x26
BYTE 06 door timing? time a door is open or closed (0 if not a door)
BYTE 07 unknown (0 if not a door)

 

address 0x757D screen backround item start
index by screen. this gives an offest into the background item list.
type offset description
WORD 00 offset into background list

 

address 0x76A9 screen background items
variable length table. each entry points into the background item table.
type offset description
WORD 00 offset - offset into background items, read until = 0

 

address 0xA64E background graphics attribute table
type offset description
WORD 00 offset - offset to attribute data

 

address 0xA600 background graphics table
type offset description
WORD 00 offset - offset to sprite data
graphic data
BYTE 00 width - in bytes
BYTE 01 depth
BYTE 03 ... image data ( size = width*depth )

 

graphic types

01
cave door frame
02
normal door frame
03
big door frame
08
red locked normal door
09
green locked normal door
10
white locked normal door
11
yellow locked normal door
12
red locked cave door
13
green locked cave door
14
white locked cave door
15
yellow locked cave door
16
clock
17
picture
18
table
19
full chicken
20
chicken carcass
21
antler trophy
22
trophy
23
bookcase
24
shut trapdoor
25
open trapdoor
26
barrel
27
rug
28
ACG shield
29
shield
30
knight
32
shut normal door
33
open normal door
34
shut cave door
35
open cave door
36
ACG exit door
37
picture
38
skeleton
39
barrels

 

address 0xA4BE sprites graphics table
type offset description
WORD 00 offset - offset to sprite data
graphic data
BYTE 00 depth
BYTE 02 ... image data ( size = width*depth ) WIDTH = 2