Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Marker format is different for certain markers #21

Open
mathiasbynens opened this issue Jan 10, 2020 · 1 comment
Open

Marker format is different for certain markers #21

mathiasbynens opened this issue Jan 10, 2020 · 1 comment

Comments

@mathiasbynens
Copy link
Member

mathiasbynens commented Jan 10, 2020

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++;
}
@mathiasbynens
Copy link
Member Author

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.

mathiasbynens added a commit that referenced this issue Apr 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant