pack: pack -o /tmp/jumpbump.dat etc or you can just put all the files in a dir, cd to that dir, and do pack -o /tmp/jnb.dat * and it will put all the files in the current dir inside the packfile. Not much error checking, but most user stupidity is caught before bad things happen. don't try things like pack -o stuff.dat ../file.c because it will add "../file.c" as the filename in the packfile, which will certainly fuck things up. unpack: unpack filename.dat will unpack it in the current directory. there is no error checking, so if you give it /proc/kcore as input, you will probably end up with a whole bunch of files with really difficult to delete filenames. take a look at the code, its actualy Mad Simple(tm). Just like I thought, the files were not compressed. I commented pack.c sparsely, but unpack.c is just so simple it doesn't need commenting. Order of files in the .dat archive doesnt matter - bump.mod doesn't have to be first, etc. Loader finds them just fine. In order to make sense of the code, it needs to be split up into a lot of little .c files, each dealing with a set of things. Also, DOS/whatever support needs to be dropped, because it's impossible to understand shit through a mess of #ifdef etc. Each .c would deal with say, .dat I/O, gfx, players, AI, network, game init, music, etc. The way the shit is right now its one hell of a huge mess that makes very little sense. I am going to play around with modularizing the code and trying to understand it, and hopefully make some sense out of it. Before it makes sense its pointless trying to add things. tc