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++;
}
The fact that this one marker is different could be some kind of weird Tibia client bug. Still, the client clearly supports decoding this unique representation, and so ideally our converter would have matching behavior.