What is the difference for programming a famicom cartridge and a famicom disk?
Disks have their content loaded into 32K of RAM, and you need to load things in and out of RAM. Cartridges have bankswitching instead.
Dwedit wrote:
Disks have all their content sitting in 40K of RAM, and you need to load things in and out of RAM. Cartridges have bankswitching instead.
That's the basic explanation than?
mugenfighter wrote:
That's the basic explanation than?
Perhaps you could be more specific about what you want to know?
There is a detailed technical description here:
http://wiki.nesdev.com/w/index.php/Family_Computer_Disk_System
It should also be mentioned that your program must account for the BIOS which exists in $E000-$FFFF and controls interrupt vectors. On a cartridge you control that yourself.
Loading a set of files from disk takes ten seconds of essentially 100 percent CPU use. This means a game can't have quite as much stuff loaded at once without noticeable pauses, unlike cartridges where bank switching allows loading graphics and level maps from anywhere in the game at any time with essentially no perceptible delay. In addition, most games were two sides, each roughly 60 KiB in size, which pales in comparison to later NES games that reached 512 KiB.
However, your simulation can be more complex, as you have 34K of RAM to work with. Though that must also include your code, it means you can use more self-modifying code, and your game state can be bigger (more destructibility with backtracking). Only two highly uncommon original cartridge boards match that RAM size, namely SXROM and EWROM, though new FME-7 based boards should support it.