Sprite collision mask unpacker assumes incorrect endianness
p[i>>3] & (1<<i) expects the "first" bit of each byte (access order wise) to be the rightmost bit on little endian systems
However, the bits are actually emitted such that the "first" bit of each byte is the rightmost bit (the bits in the vector are therefor in the same order as the original data)
can be changed to
byte curbit = (byte)(curbyte & (byte)(1 << (7-bitn)));
to resolve this problem.
Also, it might be worth just storing a 1 or a 0 for each index in the JSON output rather than "true" or "false", it'd cut down alot on output file size?