SIGIL for iOS and tvOS for Apple TV

So, this one should be quick and easy – I’ve added code and functionality to my DOOM port for SIGIL, the new megawad for DOOM from John Romero.


DOOM, DOOM II, Final DOOM and SIGIL for iOS and tvOS
https://github.com/tomkidd/DOOM-iOS

There’s not a whole lot to it, since SIGIL takes the form of a WAD file it was mostly just adding additional targets in Xcode with some tweaks and some fun with logos. I basically did it in a day or so. I’m still working on a new project that I’m not ready to unveil yet (and I’m not sure I can even get it working/finished yet) so I figured dash out something quick.

It’s essentially impossible to do a proper rundown of John Romero in brief so I’d advise anyone legitimately interested to go read Masters of DOOM, David Kushner’s seminal work on the history of id Software and, in particular, Romero and Carmack, who the author likens to the “Lennon and McCartney of video games”.

That said, the brief version is Romero was a co-founder of id Software, worked on most if not all of their games through the original Quake but found particular joy in working on DOOM, later quit or was ousted depending on which Van Halen is telling the story, goes on to found Ion Storm which released a handful of games before collapsing under the weight of unfortunate business decisions, and has had his hands in a number of pies since then ranging from mobile gaming to console titles. His popularity and appearance made him one of the first “rock stars” of the game industry, which is probably why I made no less than two music analogies above.

He’s been involved in a few endeavors in the years since that have had issues getting off the ground, but in following his work and style, it’s clear that he’s playing to his strengths and he’s at his happiest when he’s creating and designing games and levels. In many ways he thrived in the era when games were smaller affairs so it’s logical that his first and biggest release in many years would take the form of levels for DOOM, a relatively low-friction endeavor. Instead of writing a game, it’s a game and a codebase with decades of work behind it, some of which was his. Instead of making a level editor (another one, since he wrote the original) he just used an existing one from the fan community. And instead of having to get together investors or rent office space or hire employees he can just do the work himself.

An excellent article on Shacknews details the particulars of his process better than I could here but suffice it to say there’s a reason why, after 25 years of free content this one set of levels for DOOM is getting so much attention.

Some of that is due to the nature of its release. The logistics, both legal and otherwise, of charging for content for DOOM is a bit on the gray side so to avoid those issues Romero is not charging for the levels, he’s charging for everything else instead. The megawad for SIGIL is free, and anyone can just download it (assuming I do this right this article will be live after that download is available). However he did sell some physical goodies to those interested.

An interesting side effect of the practice of digital distribution is the proportionate response by those interested in physical distribution. Probably the best example I can think of is the Nintendo Switch. The system can handle both physical and digital games, and to a greater extent than any previous Nintendo system, a number of titles are digital only. The Switch was so popular that there was this gold rush to get older games running on it and get an extra platform for distribution. To offset the unknown in how many people would want to buy the old games many publishers went digital-only, so as to avoid the prospect of too much unsold product. However, in response to the smaller but not insignificant market wanting these games in physical form (cartridge, red case for the shelf, etc.) companies like Limited Run Games showed up. They would make physical versions of these games with just a little bit of artificial scarcity thrown in. They’d make a certain number of copies but once they’re gone that was it. It’s sort of the gaming equivalent of a donut shop making a certain number of donuts and then just closing for the day once they’ve sold them all, or a music artist making a thousand copies of their album on special colored vinyl for the fans who want it. Another company in this vein, Strictly Limited Games, goes so far as to number their releases like Criterion Collection spines.

All of this is to say that Romero teamed up with Limited Run Games to make the physical version of SIGIL. They made a “beast box” version for $166.66 that had the game on a USB drive designed to look like a floppy disk, a set of CD-ROMs with the soundtrack on it, a coin, a T-Shirt, and a pewter statue of John Romero’s head on a spike like in the final level in DOOM II, amongst other things. A less expensive standard box version was available for $39.99 with fewer things. There was a two week ordering window in December and that was it.

Anyway I didn’t buy either of those. When I heard about SIGIL, I figured I’d add support to it to my DOOM port once it came out. The release of the free version got delayed a few times because there were some production issues with the physibles and Romero didn’t want people who paid to not be able to play it first.

Earlier this week though, they announced it was coming out on May 31st but if you wanted to get it earlier you could pay €6.66 and get it earlier, along with the Buckethead soundtrack. That’s around $7.49 America Moneys so I figured it would be worth it since I could go ahead and add support to my port ahead of time. Plus, Buckethead.

