Just thought id enter this in a single text file, might put on site, or you can.
*********************************
* THIS DOCUMENT IS WRONG AND BASED ON A MIS-UNDERSTANDING *
*********************************
When making textures for models on the N64 there are some rules you need to follow. The biggest one is set by the N64's Texture Cache.
This is a chunk of memory to which textures are loaded. Each texture must pass through this cache before it can be drawn on screen. If a texture is too big the game will crash!
The N64's Texture Cache is 4KB. That is 4096 Bytes or 32768 bits.
The N64 also does Mip-Mapping, this smoothes textures by scaling textures by 1/2 the further away you are, or more
technically correct, the less screen area they take. (http://en.wikipedia.org/wiki/Mipmap)
To Perform Mip-Mapping it requires Cache space, however the N64 is limited to 7 tiles. Also, CI textures are limited to 2KB because the TLUT is located in upper TMEM.
So, basically you have 2KB for textures, that is 2048 Bytes or 16384 bits.
Texture Widths also need to be multiples of 64bit ([8, 16, 24...]@8bit, [16,32,48,64...]@4bit)
The N64 can also pass more than one texture at one time if both textures are small enough.
The final consideration to make is the total RAM the N64 has, which is 4MB (8MB with Expansion pak). This means you are further limited to how many textures can be stored in memory. Every game is different and in GoldenEye it can be further variable depending on other factors such as number of objects or polygons.
Using these rules we can list all possible texture sizes:-
Summary Of Texture Cache:
- 4KB Limit
- 2KB Limit with CI texture
- 7 tiles available for Mip-Mapping or multi-loading
- More Than one Texture can be processed at once.
=IF((B$3*$A4*4)/8+48<=2048,IF((B$3*$A4*4)/8+48<=1024,IF((B$3*$A4*4)/8+48<=682,IF((B$3*$A4*4)/8+48<=512,"4","3"),"2"),"1"),"")
=IF((B$3*$A4*4)/8+48<=4096,IF((B$3*$A4*4)/8+48<=2048,IF((B$3*$A4*4)/8+48<=1365,IF((B$3*$A4*4)/8+48<=1024,"4","3"),"2"),"1"),"")
=IF((B$3*$A4*4)/8<=2048,IF((B$3*$A4*4)/8+<=1024,IF((B$3*$A4*4)/8<=682,IF((B$3*$A4*4)/8<=512,"4","3"),"2"),"1"),"")
=IF((B$3*$A4*4)/8<=4096,IF((B$3*$A4*4)/8<=2048,IF((B$3*$A4*4)/8<=1365,IF((B$3*$A4*4)/8<=1024,"4","3"),"2"),"1"),"")
=IF((B$3*$A4*8)/8+768<=2048,IF((B$3*$A4*8)/8+768<=1024,IF((B$3*$A4*8)/8+768<=682,IF((B$3*$A4*8)/8+768<=512,"4","3"),"2"),"1"),"")
=IF((B$3*$A4*8)/8+768<=4096,IF((B$3*$A4*8)/8+768<=2048,IF((B$3*$A4*8)/8+768<=1365,IF((B$3*$A4*8)/8+768<=1024,"4","3"),"2"),"1"),"")