DYNAMITE DAN DATA FORMAT
this document contains the data format for dynamite dan, it is not complete but gives a good start and understanding. for futher information download dynamite dan  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 0x69e6 room info table
a 12 byte table for the 48 locations. location 0 is the bottom right on the map of an 8x6 grid.
type offset description
word 0 screen data address
byte 2 extra life y* ( test tube
byte 3 extra life x
byte 4
6c26 d l f food
7 6 5 4 3 2 1 0
food - food item
f - food item is available
l - extra life is available
d - dynamite is available
6c26 - index into table 6c26!
byte 5 food y
byte 6 food x
word 7 nasties data address
byte 9 dynamite y
byte 10 dynamite x
byte 11
v unused d c o
7 6 5 4 3 2 1 0
o - oxygen in room
c -credit card
d -deaoderant
v -room has been visited
object

* all coordinates are store as column row character coordinates. ie: multiply by 8 to give pixel coordinate.

 

address 0xf410 object coordinates
this 2 byte entry table holds the x,y coordinates of the object in the room. if the rooms object is available ie: oxygen, credit card or deoderant, then draw it at the coordinates in this table.
type offset description
byte 0 y coordinate of room object
byte 1 y coordinate of room object

 

address 0x0000 screen data format
the screen data is a series of records that should be stopped processing as soon as the y coordinate is equal to 0xff
type offset description
byte 0 y coordinate of platform
byte 1 x coordinate of platform
byte 2 platform
byte 3 if the following byte is not 0xff, 0xfe, 0xfd, 0xfc or 0xfb then it is the y coordinate ( byte 0 ). so display the platform at x,y and continye process from as byte 0.
0xff terminate processing room is finished
byte 4 delta for repeat
byte 5 repeat count
0xfe horizontal repeat. draw the platform count times incrementing the x coordinate by delta after each one.

    for ( ii=0; ii<count; ii++, x+=delta )
        DisplayPlatform ( x, y, platform );
0xfd vertical repeat up. draw the platform count times decrementing the y coordinate by delta after each one.

    for ( ii=0; ii<count; ii++, y-=delta )
        DisplayPlatform ( x, y, platform );
0xfc diagonal down right repeat. draw the platform count times incrementing the y coordinate by delta and the x coordinate by 1, after each one.

    for ( ii=0; ii<count; ii++, y+=delta, x++ )
        DisplayPlatform ( x, y, platform );
0xfb diagonal up right repeat. draw the platform count times decrementing the y coordinate by delta and the x coordinate by 1, after each one.

    for ( ii=0; ii<count; ii++, y-=delta, x++ )
        DisplayPlatform ( x, y, platform );
*water if the room no is less than 8 then draw water at the bottom of the screen.

 

address 0x0000 nasties info block
type offset description
byte 0 image of nastie type 1
byte 1 image of nastie type 2
byte 2 image of nastie type 3
byte 3 image of nastie type 4
word 4
nc1 nc2 nc3 nc4
F E D C B A 9 8 7 6 5 4 3 2 1 0
nc1 - number of type 1 nasties in the room
nc2 - number of type 2 nasties in the room
nc3 - number of type 3 nasties in the room
nc4 - number of type 4 nasties in the room
after the header there is a series of 8 byte data that describes each individual nastie. they are of type nc1... nc4 and the total number is nc1+nc2+nc3+nc4
byte 0 y coordinate of nasty
byte 1 x coordinate of nasty
byte 2 minimum boundary
byte 3 maximum boundary
byte 4 flags - ( unknown at present )
byte 5 attribute
byte 6 unknown
byte 7 unknown

 

address 0xae60 animate gfx data
this table points to the actual graphic data of the animated sprites
type offset description
word 0 address of gfx
type offset description
byte 0
0 1 2 3 h w
7 6 5 4 3 2 1 0
w - width in columns
h - height in rows
byte 1... 8 bytes of pixel data of image in udg 8x8 chunks.

  for ( y=0; y<height; y++ )
      for ( x=0; x<width; x++ )
  

 

address 0x6c46 platform gfx data
this table points to the actual graphic data of the platform sprites
type offset description
word 0 address of gfx
type offset description
byte 0 width
byte 1 height
byte 2... 8 bytes of pixel data of image in udg 8x8 chunks.

  for ( y=0; y<height; y++ )
      for ( x=0; x<width; x++ )
byte ... after the pixel data comes the attributes data. the offest can be calculated as 2 +  ( width*height*8)
if the first byte is 0 then draw the whole platform with the value stored at 1. otherwise width*height attributes follow.

 

address 0xedbc teleports
this table of 10 entries gives the information for teleports.
type offset description
byte 0 room no
word 1 screen address ( not coordinate ) of the top left of the attributes for the teleport
byte 3 destination room no
byte 4 unknown
byte 5 unknown

 

address 0xedf8 lasers
this table of 15 entries gives the information for lasers.
type offset description
byte 0 room no
word 1 screen address ( not coordinate ) of the left side of the attributes for the laser
byte 3 length

 

miscellaneous  addresses
this table points to the actual graphic data of the platform sprites
address description
0x632a table to dan graphic frames
0x65da table to food item graphics. stored like platforms
0x6985 water graphics
0x6e00 table of animation frames for the safe exploding
0xf052 table to dan falling over animation
0xebdc safe graphics
0xeb89 secret plans graphics
0xef5d test tube graphic
0xef49 dynamite graphic
0x677f font graphics
the flashing graphics in rooms 0x23, 0x1d, 0x1b are hard coded. the routines are at;
0xcedc room 0x23
0xcee1 room 0x1d
0xcf77 room 0x1b
they use tables at;
0xcec4 room 0x23
0xcecc room 0x1d
0xced4 room 0x1b

 

strings
all strings are note stored in ascii. they map directly to the font. however some character codes exist for coordinates etc.