Yes another rock star. Buckethead is a famous guitarist whose real name and identity isn’t some Fort Knox secret but whose visual gimmick is to be on stage in a plain white mask (something of a cross between Phantom of the Opera and Michael Myers) and an upturned KFC bucket on his head. His most famous gig was briefly being a member of Guns N’ Roses when Axl had booted everyone from the original band and replaced them with his favorite people he’d read about in music magazines (Buckethead would go on to quit before the release of Chinese Democracy but some of his playing is featured on the final release). In recent years he’s taken to releasing several instrumental albums every single year. According to the Shacknews article above, Romero would listen to these albums – Buckethead calls them “Pikes” – while working on levels. Some communication between the two led to a selection of songs and a few new creations as the SIGIL soundtrack.

So two days before general availability I bought it from Romero’s website.

Back when Quake came out in 1996, the first one, you’d go through a level and reach the end and you’d get a list of how many enemies there were and how many you killed, how many secrets there were and how many you found, and how long it took you to get through the level. Then you’d start the next level. Quake II in 1997, the first id game that Romero wasn’t part of, ditched this system. I don’t think it was a conscious decision to change so much as it was a byproduct of the more “hub” like approach to levels that game had. Years go by and we get games like Quake III: Arena that are multiplayer only and Half-Life that basically treat the whole game like one long level.

And then Daikatana comes out in 2000, using id Tech 2, and while technically the areas are made up of multiple “levels”, at the end you hit the thing and exit the level and… a list of kills, secrets and time shows up again. Whether or not this was a byproduct of Daikatana‘s protracted development or just how Romero wanted to do things, it was kinda nice to see after all those years that someone still wanted to do things the old way.

So when I buy SIGIL, I get a link to download it and the file you download is a zip file called “sigil_registered_version.zip”, which I thought was cool. SIGIL isn’t really Shareware so the “registered” concept doesn’t really apply, but it was a nice touch for those of us old enough to remember the original era.

Inside are six files, SIGIL.wadSIGIL_SHREDS.wadSIGIL_COMPAT.wadSIGIL_SHREDS_COMPAT.wadSIGIL.txt and README.txt. The README.txt file is a lengthy document that both explains various scenarios on how to run the WAD file as well as not being quite explicit enough on what some of these files are.

But the next nice touch is that SIGIL.txt is a text file explaining the name of the episode, the name of the author, etc… in the same text file format that WAD authors used back in the day (and, since I don’t keep up, may be the same one people use today)

Your canary in the coal mine indicator that someone cares

So, long story short, SIGIL.wad is the megawad itself, and SIGIL_SHREDS.wad is the Buckethead soundtrack. Yeah, it wasn’t until I made this connection that I realized the download didn’t have like MP3 files or anything, the music is embedded in this second WAD file and, I believe, the idea is that you don’t get this file unless you’ve paid for it. The README says that it’s only for people who bought the boxed copies but I bought the digital version and got it. Until it goes live I won’t know for sure that the free versions won’t have it. Also it explains why Buckethead is selling the soundtrack separately for $10.

So what are the _COMPAT.wad files? DOOM maps have to specify which maps they’re replacing. Since SIGIL is supposed to be Episode 5 the maps are E5M1, E5M2, etc. and the way it loads up in GZDoom, which was Romero’s port of choice when developing it, SIGIL even shows up as a fifth episode in the menu. However, some source ports can’t handle the concept of episodes beyond the fourth or third one. Strictly speaking the original game never did so it makes sense. So the _COMPAT.wad files are the same as the others, except they replace the third episode instead of being a fifth episode.

The other big thing is that SIGIL needs a “limit removing” source port. I’m not completely clear on what “limits” are being referred to but the original game engine had some, presumably for the hardware constraints of the day – this game came out when the 386 was a common machine to encounter, after all. DOOM source ports always have to walk a line – upgrade too many things in the game and you run the risk of changing too much and defeating the purpose of the engine – No one is playing DOOM 1993 and expecting it to look like DOOM 2016. Change too little and then there’s not enough reason to run your port, especially since the concept of the port that just runs on modern systems and changes nothing else has been covered by now.

When Carmack did DOOM Classic for the iPhone in 2009 he chose PrBoom as the basis for the port. Some research indicates PrBoom last saw activity in 2008. Then there’s another port forked off of it called PrBoom+ which saw activity as recently as 2016. And I couldn’t find good info as to whether or not PrBoom (not +) was a limit removing port.

And there was no other real way to know for sure other than try it.

The work I migrated from JadingTsunami included the ability to load up different WAD files. id Tech 1 games load a main WAD file, called an IWAD file for Internal WAD. So, DOOM‘s IWAD is doom.wad, DOOM II‘s IWAD is doom2.wad, etc. Then there are PWADs, or Patch WAD files. These are loaded on top of the IWAD. SIGIL.wad is a PWAD.

