So I missed all the updates over on doomworld about Freedoom, and deutex has been updated to support PNG files. Which certainly explains why all the assets were in PNG. I had thought they were still going the way of prBoom+ or some other ‘limit extending’ engine, but it turns out that they are wanting to target ‘vanilla’ LinuxDOOM derived engines.
So I tweeked my Makefiles where needed, and didn’t have enough Python to regenerate the text the way they do, so for now all the text assets are from a significantly older version. At any rate, here we go with the new assets:
Now what is great is that the Feeedoom folks have had the whole ‘apple pie’ stance to their project, with everything included. However they have drifted tools, build processes and other methodologies through the years. But thankfully the full archives are online, so I could go through and piece stuff together to my liking. Of course this all needs various tools, and oh boy does it ever need tools. You need:
a C pre-processor
A Unix’y build environment, I used the ancient MSYS
And probably many more I’m forgetting.
The first was to compile the levels. I used Ron Rossbach’s ancient IDBSP, a C port of iD’s command line Objective C level compiler. I did run into two slight issues, the first is that Ron’s tool expects their to be a line in the level’s dwd file telling us the name of the wad it’ll compile to, which of course is missing. The other is that I suck a makefiles, and just cheated forcing the tool to use a .wad extension on whatever .dwg it converts. And with that out of the way, I had the levels all built.
However that is where I found out the hard way that Freedoom doesn’t target something like my goal of being able to run this wad with the original DooM v1.1 release. The first problem is that Freedoom uses a different palette set, where it looks like it should be deeper? I’m not sure, but one thing was for sure everything looked like a rainbow sea of wrong and any vanilla or chocolate engines. And that is where I got a fun chance to play with ImageMagik. It really is quite powerful.
The first problem of course is the palette. Buried in the Python build scripts is a Perl fragment for generating a palette, and the all important playpal.lmp & colormap.lmp. I also got to spend a lot of time trying to extract that palette and do something useful with it to no avail. But googling led me to VGA_palette_with_black_borders.png, on Wikipedia of all things. So using this as a base I could convert, dither, and re-map the higher color Freedoom artwork into something that would play nice with Vanilla Doom. The downsite is that I didn’t try to find out exactly what assets a DooM version 1 wad needs, so I converted them all. On a good Xeon or i7 it takes about 10-20 minutes all the images. I can’t even think about how slow this would be using a 486, 68040 or MIPS.
Vanilla DooM v1.1 only plays audio at 11,000 Hz, 8bit deep. All the later ones needless to say use better sampling, and once more again Freedoom was at a higher level. I used sox to re-sample all the audio into the lower frequencies.
Later engines also are capable of directly playing MIDI files, and taking advantage of OPL3 chips, instead of v1.1’s OPL2 level. Thankfully Natt’s midi3mus is still online, and I was able to use this to convert Freedoom’s MIDI into the more restricted MUS format.