93143 wrote:
To be fair, the GameCube architecture was a really good one for the time and punched above its weight, while still being easy to program for.
The exact opposite of the Nintendo 64, which was not programmer-friendly
That arguably had more to do with the RAM inside of the N64 than the architecture of any particular chip like RCP, though.
93143 wrote:
regularly hosted games that looked worse than similar titles on a system
I don't think this is quite true if you take a truly holistic approach (virtually all games on the PS1 suffer from at least
one of its famous 3D defects - and the console was host to plenty of shovelware), though poor N64 emulation over the last 20 years has done no favors to the system's reputation for good graphics (missing lighting effects makes emulated N64 games look really bland).
IMO, the most popular PS1 games tended to be those with the best visuals on the console, while it was not quite the case with the N64, which I also think explains why opinions similar to yours tend to crop up every so often. It's also worth considering the PS1 had a selection of pretty looking 2D games and pre-rendered background games which were aesthetically pleasing, though that had nothing to do with raw system power or ease of programming...but rather the cartridge format and many developers steering clear of the N64's huge royalty fees.
93143 wrote:
with a third of the power and half the RAM (the PlayStation)
Well the Playstation didn't have half the RAM of the N64. It had 2 MB main RAM, 1 MB VRAM, and 512 KB of sound RAM. That's 3.5 MB total (plus 128 KB CD cache). While N64 had 4 MB unified RAM (though it was a bit bigger than it seems due to having a 9th parity bit for anti-aliasing).
But that's not the real crux of the matter. The two consoles had extremely similar "peak" memory bandwidth. IIRC, the Playstation had 133 MB/s main RAM + 266 MB/s VRAM + 33 MB/s sound RAM for a total of 432 MB/s bandwidth, while the N64 had 500 MB/s bandwidth (+ 62.5 MB/s reserved exclusively for anti-aliasing coverage values along the parity channel).
When you factor in N64-in-its-console-generation-exclusive things like
-bandwidth hungry z-buffer (can be mitigated by using a microcode without a (or reduced) z-buffer - but not always practical to do so because a z-buffer could be
a very good thing)
-many additional read-modify-writes for anti-aliasing and post-processing (can obviously be turned off, but then you aren't maximizing use of RCP's pipeline nor using the parity bandwidth!)
-alpha channel in some textures
-texture-cache needing manual refreshing for large textures
-unusually high random-access RAM latency (can be mitigated by
very careful programming to avoid random access)
-every component in the console sharing a single RAM channel (bus contention hell unless CPU, RSP, and RDP cache use is
absolutely maximized)
Then for all intents and purposes, you are left with less or
much less practical memory bandwidth than the PS1. Because of this bad textures were probably caused more by developers decreasing the resolution to lower bandwidth usage more than the size the texture cache's size being the issue (4 KB was
not small for a 1996 home GPU texture cache with four interleaves, it was
big, though if it were even bigger it would have partially alieved texturing problems). Or decreasing framebuffer resolution making everything blurry (and that's
before post-processing...). Or less music fidelity.
I don't know why people spend so much time taking about RCP and microcodes when trying to work out why developing for N64 was difficult, when the answer is so simple: it's the RAM. To make the N64
much easier to program all Nintendo had to do was give the CPU and RCP their own RAM channels, with more total bandwidth. Exclusively talking about RCP being so very fill-limited is IMO even more silly when you consider the memory controller in the N64 is designed to give RCP access priority (this is where the myth about the N64 CPU not having DMA comes from - like having an off-chip memory controller means the CPU has no DMA????) - if anything, poorly optimized N64 games are probably stalling on a RAM starved CPU rather than RCP - so much for 3x the clock speed!
It's pretty ironic that the Saturn was hard to program because the overlap of components was too complex, while the N64 was hard to program because the memory architecture was overly simplistic and (practically) inadequate
to the extreme. At the same time, I don't think the Saturn could have ever been better than the PS1 at 3D even with perfect programming (2D is another story) because its hardware is
just not that suited to full 3D simulations, while the N64 actually could meet its potential of around 3x or more the power of PS1 3D with a good enough program (arguably Conker's Bad Fur Day and a handful of other top-tier games demonstrate it). People tend to forget that the N64 uses a lot of its processing power to clean up 3D image quality behind the scenes - it's not a straight-up polygon count contest.
93143 wrote:
I still can't get over the fact that the RCP's blender didn't clamp its output despite being capable of additive transparency
I'd say that's because additive blending support was thrown in at the last moment. The designers of RCP probably thought for a long time that having true % alpha-channel blending support was an advanced enough feature to satisfy everyone. Arguably if you had to pick between the two, they made the right choice since an alpha channel allows for much cleaner transparency all-round (though diminished in practice since many N64 developers were too pressed for bandwidth to make good use of it), but it's undeniable that additive blending looks
great for explosions and fire effects.
RCP was a good little chip, much like Flipper was. Nothing at home had better "theoretical' (i.e. unbound from RAM) trilinear filtering performance until Voodoo 2, not even the first Voodoo. And RSP's vertex shader like programmability (and the proto-pixel shader color combiner in RDP) was unknowingly ahead of its time. If only Nintendo dedicated enough RAM bandwidth to it so it could fully move its legs.
93143 wrote:
About additive transparency: I may have been wrong about the fill rate hit.
I think the only sane way to use hardware additive blending on N64 is just where the RGB values in your scene are very low, so you can avoid the glitchy overflow of blending a pixel beyond white. IIRC Doom 64 used a little additive blending, but that game is dark as all hell so they could probably get away with it.
EDIT: The more enterprising developers on N64 got around the lack of easy additive blending just by using an animated texture that has white-ish highlights. Not as good as the real thing, but IMO looked fairly convincing in Ocarina of Time's "how the world was made" cutscenes.
Sorry for continuing the derail of this thread about N64. I'd also be happy to discuss the Gamecube and its hardware-based children