1995 Programming on the Sega Saturn
cowboyprogramming.com
cowboyprogramming.com
Curious about the dev kit. You mention that Sega provided sample code and there was at least one other dev platform, did Sega provide support and good documentation or did you always basically have to figure everything out for yourself? Is this true for other vendors (ie, Nintendo, Sony and now MSFT)?
The Saturn failed because consumers were burned by Sega's add-on in the past coupled with the fact that the system was expensive and lacked decent dev tools at launch making is difficult to program for.
Checking with the internet, USD 399/449 (a game included), but that's in 1995 dollars. The CPI places that as being nearer to 625 USD today!
http://data.bls.gov/cgi-bin/cpicalc.pl?cost1=399&year1=1995&...
We were using a dev kit that I seem to recall was 3 ISA PCBs (though pictures on the internet now show only 2, so maybe my memory is faulty). There was also a "blue" physical playstation that would boot unencrypted disks, so if we were willing to go through a full CD burn cycle, you could test there, which is how we did QA and potential golden master testing, but most development was on the ISA cards.
Compilation toolchain was gcc-based, and we did almost all of our debugging with printf. :)
Most interesting to me technical tidbit: We did build our own pre-emptive interrupt system to ensure we could run the game physics engine at either 15 or 30 Hz (technically slightly less, as it was on the NTSC vertical blank). Sony support said it wasn't possible... ;)
To the extent Sony won that round of console wars, I don't think it was on the quality of documentation, at least not the English translations.
Sega fought the last was, Sony opened a new battleground.
http://www.chrisantonellis.com/files/gameboy/gb-programming-...
Huh, Mario Party...
Sega's follow-up, the Dreamcast, was an excellent machine, and tons of fun to code for. But by that point the PS1 had been so phenomenally successful that very few publishers were committing to Dreamcast titles. A development house I was working for at the time went under because the publishers were waiting for the PS2 and they ran out of money.
IIRC because of the way the Saturn did texture mapping, all texture coordinates would be forced to be axis aligned quads (like traditional 2D sprites), which caused big problems for games coming from other platforms that had more freeform texture atlases. That could be at least a part of why your team had problems with textures.
Here's my quote re: the Saturn version:
"However the Saturn version was lagging behind quite badly - the textures looked pretty awful because they had to be down-sampled to fit in the smaller texture memory, and the geometry engine was struggling due to the more limited ability of the Saturn"
As for the second SH2, by reading the official SEGA documentation, you can clearly see there's some genuinely awesome functionality in there, that, if used, could definitely offset a whole bunch of tasks in simple ways, such as rendering and managing 3D objects, and a whole bunch of other neat stuff.
I imagine this is how Sonic Team managed to pull off NiGHTS Into Dreams..., Burning Rangers, and whatever have you.
This is all well and awesome from a programmer's perspective, but I can't imagine, with low sales figures and a high initial-level learning curve, it would've been financially feasible to produce high-quality titles for the platform that utilized these features.
At the same time many things are considered taboo for trendier reasons that don't necessarily hold water. Many aspects of Functional programming for example were considered heretical during the heydays of Object Oriented programming until the pendulum started to swing the other way.
So what is considered a Taboo practice ebbs and flows with superficial trends in the industry as often as it does for reasons grounded in solid engineering.
Regardless though, the biggest influence on what is acceptable at any given time is the technical culture at an organization.
How about the C# compiler? :)
https://github.com/dotnet/roslyn/blob/56f605c41915317ccdb925...
As well as that, the industry was very much a cottage industry at the time, many programmers were self taught and came from an era where one person would make the entire game. I was one of those programmers, and in the days before you could readily find information online about how to do things 'correctly' you found your own way (no Google, no StackOverflow, ...).
Would I want to go back to writing code like that today? No way. But I understand why it happened.
I put 'correctly', because even today we don't know how to write code. It's still an open question, and anybody that tells you they have the 'one true way' needs some extraordinary proof - otherwise it's just arrogance.
My preferred method these days is functional, but after 30 years of programming - starting from a BBC Micro (8bit, 32K of RAM), I am still learning. Mostly becoming a good programmer (in my opinion) is learning to deal with the inadequacies of the wet-ware between your ears. It's all coping strategies for the complexity of the problems we're trying to solve today.
Best line ever..I wonder if I can sneak something like this into a code review....