Making a "burnable" ROM image.
When making a ROM, developers should be compiling and linking with ultra_rom libraries. This removes all of the debug info from the ROM ( such as osSyncPrintf, assert, argument parsing for gload ). For SN64 users, this means removing any header files such as "psyq.h" and their respective libraries. The next step is to run makemask.exe on the ROM file. This will add the security data into the 4K area specified by the boot segment in the spec file. This data allows the CIC in the N64 console to boot the game. It is specific to the CIC, and not the game data. There is a new CIC being used in certain first and second party titles called CIC6103.
For these games to boot on a N64 console, developers will need to run make6103. make6103 is only distributed to developers who are using the 6103 CIC in their game. SN64 users will have to run setcsum on their ROM file before running makemask. This will allocate a 4K header for security information, as well as write the boot address into the ROM. These are functions typically done by Nintendo's makerom program. setcsum also contains a setting for 6103, although this will not be necessary for most developers. You need to tell setcsum to pad the ROM image to the correct size for that kind of flash cart.
For example, if making a 4Mb cart image, you need to run "setcsum file.bin $80000400 0 $400000" which will pad it appropriately. You'll need setcsum 1.13 or greater for this. For final submission to Nintendo, developers should also use nrdc.exe to add ROM registration data to their ROM files.
This is data such as Game Name and Company Code and checksum, which we use to identify ROM files. nrdc must be run after makemask, because otherwise makemask will destroy some of the data written by nrdc. makemask & nrdc are provided to all developers when they are signed on by Nintendo.