FAQ

From N64brew Wiki
Revision as of 09:50, 11 September 2023 by Rasky (talk | contribs)
Jump to navigation Jump to search

This page tries to provide a detailed answer to frequently asked questions on Nintendo 64. Some of these have spawned myths over the years in online communities, so this page hopefully answers properly and debunks some of them.

What is the maximum cartridge size (ROM) supported by a Nintendo 64?

Short answer: 4 GiB, without bank switchers. Unlimited otherwise.

Most people seem to believe that Nintendo 64 is somehow limited to cartridge of 64 MiB. The origin of this belief is likely the fact that 64 MiB is the maximum size used by retail games (such as Conker: Bad Fur Day). In fact, there is no such a hardware limit. The cartridge is accessed via the PI bus, a serial bus that allows for full 32-bit addresses, accessible via DMA: so a hardware cartridge can reply with data to any address in the 32-bit range. ROMs must have a valid header at address 1000'0000, but besides that, there is absolutely no constraint: a cartridge could also reply with data in the range 0000'0000 - 0FFF'FFFF, as long as the application itself knows about it and retrieves it when necessary.

Some of the address space is also memory-mapped to the VR4300 (and that includes normally the whole ROM too), but that is not a limit or a constraint in any way. It is true that the full 32-bit address space is accessible only via DMA, but that is actually the main (and almost only) way a ROM is normally accessed: direct I/O accesses via CPUs in memory mapped areas are rather slow, cannot be cached, and only work correctly with 32-bit access size. So in practice they are rarely used.

At the hardware level, the presence of a serial bus means that it is possible to split ROM contents across a different array of chips if required; as long as the PI bus decoding logic knows how to map each address to the correct chip, it will be fine.

Homebrew developers should anyway carefully consider going past 64 MiB with their ROMs. In fact, most emulators do not support ROMs beyond that limit (even though the modification is expected to be quick once they are made aware that it is not a hardware limit), and flashcarts commonly used to play home-brew productions on hardware (such as EverDrive 64 or SummerCart 64) only have about 64 MiB of SDRAM to keep ROM contents, so they do not support larger ROMs as well.