JadingTsunami’s FinalJudgement project had a menu in it that would choose different IWAD or PWAD files depending on which ones you had, so you could run DOOM II or the episodes for Final DOOM. When I added targets for DOOM II and Final DOOM, I essentially just used preprocessor directives to railroad the individual apps into loading different IWAD files. My plan was essentially to do the same thing with SIGIL. With DOOM II, I skipped over episode selection and with Final DOOM, I co-opted the episode selection to choose which of the two different IWADs to use. With SIGIL, I needed to load up the IWAD from DOOM and then load up the SIGIL PWAD files on top of that.

First time I tried it though, it didn’t work. I had to go and re-reverse engineer the way the port loads up levels. Along the way I found a glitch – repeatedly selecting a level increments the selected episode number. Not sure how that got in there so long undetected. Then it seemed no matter what I chose, it would load up levels from episode 4 instead of episode 5. I actually went as far as to try the “COMPAT” versions and still had issues.

Finally I realized that there was ostensibly helpful code in there preventing you from loading up an episode higher than 4 by rounding everything down to 4. I put a conditional bit in there upping it to 5 if you’re compiling SIGIL and we were off to the races.

Yessir, that’s a Romero level. I can tell by some of the pixels and from playing a few wads in my time

Before I tried any of this I ran the thing in GZDoom on my Mac and it’s interesting to see the differences. GZDoom does a number of things differently with regards to lighting and coloring, to the point where Romero tells people if they think it’s too dark to have it use a software rendering mode.

It’s funny, when you have a video game you’re usually reasonably guaranteed it’s going to look the same everywhere. There’s variances with television/monitor quality, color calibration, etc. but you can at least be reasonably sure that the game renders the same everywhere. Compare that to music where there’s different formats, a million variables like amplifier and speaker quality, whether or not (in the case of vinyl) the needle is of high quality, etc. In some ways these days DOOM is like that, since there’s so many different source ports it’s hard to guarantee that a level is going to render the same everywhere. And it usually doesn’t matter because no one’s making high profile DOOM levels anymore – until now.

And that’s basically a long way of saying that SIGIL might look a little different in the iPhone version of DOOM than it does in GZDoom.

In any event after some futzing with things I had it running – and then on a level change it crashed. SIGIL has a custom level segue screen, however for some reason the code in the iPhone port of DOOM can’t find it so it crashes. I’ve gone in and disabled that crash for now but in the meantime you get a Hall of Mirrors effect on switching levels. I may band-aid that until I can fix it but for now it’s a known issue. UPDATE: Fixed in the latest code.

Also the iPhone port of DOOM isn’t playing the Buckethead songs. I haven’t figured out why yet. It complains it can’t find E5M1.mp3 so it does have MP3 support and the SHREDS wad does supposedly have the songs in MP3 format but for some reason the connection is not being made. So that’s another known issue. UPDATE: Fixed in the latest code. Buckethead restored.

It’s possible some of these might be better addressed by a more recent port, potentially one with SDL. At some point I hope to make a second pass through the id Tech iOS ports and standardize certain things across them and for DOOM that might take the form of moving away from strict adherence to the original code structure and using a more modern source port. Or, depending on how many changes there are, maybe just upgrading to PrBoom+.

In the meantime though I didn’t want these issues to hold up the show. So all that was left was some fun with logos and icons. Romero got to have fun making cool box art and physibles for his game, so I’m having fun making icons for an app not that many people can run. I thought about going with the cool artwork like the CD case has but I figured the logo that’s the name of the game would fit in with the other icons I’ve done for the other ports in the DOOM line.

Fits right in the middle

Maybe I should make the icons little Romero heads on spikes

As usual the tvOS banner graphic turned out disproportionately badass

Anyway that’s basically it – I figured the new DOOM levels from one of the original designers deserved its own appropriately themed iOS and tvOS version as well. Truth be told it wasn’t much work and most of this article was just me blabbing about the good old days.

If anyone wants to contact me I can be reached at tomkidd@gmail.com.

Schnapple’s Adventures in id Tech


Wolfenstein 3-D
source
articles:
iOS | tvOS
videos:
iOS | tvOS

DOOM
source
articles:
iOS | tvOS
videos:
iOS | tvOS
DOOM II
source | article
Final DOOM
source | article

Quake
source | article
videos:
iOS | tvOS
Quake II
source | article
videos:
iOS | tvOS

Quake III: Arena
source | article
videos:
iOS | tvOS
Return to Castle
Wolfenstein

source | article
videos:
iOS | tvOS

DOOM 3
source | article
video: iOS
Categories: