9

The Nintendo 64 had a reputation for being great at drawing triangles, but not so good at texturing them, so that many games fell back on heavy use of untextured (though Gouraud shaded) triangles, giving them a more cartoony look compared to PlayStation games.

What was it about the hardware that made the N64 bad at textures?

I have seen it claimed that it was because the texture cache was only 4K. But according to https://en.wikipedia.org/wiki/PlayStation_technical_specifications#Graphics_processing_unit_(GPU) the PlayStation texture cache was only 2K!

It can't been lack of memory bandwidth; according to the answer to How fast was Rambus compared to regular EDO RAM? the RDRAM on the N64 was considerably faster than the EDO RAM on the PlayStation. Even if you divide it by two to take into account the need for CPU and GPU to share the unified memory, it's still faster.

I have seen it suggested that it was because of memory latency, but in the light of the above, it seems unlikely that the N64 had worse memory latency than the PlayStation.

I have seen it suggested that it was something to do with lack of DMA and the need for coordination between the CPU and GPU. Is there any truth in that? If so, what exactly was the issue? Or was it something else?

Edit: Found a hint at https://forum.beyond3d.com/threads/how-bad-a-limitation-was-the-4k-texture-cache-in-n64.40696/

Back to the original question, i was a pretty big limitation, as mentioned it wasn't a cache in the traditional sense it was an explicitly loaded block of memory that was the only place you could render from. It could not be updated mid triangle, so if you wanted a texture that wouldn'y fit, you were stuck with adding more tris and doing more explict loads, which generally led to poor performance.

9
  • 2
    BTW, the fact that according to the spec sheet Rambus is faster doesn't mean that in the actual hardware it was faster (or as much faster as it could have been). I don't know one way or the other, but it doesn't necessarily follow: so much depends on other system considerations that the designing engineers had in mind.
    – davidbak
    Commented Jan 6, 2021 at 0:40
  • 2
    Likely because the N64 had unified ram. That fast RDRAM was shared between the CPU and GPU and everything else. As you suspected there was no DMA for loading a texture into the 4KB tmem, it could be very tedious as you usually had to load one line at a time with various restrictions and alignment issues to watch for. By comparison the PS1 had dedicated video ram which operatedly differently from the EDO memory used by the CPU. Google dual ported VRAM, it's basically DRAM but with page mode access on steroids. So the PS1 actually had very fast texture loading compared to the N64.
    – David
    Commented Jan 6, 2021 at 1:06
  • 5
    The N64 did perspective-correct texture mapping, the PlayStation didn't, so arguably the N64 was better at textures. I don't know whether the extra computational work is the reason the N64 was worse speedwise.
    – benrg
    Commented Jan 6, 2021 at 1:45
  • 2
    The N64 also tended to run with z-buffering — did it at least have a dedicated memory bus for that buffer? Either way, an obvious advantage of z-buffering for managing a texture cache is that you can draw your geometry in any order, so you can sort by texture (assuming no transparencies, which includes the N64's version of edge antialiasing).
    – Tommy
    Commented Jan 6, 2021 at 3:13
  • 2
    @benrg IMO the main reason the N64 was slower than the PSX at rendering was the Z-buffering. Disabling the Z-buffer literally doubled render speed, iirc. We did this for one racing game and it was totally worth the hassle of having to sort the scene PSX-style.
    – Aiken Drum
    Commented Feb 25 at 7:26

1 Answer 1

7

From Rodrigo Copetti’s analysis,

The RDP relies on 4 KB of TMEM (Texture memory) as a single source to load textures. Unfortunately, in practice 4 KB happened to be insufficient for high-resolution textures.

Furthermore, if mipmapping is used, the available amount of memory is then reduced to half. As a result, some games used solid colours with Gouraud shading (like Super Mario 64) and others relied on pre-computed textures (for example, where multiple layers had to be mixed).

2
  • 5
    To agree with this, I read up a bit more in the interim. As far as I can make out, the N64 texture cache is a special area discrete from the N64's unified memory which is managed manually and is the only area from which the GPU can source texels. The PlayStation's texture cache is an automatic hardware cache sitting atop 1mb of VRAM. So you might optimise for cache efficiency but you don't manage it manually and it's not a hard limit.
    – Tommy
    Commented Jul 8, 2021 at 23:49
  • Compounded by lack of ROM space to hold many small textures (N64 could stream textures from ROM at acceptable speed!), and bilinear filtering which makes the low-resolution textures look blurry when applied over large surfaces and even more lower resolution.
    – tylisirn
    Commented Dec 23, 2021 at 15:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .