Index: tools/mkarray.py
===================================================================
--- tools/mkarray.py	(revision 22299ed9a3c298d5c73fceaefb6a619c975bdee1)
+++ tools/mkarray.py	(revision 913007f6f5b0d4c2b605d1f369bc4dfed067d9fb)
@@ -77,4 +77,6 @@
 	src_cnt = 0
 	
+	archive = zipfile.ZipFile("%s.zip" % dest, "w", zipfile.ZIP_STORED)
+	
 	for src in sys.argv[5:]:
 		basename = os.path.basename(src)
@@ -92,4 +94,8 @@
 		if compress:
 			src_data = deflate(src_data)
+			src_fname = os.path.basename("%s.deflate" % src)
+			archive.writestr(src_fname, src_data)
+		else:
+			src_fname = src
 		
 		if sys.version_info < (3,):
@@ -105,5 +111,5 @@
 		data_ctx.append(".size %s, %u" % (symbol, length_out))
 		data_ctx.append("%s:" % symbol)
-		data_ctx.append("\t.byte 0x" + ', 0x'.join(chunks(binascii.b2a_hex(src_data), 2)) + "\n")
+		data_ctx.append("\t.incbin \"%s\"\n" % src_fname)
 		
 		desc_field = []
@@ -112,5 +118,11 @@
 		desc_field.append("\t\t.addr = (void *) %s," % symbol)
 		desc_field.append("\t\t.size = %u," % length_out)
-		desc_field.append("\t\t.inflated = %u" % length)
+		desc_field.append("\t\t.inflated = %u," % length)
+		
+		if compress:
+			desc_field.append("\t\t.compressed = true")
+		else:
+			desc_field.append("\t\t.compressed = false")
+		
 		desc_field.append("\t}")
 		
@@ -120,6 +132,4 @@
 		
 		src_cnt += 1
-	
-	archive = zipfile.ZipFile("%s.zip" % dest, "w", zipfile.ZIP_STORED)
 	
 	data = ''
@@ -131,5 +141,6 @@
 	data += "#define %sS_H_\n\n" % label.upper()
 	data += "#include <stddef.h>\n"
-	data += "#include <stdint.h>\n\n"
+	data += "#include <stdint.h>\n"
+	data += "#include <stdbool.h>\n\n"
 	data += "#define %sS  %u\n\n" % (label.upper(), src_cnt)
 	data += "typedef struct {\n"
@@ -138,4 +149,5 @@
 	data += "\tsize_t size;\n"
 	data += "\tsize_t inflated;\n"
+	data += "\tbool compressed;\n"
 	data += "} %s_t;\n\n" % label
 	data += "extern %s_t %ss[];\n\n" % (label, label)
