5 ms·
The N64 flash cartridge feeds data to the N64 on a 16 bit parallel bus. It's used to store the game ROM. I suppose by writing clever self-modifying "ROM" code,
by bri3d 4y ago
The N64 flash cartridge feeds data to the N64 on a 16 bit parallel bus. It's used to store the game ROM.
I suppose by writing clever self-modifying "ROM" code, you could hack the Pi into acting as a coprocessor, but in this configuration, it's just feeding arbitrary game data to the N64 - emulating the ROM that would be seen in a normal N64 flash cart.
Unlike in older consoles like the SNES where cartridges often contained processors and other logic, N64 flash cartridges were by and large just ROM, save data EEPROM or SRAM, and a serial bus for simple peripherals like an RTC or modem that I think was only used in a few very rare games.
The particularly interesting thing about N64 flash cartridges is that they have a seed/key/checksum security mechanism implemented using a chip called CIC. There's a good video about it here : https://av.tib.eu/media/32818 https://av.tib.eu/media/32818 .
- klodolph 4y agoI'll add that this makes preservation a lot easier. For example, there's the 64DD. It's a disk drive peripheral for the N64. It's Japan-only--for various reasons. Some people thought it would be difficult to emulate. Nope, it turns out it's basically just some disk I/O. Games are just data.
- iamevn 4y agoData which, with fairly simple patches, can be run from the same flashcarts you can run normal game data from!
- kbeckmann 4y ago64DD is something we would like to support fully eventually. Since the cart code is all written in C (+PIO), it opens up a lot of flexibility for implementations like this. Not everyone is well-versed in verilog/HDL, but there's plenty of C-coders out there, and iteration time is really fast (build-depoly-test cycle).
- bdowling 4y agoThe N64 cartridge bus is just a parallel bus. Commercial cartridges may not have included coprocessors, but there isn't anything that prevents them. (Edit: The cartridge bus is set up to be most efficient when reading/writing blocks of memory (address is latched w/ auto-increment). It would still work for accessing devices though.)
- deleted 4y ago[deleted]