Re: [stella] Help with Stella port to Mac OS X

Subject: Re: [stella] Help with Stella port to Mac OS X
From: Stephen Anthony <stephena@xxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 7 May 2004 09:07:00 -0230
On May 4, 2004 03:01 am, zu03776 wrote:
> I had wondered why there was no port of Stella past 1.2 to Mac OS;
> now I understand.

OK, there is a Stella 1.4 port pretty much completed.  I can't give any 
other details ATM, but it is apparently working quite well (except for 
some sound problems that are common in all ports, which I haven't found 
the time to fix yet).  So I don't know if there's a need to get 1.2/1.3 

> I first bought CodeWarrior 9, then spent a few days getting Stella
> 1.2 source to compile.  It works (after a few heavy-handed changes).

OK, there's the first problem right there.  Older versions of Stella 
were 'technically' portable in the fact that it was all C++.  But there 
was still much work to do for each porter (as you imply by 
'heavy-handed changes').  The latest CVS code is based on SDL, so the 
portability comes not only from being in C++, but also at the 
cross-platform SDL application level.  New ports will have to take this 
into account.

> Then I looked at the source for Stella 1.3 and 1.4, thinking it would
> bolt right into what I already had working.  Wrong, the code to get
> sound out of Stella 1.3 and 1.4 is a nightmare -- I can't figure out
> how to shoehorn the code to match what I have compiled.  Not to
> mention the new preferences objects, which didn't previously exist.

The sound code has been heavily modified since the 1.2 release.  I agree 
that some sound stuff was hard to understand in 1.3, since we 
introduced digital sound support.  That's partly disabled (for now) in 
the 1.4 CVS, but something like it will be added again.  And 
previously, there were 6 sound backends (MacStella, DirectX, DOS, OSS, 
ALSA, SDL), now there's one (SDL).  So if anything, it should be easier 
to understand, not harder.

And the preferences objects are new, as well as many other things.  The 
current SDL cvs code is functionally quite different from 1.2, but it's 
a lot more portable.  But it probably just doesn't fit into the way the 
original author of MacStella 1.2 envisioned it.

In fact, the cvs code is *easier* to port than ever before, since there 
are quite a few things you had to do per-port previously; now you 
don't.  For example, with the exception of one class (SettingsXXX), the 
same codebase compiles in Linux and Windows.

AFAIK, the person who ported 1.4 to MacOSX had to change 2 classes.  One 
was the creation of a SettingsMacOSX, and the other was a change to 
mainSDL (to accomodate a GUI).  Of course, more code had to be written 
to actually give a Cocoa GUI, but that's to be expected of any port 
that makes use of platform-specific features.  I think that's pretty 
good :)

> Maybe it's a lack of familiarity with CodeWarrior, maybe it's objects
> in C++, maybe it's just that I'm confused.  I'm not sure who to ask,
> or even what to ask, but I sure would like to see illegal opcodes and
> 3F cart support for the Mac OS.

I think it's a little of 2 and a lot of 3 :)  The codebase *has* changed 
a lot, but to make it easier on porters, not harder.  It will require 
you to change your mindset appropriately.

Steve (SDL Stella maintainer)
Archives (includes files) at
Unsub & more at

Current Thread