DM3split is a tiny program to split DM3 files at level changes. It is not perfect but should be able to split most DM3 files. It can't work with the newer DM_66 and DM_67 file types, as they use Huffman compressed data.
This tool is really important for all the people who are organizing Quake III Arena tournaments, record all action but want to distribute only parts of it.
The program does not reveal any secret information on the internal structure of DM3 files (which I don't have anyway). Only the block structure of the file is known and used. I got permission from Todd Hollenshead himself, that I can distribute this tool as long as I don't sell it.
This program is only a toy. It serves mostly as a test platform for all future OpenDemo Perl and Java tools. So please send me now bug reports, as long as I can correct my build system without much effort.
Many thanks to Nick Ooka, who send me a non-working DM3 file and pointed me in the really important direction of different Perl implementations. Perl for Windows behaves a bit different (binary files must be marked with binmode() because of the stupid 0x0d 0x0a line endings) but DM3split can now cope with it. I checked the Perl script under Linux and with the Perl for Windows inside Wine (Windows emulator for Linux).
Get it from the download page.
DM3split started as Perl script, but even now exist some poor souls, who don't have it installed. So I reimplemented the basic idea in Java as the class com.machinima.opendemo.DM3split. I packed the DM3split.class file into a Java Archive (JAR) dm3split.jar. So you have many possibilities to run the Java application (not a Java applet):
Some words on the usage. DM3split must be called with exactly 2 command line parameters. The first is the DM3 input file and the second is the DM3 output file template. The levels will be numbered beginning with 1 and the template gives the resulting file name.