I thought i would share my experience with some of the platforms i've had to deal with and the most horrible ones i had to work with.
Atari Jaguar
Why use a single lame Motorola CPU that is not even 32-bits while use two 32-bits RISC processors as co-processors ?
And it is just the beginning.
For example, the memory controller cannot execute code out of ROM : you must load your game's code in RAM in its entirety.
Then there's the unusual way the Atari Jaguar draws graphics : It is not a framebuffer nor is it tiled-based.
In fact, even when looking at the Remover's Library, it's not clear how the Jaguar draws graphics (scanline-based ?) and it chuggles when you attempt to draw over 256 sprites on-screen.
(This does include things like the map or tiles, at least if you're not going the framebuffer way)
I later learned that you must pull off crazy tricks to even reach 1000 sprites. (Such as Super Burnout)
Meanwhile, the PS1 and Saturn have no issues doing just that. Even the 3DO is much less trickier when it comes to CELs.
I saw some people suggest that the unusual architecture makes it more powerful than a PS1, Saturn or even a N64.
In my experience, this is laughable, as it is very hard to even achieve smooth 2D graphics without the Jaguar outright crash or become sluggish.
So yeah, this is the reason why Evil Australians is still not finished.
While i did manage to make it run at decent speed (finally) by dropping unused objects, i am encountering weird bugs and crashes related to memory.
I have to remind you that the very same C code works fine on other Motorola platforms like the Falcon with no issues.
I do not know if i will be able to solve this. I might release an early build to prove my point.
Sega Saturn
Similar to the 32x, it has two SH-2 processors but they only have one cache shared by the two. (unlike modern processors)
If you thought that would make your task hard enough then you will have to deal with the VDP, because it is not trivial to use !
If you use Sega's official tools, it is surprisingly complex to display a single sprite on-screen because you have to go through so many steps
to convert a single bitmap.
Seriously, even the so-called "new improved tools" were hard to use at the time.
Another flaw of the Saturn is the two RAM chip configuration.
It is divided into two different ones : a slow bigger one and a fast small one.
This means that if you need to use more than 1MB, then you basically can't do it easily. Good luck with that.
It also forces you to manually manage memory, as if dealing with two SH-2 processors was not enough !
The flaws would have been soften somewhat if the Saturn was a cartridge system like the 32x.
While it could in theory do that, all games so far use the CD-Rom format. And that means dealing with memory is even more painful,
because you also need to worry about slow disk access time and you can't cheat like you would do on carts by loading and unloading graphics from RAM.
This is the perhaps the reason why many arcade games on the Saturn require the 4MB cart :
because it is much more straightforward to deal with.
All of this makes it a horrible system to program.
On the plus side, there are new libraries since then though that now soften the blow somewhat.Still, this was enough for me to run away from it, not to mention there's no way to boot unofficial software through the CD drive.
Android
Why is it even on this list ? Well, it's simple.
Supporting the more than 10000+ different phones out there is a nightmare.
In some cases, you are required to use hacks and weird permissions to even use basic features like sound support.
In some other instances, updates to software like SDL fix weird issues on new Android versions but also introduces others on phones with crappy GPU drivers.
How do you deal with this ? The short answer is you can't.
Making a whole operating system around Java and requiring all the other programming languages to use the JNI (worthless piece of c btw) is a mistake.
And don't tell me to use Java for Android especially after Oracle sued Google over it.
It was a terrible idea to begin with and the implementation is even worse.
Getting something trivial to work on all phones might be child's play but it becomes more painful as your project grows in scope.
Add to that ads pay nothing but scraps as well as the Google Play environment discouraging paid apps in general (made worse by the numerous phones out there to support)
and you have a recipe for disaster.
Honestly, I've given up on it and it's just not worth it given that there are also millions of other apps out there.
You will never stand out among the crowd and censorship is rampant on the Google Play store anyway.
(I had gotten complains about one of my games, Rubby Bird, briefly mentioning feminists and nazis, really !)
iOS is somewhat better on the programming aspect but they also have other issues, like the fact that Apple forbids numerous apps over non-sensical reasons and
asking for a huge annual fee. No thanks.
Good examples
GBA : This is actually a very straightforward platform to work with, i've been very surprised by it.
The bitmap modes are especially easy to set up and are very suitable for 3D engines.
Sprites are a bit finicky to use though.
But other than that, it is relatively easy to get some work done.
Dreamcast : Kallistios is really a pleasure to use on the Dreamcast, all things considered. It's no Windows CE, but it is much better performance wise while
still being POSIX compliant. However, mastering the GPU does require a learning curse but if you wanna go the software renderer route, then it is very easy
to setup a framebuffer.
Did you work on any difficult platform at some point or another, whenever it is modern or old ? Share your thoughts and opinions here