Log in

View Full Version : [Beta] Minecraft XBLA Compression Library



fairchild
08-15-2012, 02:32 PM
Due to the little time i can spend on development and research i decided to release this beta version of my Minecraft XBLA Compression Library.

This is a Library written in (unmanaged) C/C++ that can be used in your .NET (C# example available) applications to decompress and compress the compressed data from the savegame.

Make sure to give credits if used in your application.

Example (C#):


[DllImport("libminecraft.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint decompress([Out] byte[] compressed_buffer, uint compressed_size, [In] byte[] decompressed_buffer, uint decompressed_size);
public static extern uint compress([Out] byte[] decompressed_buffer, uint decompressed_size, [In] byte[] compressed_buffer, uint compressed_size);

void MyFunction()
{
UInt32 decompressed_size = <decompressed size>;
byte[] decompressed_buffer = new byte[decompressed_size];

uint compressed_size = <compressed size>;
uint result = decompress(compressed_buffer, compressed_size, decompressed_buffer, decompressed_size);

// result now contains the real decompressed size and decompressed_buffer contains the decompressed data.
}

CloudStrife7x
08-15-2012, 02:45 PM
great work done as always fairchild :D

thegutta
08-15-2012, 02:51 PM
Excellent work Fairchild :)

maskedstick
08-15-2012, 09:39 PM
Thanks, this is amazing. Is there anyway we should know what the decompressed size is, or do we have to guess for now?

fairchild
08-15-2012, 09:58 PM
Thanks, this is amazing. Is there anyway we should know what the decompressed size is, or do we have to guess for now?

The decompressed size is in the header, or you can simply guess and then trim the byte array after you decompressed using the real decompressed size.

I implemented this in NBTExplorer, but now i want to know which is the best map editor that is open source so that i can modify that to use xbox360 savegames. :)

maskedstick
08-16-2012, 01:46 AM
Okay, I have a few questions. Assuming that for each chunk, the chunk data starts with decimal value 128 (that seems to be common to every chunk), how many bytes after that does the header take up (where does the actual compressed data start relative to the beginning of the chunk)? And am I supposed to be passing the whole chunk, including the header, to your methods? Or should I only be passing the compressed data?

xI cHOcOLaTe
08-16-2012, 02:13 AM
Damn dude. Good shit as always fairchild :3

fairchild
08-16-2012, 06:40 AM
Okay, I have a few questions. Assuming that for each chunk, the chunk data starts with decimal value 128 (that seems to be common to every chunk), how many bytes after that does the header take up (where does the actual compressed data start relative to the beginning of the chunk)? And am I supposed to be passing the whole chunk, including the header, to your methods? Or should I only be passing the compressed data?

Ok, this is how the chunk headers looks like.



Magic= 0x80, 0x00
ChunkSize=<short / uint16>

Could be one of these two:
DecompSize=<long / uint32>
Or:
Version=<short / uint16>
DecompSize=<short / uint16>

CompressedData=starts with 0xFF...


You should only send the compressed data in the compressed_buffer nothing else.

Serious_M
08-16-2012, 02:28 PM
nice work as always fairchild

maskedstick
08-16-2012, 04:54 PM
Thank you, I finally got it working. This is truly amazing. But I noticed one thing (which, in practice, doesn't make a difference):

Shouldn't this:


[DllImport("libminecraft.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint decompress([Out] byte[] compressed_buffer, uint compressed_size, byte[] decompressed_buffer, uint decompressed_size);

be this?


[DllImport("libminecraft.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint decompress([[I]In] byte[] compressed_buffer, uint compressed_size, [Out] byte[] decompressed_buffer, uint decompressed_size);

and same for the compress method?
It seems that in the decompress method, the compressed_buffer is what's going IN to the method to be processed, and the decompressed_buffer is what's coming OUT.

Like I said, in practice, there's no difference, but I wanted to help get rid of confusion.

OzelotDEHD
08-16-2012, 08:46 PM
how can use in VB.NET? i will programming a simple tool for me to Compress and DeCompress the file.

fairchild
08-17-2012, 07:37 AM
Thank you, I finally got it working. This is truly amazing. But I noticed one thing (which, in practice, doesn't make a difference):

Shouldn't this:


[DllImport("libminecraft.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint decompress([Out] byte[] compressed_buffer, uint compressed_size, byte[] decompressed_buffer, uint decompressed_size);

be this?


[DllImport("libminecraft.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint decompress([[I]In] byte[] compressed_buffer, uint compressed_size, [Out] byte[] decompressed_buffer, uint decompressed_size);

and same for the compress method?
It seems that in the decompress method, the compressed_buffer is what's going IN to the method to be processed, and the decompressed_buffer is what's coming OUT.

Like I said, in practice, there's no difference, but I wanted to help get rid of confusion.

That might be right, i'm no expert in C# and i rarely code things using this language.

OzelotDEHD
08-21-2012, 03:03 AM
i can decompress savegame.dat under 9MB but if the file is big over 9MB, crash the Decompressor, plz fix

fairchild
08-26-2012, 10:18 AM
i can decompress savegame.dat under 9MB but if the file is big over 9MB, crash the Decompressor, plz fix

Can you upload your savegame somewhere so that i can take a look?

Garbag3man117
08-30-2012, 01:49 AM
Has anyone gotten this to work with C#? If so, can you post a code sample? I get an AccessViolationException whenever I try to decompress a save file. Not knowing the slightest thing about C++, I'm not sure what to do.

pistol_pte
08-30-2012, 05:49 AM
I implemented this in NBTExplorer, but now i want to know which is the best map editor that is open source so that i can modify that to use xbox360 savegames. :)

MCEdit is open source, its writen in Python not sure if thats a problem

fairchild
08-30-2012, 07:46 AM
Has anyone gotten this to work with C#? If so, can you post a code sample? I get an AccessViolationException whenever I try to decompress a save file. Not knowing the slightest thing about C++, I'm not sure what to do.

Here is the C# source code i used to test the decompression function of the library with.



// Compressed data (test)
public byte[] Chunk = new byte[2025] {
0xFF, 0x28, 0x3E, 0x07, 0xE0, 0x02, 0x10, 0xE2, 0x83, 0x00, 0x00, 0x23,
0x07, 0x57, 0x34, 0x00, 0x00, 0x6F, 0x30, 0xDE, 0xF6, 0xF7, 0xBE, 0x5B, 0x77, 0x75, 0x6F, 0x65,
0xEB, 0xD6, 0xBD, 0x92, 0xFD, 0xB2, 0x5F, 0x1C, 0x31, 0x2C, 0x02, 0x04, 0x5C, 0x80, 0x11, 0x10,
0x81, 0x8C, 0x41, 0xCF, 0xB8, 0x65, 0xD4, 0x49, 0x23, 0x21, 0x49, 0x52, 0x2D, 0x02, 0x2E, 0x1C,
0x63, 0x90, 0x23, 0x8E, 0x75, 0x10, 0x91, 0xA2, 0x1C, 0xC7, 0x3A, 0xE9, 0x60, 0x40, 0x3C, 0x01,
0x00, 0x64, 0x06, 0xD0, 0x68, 0x0A, 0x00, 0xCC, 0xE1, 0xDC, 0xD6, 0x17, 0xB7, 0xB0, 0x6A, 0x3C,
0x23, 0x7C, 0x43, 0xF2, 0x04, 0xA4, 0x10, 0x9F, 0x3F, 0x5E, 0x01, 0x53, 0x96, 0x3A, 0x37, 0xD6,
0x3D, 0xBB, 0xD6, 0x0C, 0x46, 0x23, 0xDA, 0x69, 0x6D, 0x1D, 0x49, 0xD4, 0x26, 0x5B, 0x75, 0xE2,
0x26, 0x5F, 0xB6, 0x2E, 0xB8, 0xBF, 0x5F, 0x90, 0xC0, 0x00, 0xF9, 0xE0, 0xC6, 0x6C, 0x22, 0x93,
0x14, 0x0C, 0x20, 0x10, 0xC8, 0x02, 0x14, 0x21, 0x14, 0x7F, 0x3F, 0x08, 0xD8, 0x00, 0x00, 0x01,
0x00, 0x2A, 0x23, 0x82, 0xBB, 0x67, 0x28, 0xF3, 0x3F, 0xBE, 0xBF, 0x7B, 0xEF, 0xE3, 0xCC, 0x8C,
0x94, 0x89, 0x59, 0x0C, 0x5A, 0xBE, 0xA2, 0x59, 0x8C, 0x4A, 0x12, 0x4C, 0xD1, 0xD0, 0x22, 0x69,
0x41, 0xD0, 0x22, 0xCB, 0x5B, 0x0B, 0xDF, 0x7B, 0x45, 0xA5, 0xFA, 0x15, 0xE2, 0x77, 0xBE, 0x59,
0x6D, 0x56, 0xE9, 0x1A, 0x57, 0x3C, 0x23, 0xED, 0x8A, 0x9F, 0xEF, 0xAF, 0xBB, 0xF0, 0x42, 0x6F,
0x44, 0xED, 0x1C, 0x51, 0x45, 0x41, 0xDA, 0x51, 0x1D, 0x27, 0xC9, 0x9C, 0x4F, 0xC3, 0x3C, 0x4D,
0xE7, 0xE6, 0xAA, 0x3B, 0xCD, 0xB2, 0x67, 0xEE, 0x6E, 0x8F, 0xE9, 0x6B, 0xA5, 0xB3, 0x68, 0xD1,
0x01, 0x56, 0xBA, 0x21, 0xCC, 0xB7, 0x1E, 0x76, 0x9E, 0x85, 0x5C, 0xA6, 0xD8, 0x24, 0x17, 0x8E,
0x79, 0xDB, 0xE3, 0xD2, 0xEF, 0xE6, 0xD7, 0x79, 0x28, 0xA6, 0x73, 0x33, 0x0D, 0x0E, 0x7A, 0xF1,
0x1C, 0x97, 0xD4, 0xA3, 0x1E, 0xAC, 0xE8, 0xD6, 0x3E, 0xD7, 0xE0, 0xE8, 0x99, 0xD4, 0xCF, 0x51,
0xDF, 0x62, 0xB7, 0xCD, 0x18, 0xAB, 0x12, 0x09, 0x61, 0xDE, 0xCB, 0x7E, 0x64, 0xD5, 0xA9, 0xA3,
0x84, 0xC7, 0xAE, 0xA7, 0xF1, 0xC7, 0xAB, 0x89, 0x91, 0x3E, 0xEB, 0x44, 0x95, 0xED, 0xD6, 0x53,
0xBF, 0xA9, 0x2C, 0x51, 0xDB, 0xD7, 0x09, 0x15, 0xCD, 0xCD, 0x3D, 0x06, 0x08, 0x56, 0x55, 0xA8,
0x98, 0x8D, 0xBC, 0x74, 0x38, 0x2C, 0x56, 0x0B, 0x71, 0xA6, 0x38, 0xFD, 0x30, 0xB1, 0x6C, 0x1C,
0xDE, 0x32, 0x85, 0x35, 0xC6, 0xA8, 0xC8, 0xEE, 0x09, 0x35, 0xC3, 0xC3, 0x17, 0xFD, 0x71, 0x36,
0x19, 0xD5, 0x76, 0xF2, 0x5A, 0xEC, 0x43, 0x61, 0x7B, 0x6F, 0x4C, 0xEC, 0x76, 0x25, 0xF4, 0xF8,
0x34, 0xA1, 0x49, 0xD1, 0x6F, 0x03, 0xB2, 0x50, 0xA5, 0x3D, 0xAA, 0xBD, 0x3C, 0xB7, 0x7B, 0x3D,
0xB6, 0xBD, 0x94, 0xD9, 0x2A, 0x15, 0xC3, 0x2A, 0x26, 0x75, 0x1A, 0x31, 0x7D, 0xB3, 0x42, 0x2B,
0xB3, 0xB7, 0xC0, 0x35, 0x23, 0x12, 0x37, 0xE3, 0x1D, 0xBA, 0x9C, 0x99, 0xC5, 0x2F, 0x43, 0xCD,
0xDA, 0xC0, 0xE4, 0xF0, 0x77, 0x86, 0xC3, 0x23, 0xCD, 0x91, 0x3F, 0x2B, 0xB4, 0x5B, 0xE6, 0xA4,
0x64, 0x72, 0xF2, 0x23, 0xFC, 0x33, 0x25, 0xFA, 0xAE, 0xBC, 0x2C, 0x48, 0x23, 0x29, 0x96, 0x17,
0x01, 0x06, 0x9B, 0xEA, 0x4E, 0xAF, 0xE6, 0x02, 0x21, 0xE5, 0x52, 0x01, 0x8D, 0x6A, 0x90, 0x4C,
0xA8, 0x98, 0xE3, 0x76, 0x00, 0x69, 0x2D, 0x3B, 0xDB, 0xD1, 0xC0, 0x53, 0xC7, 0x4E, 0x16, 0xC3,
0xB5, 0xDA, 0x0D, 0x94, 0x54, 0x57, 0x1F, 0x1F, 0x08, 0x03, 0xBC, 0x8B, 0xE6, 0xE5, 0x40, 0x31,
0x9B, 0xA0, 0xF7, 0xA4, 0x32, 0x01, 0x41, 0x44, 0x0E, 0x02, 0xEA, 0x9E, 0xCB, 0x1F, 0x4C, 0x89,
0xE3, 0xEA, 0x05, 0xA7, 0x03, 0x4D, 0x2F, 0x5B, 0x69, 0x76, 0x52, 0xE5, 0xBB, 0xE5, 0x07, 0xD5,
0x2B, 0xD6, 0x0B, 0x5F, 0xBD, 0xC6, 0xBC, 0xA5, 0x96, 0x50, 0xC0, 0x21, 0xAC, 0x90, 0x9B, 0xEA,
0x08, 0xC8, 0x9B, 0xFC, 0xC3, 0x64, 0x00, 0x91, 0x36, 0x14, 0x00, 0x63, 0xC4, 0x9F, 0x79, 0xBF,
0x9C, 0x1D, 0xA4, 0x52, 0x23, 0x10, 0x98, 0xE6, 0x85, 0x80, 0xC9, 0xC8, 0xFE, 0xC5, 0x4D, 0xE4,
0x97, 0x53, 0xBA, 0x67, 0xF1, 0xC8, 0x8A, 0x39, 0x4B, 0x16, 0x38, 0x66, 0x61, 0xBA, 0xEC, 0x8E,
0x00, 0xFF, 0x60, 0x9A, 0x29, 0xB5, 0xC9, 0xF6, 0x53, 0xA1, 0x4A, 0xC1, 0x77, 0x8F, 0x36, 0xE6,
0x8E, 0xE1, 0xE6, 0x20, 0x50, 0x91, 0x01, 0xD4, 0xB4, 0x12, 0x25, 0x6B, 0x39, 0x86, 0x98, 0xFE,
0x72, 0x6B, 0xDE, 0x4F, 0x79, 0x37, 0x81, 0x12, 0x5B, 0x11, 0xB3, 0x20, 0xC0, 0x8D, 0x74, 0x43,
0x46, 0x65, 0x20, 0x63, 0xA1, 0x84, 0x48, 0x72, 0x5C, 0x9D, 0x22, 0x7A, 0xB1, 0x87, 0x0C, 0xBF,
0xA9, 0xF4, 0x16, 0x03, 0x9F, 0x17, 0x08, 0xB2, 0x0C, 0xB3, 0xAF, 0x84, 0x08, 0x6E, 0x4F, 0x98,
0x08, 0xDE, 0x97, 0xAF, 0x74, 0x21, 0x88, 0xA0, 0xFE, 0x29, 0x88, 0x25, 0x55, 0x91, 0x92, 0x20,
0x79, 0x86, 0xDA, 0xF2, 0xA7, 0x63, 0x67, 0xAC, 0x70, 0xA5, 0x92, 0xBA, 0x6C, 0x8E, 0x2C, 0x65,
0x6C, 0x5A, 0xFD, 0x27, 0xBD, 0x49, 0xA6, 0x5B, 0x98, 0x9A, 0xEC, 0x04, 0xFB, 0xB9, 0xB4, 0xC0,
0x0C, 0x91, 0x75, 0x50, 0x7A, 0x90, 0xDD, 0x3F, 0xD8, 0x92, 0x74, 0x55, 0x23, 0x4C, 0x97, 0x1A,
0x0C, 0x61, 0x46, 0x4B, 0xC5, 0xC5, 0x0C, 0xFE, 0x10, 0x8A, 0x12, 0x58, 0x35, 0xA1, 0x57, 0x68,
0x87, 0xBE, 0xC6, 0x39, 0xD2, 0x2C, 0x94, 0x73, 0xA6, 0xDC, 0xDC, 0xE4, 0x42, 0xCF, 0x9C, 0xA6,
0x29, 0x2C, 0xB6, 0xB7, 0x1D, 0xCF, 0x84, 0x7E, 0x40, 0xF9, 0xB9, 0x8A, 0x2C, 0x06, 0xD5, 0x24,
0x4E, 0x23, 0x01, 0x99, 0x4B, 0x4B, 0x49, 0xE6, 0xAA, 0xE0, 0xD0, 0x20, 0x7D, 0x15, 0xB7, 0xA6,
0xE4, 0xA1, 0x9A, 0x06, 0x2E, 0x1E, 0xAA, 0x4B, 0x6A, 0xEB, 0xE3, 0x10, 0x60, 0xB7, 0x65, 0x31,
0xC5, 0x2A, 0x11, 0x4B, 0xB2, 0xCB, 0xD2, 0xFC, 0xC8, 0xB3, 0x6A, 0x2F, 0xB9, 0x58, 0xC7, 0x48,
0x09, 0xE9, 0xAA, 0x82, 0x46, 0x82, 0x47, 0xA1, 0x77, 0x53, 0x69, 0x42, 0x86, 0x66, 0x42, 0x37,
0xB3, 0x69, 0x2A, 0x4A, 0x0A, 0x44, 0x1C, 0x88, 0x22, 0x2C, 0x0A, 0xC4, 0x67, 0x0A, 0xCF, 0x5A,
0x8C, 0xCF, 0xE7, 0xE7, 0xD7, 0xF1, 0xD1, 0x7F, 0x1B, 0xC9, 0xD7, 0x08, 0x9F, 0x99, 0x6C, 0x8D,
0xA9, 0x06, 0xA6, 0x2F, 0x04, 0x8A, 0x90, 0x14, 0x17, 0x06, 0x49, 0xCA, 0xE4, 0x09, 0xA6, 0x7A,
0x1F, 0x0B, 0xF9, 0x46, 0xB3, 0x61, 0xC8, 0x23, 0xA6, 0x61, 0x08, 0xE4, 0x73, 0x8E, 0x46, 0xD0,
0x6B, 0x9A, 0xEE, 0xEE, 0x18, 0x2C, 0xE2, 0xF2, 0xF4, 0xD6, 0x1A, 0x11, 0x9C, 0x12, 0x46, 0xF9,
0x87, 0xCA, 0x0B, 0x04, 0xAB, 0x31, 0x86, 0x2A, 0x58, 0x8B, 0x5A, 0xA8, 0xF2, 0x7E, 0xF0, 0x59,
0xFA, 0x14, 0x21, 0x26, 0xAE, 0x0A, 0x7C, 0xB5, 0x02, 0x93, 0x11, 0x3C, 0xE6, 0x30, 0xF3, 0xD8,
0x05, 0x9A, 0x8F, 0xE9, 0xC9, 0x41, 0x7F, 0x76, 0xB9, 0x92, 0x46, 0xC6, 0x8E, 0x97, 0xF8, 0x00,
0xB5, 0x1E, 0x4A, 0xB2, 0xDA, 0x4E, 0xDF, 0x8A, 0x64, 0x16, 0x4A, 0x10, 0x0E, 0xC3, 0x68, 0x16,
0x48, 0xAE, 0x31, 0xC4, 0x3C, 0x37, 0x06, 0xE2, 0xF6, 0x20, 0x76, 0x15, 0x68, 0xA1, 0x44, 0x49,
0x50, 0x02, 0x09, 0x43, 0x13, 0xCC, 0x20, 0x3C, 0x18, 0x4A, 0x69, 0x6C, 0xDC, 0xAA, 0xC6, 0x5D,
0x3F, 0xBD, 0x06, 0x55, 0x12, 0x7D, 0x99, 0x39, 0x4B, 0xF6, 0xE3, 0xC2, 0x0A, 0xA2, 0x49, 0xD7,
0xB8, 0x46, 0x77, 0x5D, 0x21, 0xC3, 0xB8, 0x0E, 0xA4, 0xD7, 0x66, 0x3C, 0x77, 0x88, 0xD6, 0xB9,
0x28, 0x6A, 0x7A, 0x51, 0x76, 0xAF, 0xD3, 0x9C, 0x94, 0x4A, 0x4B, 0x30, 0xF5, 0xCA, 0x8E, 0x1D,
0x0B, 0xCB, 0x64, 0x7E, 0x30, 0xDA, 0xC8, 0x67, 0xF9, 0x37, 0xC0, 0x0C, 0x45, 0x47, 0xA5, 0x11,
0xCC, 0x87, 0xAA, 0x98, 0x86, 0x20, 0xA1, 0x2A, 0x99, 0x90, 0x32, 0xC0, 0xBC, 0x56, 0x51, 0xD0,
0x33, 0x1C, 0x36, 0x44, 0xA5, 0x13, 0x82, 0x69, 0xEA, 0x2A, 0x15, 0xB5, 0x15, 0xB7, 0x0E, 0x45,
0x48, 0x04, 0x4D, 0x35, 0x43, 0x48, 0x8C, 0x3E, 0xA9, 0x15, 0x90, 0xAC, 0x77, 0xC8, 0x0E, 0xCE,
0x42, 0x15, 0x8D, 0xA0, 0xC3, 0x2E, 0x80, 0x3A, 0x94, 0x20, 0x07, 0x1F, 0x9C, 0x3C, 0x09, 0xAF,
0x33, 0x8A, 0x48, 0x90, 0xC3, 0x1B, 0x45, 0xCE, 0xD1, 0xF0, 0x8E, 0x35, 0xD1, 0xF9, 0x4E, 0xE7,
0x12, 0x2A, 0x24, 0x54, 0xC1, 0xDA, 0xBE, 0x64, 0x52, 0x2B, 0x54, 0xC0, 0x2A, 0x1A, 0x29, 0xA7,
0x61, 0x95, 0x55, 0xC8, 0x64, 0x01, 0x2A, 0x99, 0x2E, 0x2A, 0x49, 0xBF, 0x14, 0x3A, 0x09, 0x5E,
0x04, 0x8A, 0x29, 0xE9, 0xA3, 0xD4, 0x6C, 0x30, 0x9C, 0x6B, 0xCF, 0xD3, 0x30, 0xBB, 0xE9, 0x98,
0x66, 0x44, 0xA8, 0x83, 0x51, 0xDB, 0x5F, 0x72, 0x25, 0x1C, 0x54, 0x0C, 0x77, 0xCE, 0x3A, 0x8C,
0x20, 0xC9, 0xFA, 0xDA, 0xF9, 0xD0, 0xA0, 0xDE, 0xEA, 0x73, 0x8C, 0xE3, 0xEC, 0x16, 0x15, 0x19,
0x02, 0xA4, 0x20, 0xE4, 0xAB, 0xE4, 0xC5, 0x2D, 0x9B, 0xDA, 0x8F, 0x49, 0x06, 0x21, 0x61, 0x82,
0xA8, 0x1B, 0x22, 0x23, 0xE8, 0x43, 0x99, 0x8E, 0x75, 0x8E, 0xD3, 0x83, 0x2C, 0x6B, 0xAD, 0xF0,
0x72, 0x24, 0x48, 0x25, 0xD7, 0x26, 0xC6, 0xF2, 0x4E, 0x35, 0x08, 0x49, 0xF0, 0x75, 0x12, 0x6F,
0xE1, 0x42, 0x22, 0x40, 0x06, 0x08, 0x68, 0x43, 0x36, 0xFC, 0x3D, 0x8C, 0xA5, 0x2D, 0x47, 0xC0,
0x3F, 0x3C, 0x1D, 0x0E, 0xC5, 0xC5, 0x18, 0x64, 0x1B, 0x62, 0xEA, 0x92, 0x60, 0xE2, 0x5B, 0x31,
0xE2, 0x05, 0x2D, 0xD8, 0xDC, 0x79, 0x37, 0x6A, 0x38, 0x0F, 0x40, 0xB1, 0xA2, 0xA2, 0xB7, 0x1F,
0xD2, 0x49, 0x92, 0xB4, 0x4E, 0xF8, 0xB0, 0x1E, 0x0D, 0xFD, 0x19, 0xDE, 0x1A, 0x9D, 0xB8, 0xB8,
0xEF, 0x80, 0x96, 0x0B, 0xC0, 0xCD, 0x64, 0x33, 0xC9, 0x51, 0x52, 0x54, 0x6C, 0x09, 0x21, 0x45,
0x0A, 0x81, 0xA0, 0x49, 0x62, 0xC5, 0xC8, 0x76, 0x3A, 0xFE, 0x61, 0x13, 0x0F, 0xB9, 0x36, 0x1B,
0x62, 0x96, 0x69, 0xC1, 0x5B, 0x57, 0xAE, 0xB1, 0x1F, 0xC0, 0x7C, 0x78, 0x33, 0xA7, 0x89, 0x29,
0x11, 0x8F, 0xFF, 0x2B, 0xDE, 0xB9, 0x88, 0x20, 0x44, 0x30, 0x63, 0xF2, 0xA0, 0x2D, 0x45, 0x2C,
0x15, 0x74, 0x07, 0x96, 0xB2, 0x41, 0xC1, 0x53, 0x1E, 0x67, 0x0D, 0x99, 0xF7, 0xA3, 0x9A, 0xBC,
0x63, 0x99, 0x03, 0x8A, 0x4E, 0xB9, 0x52, 0x83, 0x52, 0x6D, 0x0C, 0x59, 0x2C, 0x12, 0x64, 0x4E,
0x68, 0x87, 0x20, 0x55, 0x96, 0xD1, 0xCA, 0xB1, 0x10, 0x69, 0xFD, 0x26, 0x9E, 0xF8, 0x12, 0xFE,
0x83, 0xD0, 0x8E, 0x00, 0xE7, 0x4E, 0x35, 0x78, 0x7E, 0x10, 0xB3, 0xE2, 0xA5, 0xAC, 0x24, 0xAF,
0x26, 0x61, 0x3F, 0xE4, 0xF0, 0x2F, 0xAA, 0x0A, 0xB8, 0x80, 0xFF, 0x45, 0xD4, 0xFB, 0x98, 0x2E,
0xA9, 0x33, 0x28, 0x37, 0x31, 0x59, 0x4B, 0x0A, 0xCB, 0x7F, 0xBE, 0xD5, 0xEF, 0x23, 0x17, 0x27,
0x75, 0x90, 0x01, 0xC7, 0x53, 0x9A, 0x88, 0xD5, 0x54, 0xD6, 0x85, 0x42, 0x07, 0x51, 0x88, 0x18,
0xF9, 0x30, 0x5D, 0x0E, 0x08, 0xCB, 0x0C, 0x24, 0xF4, 0x8E, 0x61, 0x1A, 0xDF, 0x85, 0x4A, 0xA1,
0x1B, 0x90, 0x22, 0x2B, 0x68, 0x0C, 0x98, 0x05, 0x42, 0xBA, 0xC0, 0xAA, 0x9C, 0x2D, 0x47, 0x8A,
0x39, 0x37, 0x30, 0xCA, 0xD8, 0xB4, 0x10, 0x39, 0x56, 0x2B, 0x6B, 0xE3, 0xEC, 0x52, 0x55, 0x11,
0x9F, 0xE5, 0x67, 0x16, 0x73, 0x46, 0x65, 0x59, 0x3A, 0x60, 0x79, 0xED, 0x97, 0xEB, 0xAA, 0x3C,
0xEC, 0xF6, 0xED, 0xAE, 0xE6, 0xB3, 0xC2, 0x02, 0xB5, 0x4B, 0x70, 0x1E, 0x38, 0xF6, 0x66, 0xB4,
0xBF, 0xDB, 0x2C, 0xC9, 0x83, 0x55, 0x43, 0x5B, 0x88, 0x8E, 0x43, 0xC9, 0x17, 0xC7, 0xFD, 0xD4,
0x5F, 0x4D, 0xE1, 0x8E, 0x09, 0xB3, 0xDE, 0xBF, 0x7F, 0xAD, 0xAB, 0x20, 0xDE, 0xDE, 0xB7, 0x76,
0x8D, 0xDB, 0x36, 0xA3, 0x99, 0xBF, 0x44, 0x51, 0xFE, 0x6A, 0x7B, 0xD7, 0xDD, 0x61, 0xA1, 0x8D,
0x8F, 0xB8, 0x10, 0xAD, 0x3B, 0x4C, 0xAD, 0xDE, 0xD1, 0xFF, 0x3F, 0x7A, 0xD1, 0x0D, 0xFC, 0x86,
0xC7, 0xB6, 0xC9, 0x18, 0x8F, 0xDF, 0x5E, 0xEA, 0xB1, 0x9B, 0xBC, 0x7B, 0x31, 0x30, 0xB7, 0xA2,
0x78, 0xFD, 0xF7, 0x6A, 0xEF, 0xEE, 0xF6, 0xAB, 0x76, 0xEE, 0xC5, 0xB2, 0x1D, 0xA1, 0xBA, 0x2F,
0x5C, 0xD9, 0x5B, 0x4B, 0xBA, 0xBA, 0x82, 0xE1, 0xC4, 0xA1, 0x40, 0xE3, 0x2D, 0x3F, 0x3D, 0x77,
0xFC, 0xF5, 0x85, 0x47, 0x3C, 0x27, 0xAE, 0x3F, 0x84, 0xB9, 0x70, 0x0F, 0x54, 0x73, 0x2B, 0x4D,
0xA1, 0x8E, 0xCF, 0x9F, 0x13, 0x3A, 0x68, 0xE2, 0xC3, 0x95, 0x73, 0x00, 0x4E, 0xE9, 0x20, 0x2B,
0x07, 0xEC, 0x4F, 0x9D, 0x18, 0xDB, 0xEF, 0x1D, 0x66, 0xB0, 0x67, 0xAE, 0xF7, 0x71, 0x26, 0xE7,
0xDC, 0xEE, 0xA7, 0x4C, 0x5C, 0xB6, 0xCB, 0x4F, 0xF1, 0x93, 0x79, 0x7B, 0x70, 0x6D, 0x67, 0x9E,
0xF4, 0xE6, 0xC3, 0x52, 0xF9, 0x73, 0x72, 0x4D, 0x21, 0xAB, 0x1D, 0xD9, 0x83, 0x9F, 0x7B, 0x3C,
0x8D, 0x73, 0x0D, 0xE1, 0x8A, 0xDB, 0x7F, 0x99, 0x4A, 0x64, 0xAC, 0x1E, 0x59, 0xEC, 0x9F, 0xF5,
0x49, 0xB3, 0x11, 0xC9, 0x4E, 0x53, 0x8B, 0x63, 0xF0, 0xAA, 0x31, 0x36, 0xC3, 0xE4, 0x9F, 0x82,
0xBF, 0xFA, 0x29, 0xFE, 0xAF, 0x5B, 0x9F, 0x4C, 0xFF, 0xEA, 0x50, 0xF9, 0x34, 0xA9, 0xE5, 0xBE,
0x95, 0x9F, 0xC2, 0xC9, 0xA0, 0x1E, 0xE1, 0x7F, 0xF7, 0xE9, 0x52, 0x75, 0x18, 0x62, 0x27, 0x70,
0x2C, 0x50, 0x13, 0x51, 0xBA, 0xEC, 0x60, 0x9F, 0x1E, 0xE9, 0xCB, 0xEE, 0xA1, 0x15, 0x7A, 0xC8,
0xB8, 0x23, 0xEE, 0x4D, 0x21, 0x74, 0xA0, 0x09, 0x77, 0xBF, 0xF2, 0xDB, 0x36, 0xD8, 0x84, 0x24,
0x77, 0x53, 0x4C, 0xDE, 0x74, 0xA7, 0xF2, 0x22, 0xD3, 0xCE, 0xC6, 0xFC, 0x82, 0x74, 0xE3, 0xC5,
0x62, 0xD5, 0x8A, 0x9C, 0xCF, 0xC5, 0x9E, 0x15, 0xB2, 0x27, 0xD9, 0x62, 0xAE, 0x27, 0xCB, 0x75,
0xB6, 0xAF, 0x8D, 0x5B, 0x13, 0xEE, 0xE9, 0x62, 0x63, 0x44, 0x23, 0xCD, 0xB7, 0xFA, 0xDD, 0xD9,
0x7F, 0xA3, 0x4D, 0xCA, 0xFE, 0x25, 0x9A, 0x55, 0xDE, 0x39, 0x66, 0x5D, 0xFE, 0xF9, 0x5E, 0x35,
0x01, 0x83, 0x66, 0xDD, 0x12, 0xF2, 0xAE, 0xB6, 0xC2, 0x59, 0xDD, 0x82, 0x5E, 0xF9, 0x9C, 0xFE,
0xCC, 0xB6, 0xDE, 0xB2, 0xBA, 0x96, 0xEA, 0x40, 0x74, 0x00, 0x00, 0x00, 0x00,
};

[DllImport("libminecraft.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint decompress([Out] byte[] compressed_buffer, uint compressed_size, [In] byte[] decompressed_buffer, uint decompressed_size);

private void test_decompress()
{
UInt32 decompressed_size = 82360;
byte[] decompressed_buffer = new byte[decompressed_size];

uint compressed_size = (uint)Chunk.Length;
uint result = decompress(Chunk, compressed_size, decompressed_buffer, decompressed_size);
}

eswick
07-06-2013, 12:31 AM
Is it known whether or not this library will ever be open-sourced? I understand there were earlier complications with the Xenon interpreter, but is this library written completely in C/C++? I would very much like to port it to Mac OS X.

BloodWave
08-11-2013, 05:09 AM
Thanks fairchild.

Do you know if TU 12 will affect the ability of your tools to work on MCXBLA? I expect that they will be changing from the McRegion format to Anvil but didn't know if any other changes would be made.

OzelotDEHD
03-31-2014, 09:56 AM
VB.NET plz example :) thx

amany
03-31-2014, 12:08 PM
thank you i will give credits for thank you very much :050: & nice work

rawr619
12-28-2015, 12:07 PM
awesome job