tibia-maps-script
tibia-maps-script copied to clipboard
Marker format is different for certain markers
There’s something about the minimapmarkers.bin
format I don’t quite understand yet. For the most part (99.99%), it seems to follow the format described in our guide.
However, some (not all!) very specific markers that are automatically added by quest NPCs seem to follow a different format.
For example, in the attached file, this marker is fine:
$ hexdump -s 0xEC6C -n 78 -C minimap/minimapmarkers.bin
0000ec6c 0a 24 0a 0a 08 a5 86 02 10 f1 f3 01 18 03 10 03 |.$..............|
0000ec7c 1a 12 49 6e 73 65 63 74 6f 69 64 20 6d 6f 6e 6f |..Insectoid mono|
0000ec8c 6c 69 74 68 20 00 0a 12 0a 0a 08 a6 86 02 10 89 |lith ...........|
0000ec9c f4 01 18 0e 10 04 1a 00 20 00 0a 12 0a 0a 08 a6 |........ .......|
0000ecac 86 02 10 8d f4 01 18 0e 10 04 1a 00 20 00 |............ .|
0000ecba
But the next one (a marker added by talking to NPC Sholley during the Dark Trails Quest), isn’t:
$ hexdump -s 0xECBA -n 65 -C minimap/minimapmarkers.bin
0000ecba 0a 24 0a 0a 08 a6 86 02 10 d1 f9 01 18 07 10 02 |.$..............|
0000ecca 1a 0d 51 75 61 6e 64 6f 6e 73 20 48 6f 6d 65 20 |..Quandons Home |
0000ecda ce 95 ea be f6 2d 0a 19 0a 0a 08 a7 86 02 10 a0 |.....-..........|
0000ecea f4 01 18 07 10 03 1a 07 41 6e 74 65 6e 6e 61 20 |........Antenna |
0000ecfa 00 |.|
0000ecfb
(Note: the above example shows the bytes for the marker following it as well.)
Unlike other markers, this particular marker doesn’t end with 20 00
— instead, it ends with 20 ce 95 ea be f6 2d
. Why is that? What does it mean?
To allow importing this marker, we can patch tibia-maps-script
as follows. Replace these lines: https://github.com/tibiamaps/tibia-maps-script/blob/master/src/from-minimap.js#L92-L94
// The byte sequence 0x20 0x00 marks the end of the marker.
console.assert(buffer[index++] === 0x20);
console.assert(buffer[index++] === 0x00);
…with…
while (buffer[index] !== undefined && buffer[index] !== 0x0A) {
index++;
}