The SNES and other console hardware were not perfect either. You can't really blame the hardware for poor gameplay execution anyway, 1 on 1 fighters were done a thousand times on weaker machines and HMS screwed KN up like no other. It was a MK rip off anyway, formuliac bare bones trash, but they could not pull that off. I don't buy those excuses anymore, sorry.
A lot of Jaguar games look meh because of rushed, sometimes downright rubbish art assets, showing no care for quality, imagination whatssoever. I'm quite amused, ppl are always debating hardware specs for that matter, citing excuses from all sources. It's just another myth. Luckily we have Rayman, and if you analyze that game, it becomes obvious that the Jaguar indeed had a lot of unfulfilled potential, especially with rendering impressive 2D artwork.
But the jaguar could be a lot better.
- CLUT of 256 colours only? NeoGeo has 4096...
- SNES has a register to set illumination for the palette (the whole palette), to make fade effects very easy, in the jaguar you must fade the whole palette and if you're using 16bits bitmap you must do it on each pixel. It's not important but gives a nice touch.
- It's a waste of time to wait for the blitter to finish before you can write a single register.
- The blitter it's very inefficient doing any nice effect (rotation, scaling and texture map), with a cache the performance could be x10 times faster.
- The blitter can't expand 1,2,4,8 bits pixels to 16bits pixels, so the textures must have the same bit depth as the frame buffer (usually 16bits), this takes a lot of memory and has less flexibility.
- Blitter registers are wrong, why on the hell the integer part it's on a different register from the fractional? As soon as you write a real example with the blitter you realise of this error.
- 5 processors without cache on a 13MHz bus has a lot of bottlenecks.
- RMW only works on CrY colours, and anyway RMW? WTF!?!? Why don't have a few operations for real transparency effects, like A + B, A - B, B - A , (A + B) / 2.
- OP can't do vertical mirror, WTF?!?! Just use the dwidth field like a signed value instead of unsigned and you can do vertical mirrors.
- OP could include a bit-buffer for pixel precise collision detection.
It's sad because many of these features are easy to implement.