Last week, we talked a little bit about the business decisions that prompt Ambrosia Software’s commitment to old platforms and code. This week, Ambrosia’s own bitwise operator, Matt Slot, tells us a little more about what this commitment means to the average coder in the trenches. Is supporting a single product through numerous generations of platforms and OSes an untenable mandate handed down by our short-sighted management overlords? Matt doesn’t think so.
And he should know. He’s Ambrosia’s point-man on porting and maintaining Apeiron X, a game that, with its recent update to v1.0.2, now runs on all Macs — from 68k to Intel, from OS 9 to Tiger. How does one pack all that multi-platform goodness into a single binary?
“Using the magic of bundles,” Matt says. “The same binary runs on all those platforms … using CodeWarrior for 68K and PowerPC classic, and XCode for the MacOS X universal binary. The 2 executables are actually separate, but look like one object.”
“Though,” Matt is quick to point out in good humor, “the 68K support is mostly anecdotal as the only 68K machine we have basically sits in a glass case.”
So are there really enough of these older machines left in circulation to make it worth supporting them? “We don’t really track it very closely, but clearly it’s a shrinking market,” admits Matt. “Mostly people using second-hand computers, such as in the kids’ bedroom or donated to non-profits. People running OS9 haven’t upgraded for a reason — either compatibility, or increasingly, just because they can’t afford new systems every few years.”
If money is an issue, then there’s probably not a lot of financial incentive for supporting older platforms. “It’s rather difficult to present a dollars-and-cents business case for compatibility that far back,” Matt agrees. “The thing is, people who don’t buy the latest hardware or system release, generally don’t buy new software either.”
Ok. But if there’s no money in it, what drives Matt to support the ports? He sums it up in one word. “Hubris,” he says.
“Seriously, the core game is functionally identical to the original version. Most of the hard lifting (graphics, audio, networking) is already handled by the cross platform tools we use in all of our games, and the rest uses Carbon. Sure, our recent games use OpenGL, Cocoa, and other new technologies, but the classics will run as long as Carbon lives.”
Then it hasn’t been a burden, porting Apeiron’s code? “Making the game run under OS X with the Carbon APIs was relatively easy, only a few days,” Matt confirms. “As for the latest update, it’s telling that we only bumped the minor version number while incorporating the change to universal binary. Fact is, converting the CodeWarrior project for XCode took longer than the actual code changes.”
So Apple’s done good by developers when orchestrating these mass migrations. “Without a doubt, we couldn’t have done this without Apple’s commitment to backwards compatibility,” agrees Matt. “If every major transition in the platform required a top-down rewrite, there is no way we could maintain and upgrade our catalog of games.”
But even with Apple’s efforts at backwards compatibility, surely code must suffer. Doesn’t Apeiron’s source include any #if directives and the like that hamper readability? “Quite a few actually,” Matt recalls, “for things like classic Quickdraw vs Carbon, or to isolate input technologies such as HID or CoreGraphics. The thing is, 90% of the game logic remains the same so the pixels get plotted the same. The only difference is in which sound or networking API we are layered on.”
Thus porting Apeiron really only requires paying attention to 10% of the code. But doesn’t it ever get to be too much? Doesn’t Matt ever resent being forced to abandon an old technology in the name of progress?
“There’s no black and white here,” he sagely advises. “All software makes certain assumptions, and when those assumptions change, you need to address them. We call it ‘code rot’ when previously working code doesn’t keep up with the target platform. [For example, in Apeiron] the switch to PPC was only necessary when Apple moved to USB in the original iMacs, and removed the ADB hooks that Apeiron used.”
And that didn’t get your goat? “It’s unreasonable to assume that the platform won’t evolve — older APIs are improved or even replaced, and even well designed applications must adapt. While there are many bumps in the road where great technology was paved over to make way for a mediocre replacement, the platform continues to improve and move forward — things keep getting better.”
And getting better is certainly something all platforms should strive towards. But to me, the more amazing feat is that an 11-year-old game like Apeiron, thanks to the efforts of people like Matt Slot, is still exactly as great as it ever was.


I love Ambrosia games.
Now why can't they port some of the cool old 68k/PowerPC OS 9 games to OS X? Barrack, Maelstrom and Swoop all date from the same time as Apeiron, but have never been ported forward.
I paid to register these games for OS 9, but sadly they have died, as I no longer have an OS 9 capable machine at home.
I don't really know why such a big deal is being made about Ambrosia "porting everything". Of their 26 games, two are universal binaries (so far) and roughly 13 of those run natively on Mac OS X (being generous with the EV Classic/Override data files ported to Nova).
Ok, I can understand why some of the older titles aren't able to be ported or made into universal binaries (eg Swoop) but some titles aren't going to be ported/universal binaries. Furthermore, no real reason is given for it (EV Nova for example - how difficult/time consuming could that be? I don't know the Nova codebase, but I imagine/assume it would be platform independent. If memory serves me correctly, Nova is a CodeWarrior project. I imagine this would be the hardest part of making Nova a universal binary).
That being said, I am aware Ambrosia do more than games - and the situation with their utilities is a little different. It is good to see that Ambrosia is keeping up with the times by releasing universal binaries of their products that they can. I also thoroughly enjoy Ambrosia's products - keep up the good work Ambrosia, you are a valuable asset to the Macintosh community.
I wouldn't say I'm trying to make a "big deal" of Ambrosia's multi-platform support (although I do respect it and honor Ambrosia's commitment to such things). But in my career as a programmer, Apple has made port-requiring switches to their platform three times. Two questions all Macintosh developers are likely to ask themselves at some point or another are, "Should I port my app to the latest and greatest?" and, "Should I bother supporting legacy systems?"
Given this is a web site for Macintosh developers, I think it's useful to have a well-repsected company's answers to these questions available to us. That we get both the business- and technical-side of the issue by looking at it though the recent release of Apeiron only sweetens the pot, in my opinion.
Well, here it is...
Barrak and Swoop were the games that made me understand that Ambrosia got the idea behind simple and very effective games... Not to mention addictive...
I cannot for the life of my understand why Ambrosia doesn't rebuild these old games. They were the coolest company once, and not they make boring games and they lost their ability to make suck cool games as the ones they got famous with.
All I want to see from Ambrosia is :
Barrack
Swoop
Deimos Rising
Maelstrom ( I actually own a copy that is intel, don't know who made it but it works)
If they would make those into intel games, I'd buy them again...
They are STILL awesome games... And I for one miss Barrack to the point I would use an old Mac just to play with it... But we have all moved on and yet, these games are left to die... They were the best games Ambrosia EVER made...
I am on an Intel mac today and I cannot use these games anymore... I cannot boot into MacOS 9 (who wants to) anymore, and their current product line is pretty lame... They had an awesome app called Snapz but that too isn't intel based... so... They are really not attractive anymore...