I can’t remember exactly what I was doing 17 years ago, but it probably didn’t involve playing the at-the-time violently controversial PC game Carmagddeon. I almost certainly wouldn’t have been poking around the game’s data files… but if I — or anyone for that matter — had taken the time to investigate, well, they’d have discovered some interesting tidbits.
A developer by the name of Jeff Harris recently found himself with time on his hands to go diving into Carmageddon‘s debug symbols file. Usually symbol files aren’t included in the distribution of a game, but they can occassionally turn up it the person responsible for packaging up the game forgets to delete them.
Symbol files allow a programmer to map internal program calls to their source code counterparts, which makes tracking down errors a lot easier. Of course, you can understand why this information would be irrelevant to include with the final game. Yet, for Carmageddon‘s Splat Pack, a file entitled “DETHRSC.SYM” found its way into the end product.
Davis explains on his blog the process of investigating the file’s insides:
Having made a remake of the Carmageddon engine, and being generally curious about random binary files, I tried to figure out the file format. Immediately by looking at it in a hex editor, it was obviously a debugging symbol file, the question was which type of symbol file? Of course, there are many symbol files with a .sym extension, and after some trial and error, it turned out to be a Watcom symbol file. I grabbed a copy of OpenWatcom and fired up the debugger, wd. It could read the symbols, but I never found any Carmageddon executable that matched up with it. It seems likely it was left there by mistake from a debug build.
I realise this will make no sense to a lot of people — it’s sufficient to say that Davis was able figure out the actual names of the internal calls used in the game and they’re colourful to say the least. Several readers of /r/gamedev on Reddit uncovered the following gems:
MakeFlagWavingBastardWaveHisFlagWhichIsTheProbablyTheLastThingHeWillEverDo()
DrawSceneyMappyInfoVieweyThing()
PDGrabLargestMammaryWeCanPlayWith()
CancelPendingCunningStunt()
OoerrIveGotTextInMeBoxMissus()
SaySorryYouLittleBastard()
CarWorldOffFallenCheckThingy()
There are quite a few others (including plenty containing NSFW language), which you can check out on /r/gamedev.
Carmageddon 1 debugging symbols dumped [1am Studios, via Reddit]
Comments
5 responses to “Ancient Carmageddon Code Reveals Some… Interesting Names For Things”
Going back to a time when game developers were all good friends who knew how to have fun while making the game, where money and success were probably not the most important things on the agenda. Stainless are still mucking around to this day making Carmageddon: Reincarnation.
It’s funny, even with strict classification, Carmageddon never got banned or censored here in Australia even with all the negative press and subsequent moral panic, in the UK they had to have a zombie mode which turned blood green and iirc Germany had robots instead of humans or zombies.
A modern game is so much more complex though. Even back then you’d name variables and functions at a rate that selecting names for them is almost subconscious. Plus using practical naming standards is just polite if you know someone else might be working alongside you. They’ve got to be able to follow what you’re doing without you around to explain it.
Now comments on the other hand, they still know how to party. =P
German classification rules prohibit blood which is usually the reason why you have the option of different coloured blood or sparks.
I remember browsing through the GTA3 files back in the day (looking for the radio station wavs) and seeing the files pertaining to car damage ranging from a generic description to FuckedCar()
That’s funny and all, but it wouldn’t be very pleasant to maintain.