TITAN presents /"""\ | .\ \ m u n c h \ \' | \___/ muncho 0.01b the mach-o 4k packer written by jix Copyright (c) 2008 Jannis Harder Description: Muncho is an executable packer for Mac OS X written to create 4k intros. It replaces the linker that would be used for a normal compile. It converts all library references to references by hash and then compresses the resulting code using a custom context mixing compression algorithm. Overhead: The decompression routine is ~350 bytes and the Mach-O header is ~200 bytes in size. Adding the dynamic linker setup code there are about 3.1kb left for compressed data. Using the --reltrans option adds another 50 byte, but results in smaller files for code that contains many function calls. Additionally if argc and argv aren't used it is possible to save 20-30 bytes by specifying --no-args. Compatibility: Muncho supports linkage with normal C libraries. There is also limited C++ support, but exceptions and rtti are untested and there is no support for weak externals (C++ libraries may cause problems). ObjC is completely untested. Example: For a usage example which initializes video and audio take a look at the files in the example directory. Feedback and bugreports: If you have any comments or suggestions about muncho just leave a comment on pouet.net If muncho crashes or generates a binary that doesn't work you can help by sending a bug report to muncho@method-missing.org, describing what you did and including object files and/or code. You can also help muncho getting better by providing test data in form of object files or source code of your mac 4k intros. Usage: muncho [options] input ... Options: -o file, --output file write executable to file (default is muncho.out) -l library, --lib library link executable with library -f framework, --framework framework link executable with framework -L directory, --libdir directory add directory to the library and framework search path -e symbol, --entry symbol use symbol as entry point -a, --no-args don't pass argc, argv and envp to the entry point -t, --reltrans apply relative addressing transformation -u alignment, --align-uninitialized alignment align uninitialized data to 2**alignment byte boundaries -s size, --target-size size specify the target output size -F, --fast don't optimize compression just output -n num, --numopt num do num optimization steps -R seed, --random-seed seed use seed as random seed -D, --demangle use c++filt to demangle c++ symbols in status messages -v, --version print the version -h, --help print this help message