SABRE WULF DATA FORMAT this document contains the data format for sabre wulf, it is not complete but gives a good start and understanding. for futher information download sabre wulf 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 | 0xA29D | Amulet Start Positions |
this table holds the map start positions of the four parts of the amulet. there are 8 entries in the table |
type | offset | description | ||
BYTE | 00 | location for amulet part 1 |
|
|
BYTE | 01 | location for amulet part 2 | ||
BYTE | 02 | location for amulet part 3 | ||
BYTE | 03 | location for amulet part 4 |
address | 0x6036 | unknown location table |
this table is used after a location has changed. it holds one byte per location type. |
type | offset | description | |
BYTE | 00 | unknown |
address | 0x6066 | map layout |
the map is a fixed 16x16 grid. all location no references are a direct offset into this table. the table holds a location type which is used for all other functions. |
type | offset | description | |
BYTE | 00 | location type |
address | 0x6166 | location type table |
a list of offsets to the data for each location type, there are 48 entries. |
type | offset | description | |
WORD | 00 | offset to location data | |
address | 0x6200 | start of location type data |
the location data is a series of data that describes the graphic type and the screen coordinate to draw it at. |
type | offset | description | |
WORD | 00 | offset - offset to background sprite data | |
BYTE | 02 | x coordinate | |
BYTE | 03 | y coordinate | |
... REPEAT UNTIL OFFSET = 0 |
two other location types are available but are not actually locations |
offset | description | ||
0x61c6 | grass border for presentation | ||
0xc386 | underwurlde end screen graphic |
sprite structure format | |
this is the structure used for all sprite entries within the game. |
type | offset | description | |
BYTE | 00 | sprite image no ( check the sprites in the download ) | |
BYTE | 01 | current location | |
BYTE | 02 | unknown | |
BYTE | 03 | screen x coordinate | |
BYTE | 04 | screen y coordinate | |
BYTE | 05 | attribute color | |
BYTE | 06 | ( delta x ) ?? | |
BYTE | 07 | ( delta y ) ?? | |
BYTE | 08 | unknown | |
BYTE | 09 | unknown | |
BYTE | 0A | unknown | |
BYTE | 0B | unknown |
address | 0xDC6C | location object screen positions |
|
this table holds the 4 possible object screen
locations for the different screen types. the game places 2 objects into random selected
slots. NOTE: if the location has an amulet then it is always placed in (object 1) |
type | offset | description | |
BYTE | 00 | x coordinate ( object 1 - or orchid ) | |
BYTE | 01 | y coordinate ( object 1 or orchid ) | |
BYTE | 02 | x coordinate ( object 2 ) | |
BYTE | 03 | y coordinate ( object 2 ) | |
BYTE | 04 | x coordinate ( object 3 ) | |
BYTE | 05 | y coordinate ( object 3 ) | |
BYTE | 06 | x coordinate ( object 4 ) | |
BYTE | 07 | y coordinate ( object 4 ) | |
address | 0xD6A6 | location orchid screen positions |
type | offset | description | |
BYTE | 00 | x coordinate | |
BYTE | 01 | y coordinate |
type | offset | description | |||||||||||||||||
BYTE | 00 | unknown
|
|||||||||||||||||
BYTE | 01 | unknown |
address | 0x70bc | background graphics |
type | offset | description | |
BYTE | 00 | width - in bytes | |
BYTE | 01 | depth | |
BYTE | 03...size | image data ( size = width*depth ) | |
BYTE | attribute data | ||
70BC | 71B3 | 7298 | 72F6 | 7462 | 7523 | 771F | 785E |
78F2 | 7947 | 7981 | 7B11 | 7BB7 | 7C0C | 7CCD | 7E4B |
8047 | 81C5 | 8382 | 83AA | 83D2 | 8427 | 847C | 8558 |
85C8 | 86DA | 8702 | 872A | 8806 | 89C3 | 8B80 | 8C5C |
8CCC | 8D3C | 8E18 | 8F2A | 90A8 | 93C4 | 955D | 95CD |
9673 |
address | 0xbf84 | sprites offset table |
type | offset | description | |
WORD | 00 | offset - offset to data | |
0xc10e | sprite data format | ||
type | offset | description | |
BYTE | 00 | width - in bytes | |
BYTE | 01 | depth | |
BYTE | 03...size | image data ( size = width*depth ) |
address | 0xAC77 | default immortal moving objects |
this table holds the default sprite structures for the 12 moving immortals. inc sabre man. |
entry | description | ||
00 | sabre man | ||
01 | rhino running left | ||
02 | rhino running right | ||
03 | rhino running left | ||
04 | rhino running right | ||
05 | spear man | ||
06 | spear man | ||
07 | spear man | ||
08 | fire | ||
09 | wolf | ||
0a | hippo | ||
0b | guardian |
address | 0x9702 | sprite working structures |
this table holds the sprite structures for the 25 active sprites while the game runs |
offset | number | description | |
0x9702 | 12 | immortals | |
0x9792 | 06 | nasties | |
0x97da | 01 | orchid | |
0x97e6 | 02 | objects | |
0x97fe | 04 | amulet parts |
address | various random tables | |
the following tables are used to randomly select the type and colorr of certain sprites. |
offset | number | description | |
0xaf6d | 16 | orchid colours | |
0xa41a | 16 | nasty sprite types | |
0xa3a7 | 16 | object colours | |
0x9ab8 | 04 | other colours for flashing? | |