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 |
|
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 |
|
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. |
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 -
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 |
|
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. |