|
|
| anim.idx |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B |
| index | size | unkown | |||||||||
| Finding the animation ID |
| Creature ID range (cID) | Type | Sequences/ creature |
Calculates into animation ID (aID) |
| 0x000 - 0x0c7 | High detail | 110 | aID = cID * 110 |
| 0x0c8 - 0x18F | Low detail | 65 | aID = (cID - 0xc8) * 65 + 22000 |
| 0x190 - | Human & Equipment | 175 | aID = (cID - 0x190) * 175 + 35000 |
| Down | +0 |
| South | +1 |
| Left | +2 |
| North | +3 |
| Up | +4 |
| anim.mul |
| UNSIGNED INT16[256] | The palette |
| UNSIGNED INT32 | Frame count |
| UNSIGNED INT32[Frame count] | Frame offsets |
| ... | The frame data |
| Seek from the end of the palette plus the offset from the offset table to find the start of the frame: | |
| SIGNED INT16 | Image center X |
| SIGNED INT16 | Image center Y |
| UNSIGNED INT16 | Width |
| UNSIGNED INT16 | Height |
| ... | ...data.. |
| UNSIGNED INT16 | RowHeader |
| SIGNED INT16 | RowOffset |
| ... | ...data.. |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| line number | runby | ||||||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| +/- | x-offset | unkown | |||||||||||||
int xoffs = (rowOffset) >> 6;
if (rowOffset & 0x8000) {
xoffs += centerx - 1024;
} else {
xoffs += centerx;
}