Odamex sends the hash in binary, while zandronum sends it in a hex expression. (ej: something like �M%d�/~�c�/���� vs 333ca955620fd1678619e62976fb96bb)
I’ll translate zandronum’s hashes with QByteArray::fromHex()
I've reviewed the code and it looks fine to me now. We should squash some of those commits which add post-review fixups or revert in-development changes, but I would keep the milestone commits separate.