Episode 6: Shawn Hargreaves discussion thread
At one point in the interview, I assert that the General MIDI standard was based on the instrument choice of the Roland Sound Canvas. It turns out this is half-true; I had misremembered a story from The Fat Man on Game Audio, which incidentally is probably my favourite book ever written on the subject of the video game industry. If you can track down the book, I definitely recommend doing so, but here's the timeline as he lays it out:
- General MIDI is created as a standard. It defines 128 instruments.
- The Roland Sound Canvas is released as the first General MIDI sound card.
- George "The Fat Man" Sanger decides to compose the soundtrack of The 7th Guest using General MIDI, in order to attempt to ensure the music will sound OK for future sound cards. It is the first game to have its score written in General MIDI. He uses the Sound Canvas as the baseline because there are no other General MIDI cards out there yet.
- More sound cards touting General MIDI compatibility are released. His soundtrack sounds awful. He discovers to his horror that General MIDI does not define any standard for the dynamics of an instrument - how loud it is, or even what pitch middle C should sound.
- Fat Labs is founded to basically make sure The 7th Guest doesn't sound awful on new sound cards. Google "Fat Labs General MIDI" and you'll find a number of press releases from the 90s proudly proclaiming that their sound card has earned "The Fat Seal".
- Eventually the MIDI standards committee accedes that the only sensible solution is to take whatever dynamics Roland used for their Sound Canvas samples and use them as the standard for all cards going forward.
There are also a lot of DOS games that come out around this time that credit The Fat Man for their General MIDI FM patches for Adlib cards - this is because he bundled it with the popular MIDAS Sound System library, that allowed DOS games to support the vast numbers of incompatible sound cards that were being
released at that point.
Knowing this story is what made me wonder, wait, where did Allegro get its General MIDI instrument patches from? And I got sufficiently curious about this that I dug into the source code, and found the following comment:
/* These instrument definitions are taken from the MID-KIT library by * John Pollard. Many thanks to him for letting me use his patches: I * wouldn't have enjoyed the task of coming up with a set of my own. */
Further digging reveals that MID-KIT was a shareware library that provided sound and music routines for DOS for the Watcom C compiler. Registration was $50 for a "link the binary with your software" license, and you could get the source code for $600. The author, John Pollard, credits Jean-Paul Mikkers, original creator of the Mikmod library, for assistance and some code. (One thing I had forgotten was that mikmod was also once shareware, though the $25 registration fee was only required for those using it commercially.)
Shawn doesn't remember any details about this; he assumes he must've went looking for existing software that had already solved this problem, and then simply asked the author for help.
Why is this important or even interesting to anyone? Part of what I'm interested in uncovering as part of this podcast is the invisible support networks and ecosystems that made games possible. It's too easy to imagine Shawn toiling away in isolation to produce the first draft of Allegro, and then support and code contributions just spontaneously flowing in his direction. But when you dig into questions like this, you quickly discover a bunch of people sharing knowledge, asking questions, and helping each other out.
Thanks for sticking with me during this extremely dorky and overly technical aside about MIDI. Now: If you had any personal experience using Allegro, or playing games that came out of the loose Allegro community, this would be a good thread in which to talk about it!
Best podcast yet, IMO! I'm really sorry I missed out on Allegro. I remember playing w/ a toy Ranjit Bhatnagar made up with it, with bubbling Xs and Os, but it wasn't quite enough for me to realize what I was missing out on...
One minor suggestion to Jeremy: in the mid-early part, I was left wondering about the specific timeline. I could get some idea based on the tech (hm, when was the Atari ST? When was VGA becoming SVGA? When was this Usenet stuff happening? etc?) but grounding things w/ year estimates as the history was gone over mighta helped.
Glad you enjoyed it!
Regarding making timelines clearer, that's a fine point - I tend to be pretty muddy about what things happened when until I start digging into the wayback machine. I could certainly do some homework ahead of time and anchor questions with that information in the future.
I'd say the timeline looks roughly like:
- 1994 - Shawn starts working on the original Allegro
- 1997 - Allegro 2.1, which is about when I discovered it and wrote Barney Mutilator
- 2000 - Shawn starts significantly withdrawing from active development
This was a very cool episode! I remember in high school there was a guy who introduced me to Allegro and was making some fantasy sci fi epic RTS in it. It looked amazing, but I was very committed to ZZT (another community flooded with anti-Barney games) and its programming-but-not-really to feel like I was up to attempting to learn something much harder (and 20 years later a lot of the finer points of this discussion are still over my head). But I loved some of the things that came out of it.
I have always associated a very specific visual quality with Allegro games, though I’m not sure how much that’s inherent to Allegro, how much that has to do with SVGA resolution and 256 color palettes, and how much that has to do with graphic trends among home brewers in the 90s. Actually, the Allegro feeling I imagine is shared a little with OHRRPGCE, another late 90s GCS.
That’s so rad that Shawn has such a passion for making tools to enable others’ creativity, even if not invested in games that much, and has continued to work on stuff like XNA. I owe a ton to people like Shawn, even if I didn’t use their tools, since their contributions to the culture enabled so much of what has inspired me.
I'd say every tool has its "grain", and Allegro's bread and butter was really "draw bitmaps on top of other bitmaps", with certain effects like scaling and rotation being very easy to add. But other things, which may have been straightforward if you had written the blitting code and were able to make tweaks to it, were much more difficult.
I remember putting together a demo game to show off my "skills" in the early TPU days, where I tried to build the most audiovisually impressive thing I could. The thing that gave me the most trouble: I wanted to reproduce the end-of-level screen-melting effect from Doom, and getting that to run fast was hard.
That game also had:
- a pretty 3D fractal landscape generated by a VistaPro demo I got from a book called Virtual Reality Madness & More
- huge 3d-rendered characters modeled in a tool called Imagine (I couldn't figure out how to texture pupils on his googly sphere eyes, so I just drew them on afterwards in NeoPaint and hoped I got them in vaguely the same place every frame (I didn't))
- a title screen that I'm pretty sure had both gratuitous scaling and rotation
- oh, and I animated some extruded text as a "company logo" in I think maybe TrueSpace 3D?
- custom fonts EVERYWHERE; I feel like I must've had a tool for Windows that would export a TTF font as a bitmap that Allegro knew how to treat as a bitmap font. But if you wanted text in your game, you were probably gonna export a bitmap font. All I used it for was, like, "press start", and displaying your score, but I'm sure I had at least two fonts.
I definitely remember having to do a lot of fiddling to mash everything from these random sources into a sensible 256-colour palette. I had specialized commandline tools for palette generation & re-importing.
In general, I had a bunch of disparate free-or-pirated tools for creating visuals, and I used them about as naively as you could possibly imagine, and I suspect that had a lot to do with how my games ended up looking. It probably was not far off from the process that people making OHRRPGCE games were going through. Even my 3D stuff was made in tools that were designed to be accessible. I had a copy of 3DS Max, but I couldn't figure out how to make it do anything - I just knew it was "professional".