diff --git a/tools/f2k5.c b/tools/f2k5.c
deleted file mode 100644
index 60e2daf..0000000
--- a/tools/f2k5.c
+++ /dev/null
@@ -1,79 +0,0 @@
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-int main(int argc, char* argv[])
-{
-	const uint8_t sync[] = {
-		1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3C,0x5A
-	};
-	while(--argc > 0)
-	{
-		uint8_t l;
-		char* path = argv[argc];
-		FILE *in, *out;
-		in = fopen(path, "rb");
-		out = fopen("FILE.K5", "wb");
-
-		// HEADER BLOCK
-		fwrite(sync, 1, sizeof(sync), out);
-
-		uint8_t head[17];
-		l = 0;
-		head[l++] = 0; head[l++] = 16;
-		for(int i = 0; l < 13;)
-		{
-			if(i >= strlen(path)) break;
-			if(path[i] == '.') i++;
-			if(path[i] == '/') {
-				l = 2;
-				i++;
-				continue;
-			}
-			head[l++] = path[i++];
-		}
-
-		while(l < 13) head[l++] = ' ';
-
-		head[l++] = 2;
-		head[l++] = 0;
-		head[l++] = 0;
-		head[l] = 0;
-
-		for(int i = 2; i < l; i++)
-			head[l] += head[i];
-		head[l] = -head[l];
-		l++;
-		fwrite(head, 1, 17, out);
-
-		// DATA BLOCKS
-		for(;;)
-		{
-			uint8_t buf[254];
-			l = fread(buf, 1, 254, in);
-			if(l <= 0) break;
-
-			fwrite(sync, 1, sizeof(sync), out);
-			head[0] = 1;
-			head[1] = l + 2;
-			fwrite(head, 1, 2, out);
-			fwrite(buf, 1, l, out);
-
-			head[0] = 0;
-			while(l > 0)
-				head[0] -= buf[--l];
-			fwrite(head, 1, 1, out);
-		}
-
-		// FOOTER BLOCK
-		fwrite(sync, 1, sizeof(sync), out);
-		head[0] = 255;
-		head[1] = 2;
-		head[2] = 0;
-		fwrite(head, 1, 3, out);
-
-		fclose(in);
-		fclose(out);
-
-	}
-}
