Q&A- Game Pak Submission

QA1 I don't understand the process for submitting a master ROM
QA2 How do I burn a program into Flash ROM?
QA3 What are the contents of the master ROM check?
QA4 When I change the library to libultra_rom.a, the program abnormally terminates
QA5 Where is the nrdc utility?

Q1 I don't really understand the procedure for submitting a master ROM.

A1 Refer to the "N64 Software Submission Requirements."


Q2 How do I burn a program into Flash ROM?

A2 To burn a program into Flash ROM, it is necessary to create a master ROM image. See "Nintendo 64 ROM Registration Instructions" in the N64 Software Submission Requirements document.

If you want to check the operation of the Flash ROM, you can execute the program up to makemask. The processing from Ndrc on is not necessary.

Once a ROM image has been made, write it to a cartridge using a Flash Gang Writer. The latest version of the gang writer control software is f.exe.

There is no host computer interface routine in the master submission library. Since osSyncPrintf is defined as an idle function it won't generate a link error. However, since it takes a great deal of memory and processing time, remove osSyncPrintf with make option at #ifdef, etc.


Q3 I am close to submitting a master ROM. Could you please tell me the content of the master ROM check that you perform there?

A3 Think of the ROM check as an operation of checking the precautions in "Programming Precautions" using special devices and equipment.

Before submitting your master ROM, carefully read the "Programming Precautions" and confirm that there isn't anything that might pose a problem. This will reduce the possibility of an NG result.


Q4 When I switched the linked library from the debugging library (libultra_d.a, etc.) to the master submission library (libgultra_rom.a, etc.), the program malfunctioned.

A4 It could be that alignment of the variables that require the alignment of the DMA buffer, etc. was not performed properly. An osError (ERR_OSPISTARTDMA_ADDR) will be generated if the alignment of the buffer in the argument in the EPi function or LeoReadWrite in the debugging library is not properly done. This check is not performed with the master submission library functions.

Even when the alignment is OK in the debugging library, it is not guaranteed that the alignment of the variables will be OK in the master submission library. Explicitly define the variable alignment.

The comments in the source code of the N64 OS demo programs state that "individual objects are 16-bit aligned when they are linked," but this is talking about the SGI compiler, and it will be different in the case of exeGCC. In addition, even if a variable declaration is written in the head of the file, (since the symbols don't have to be aligned in the order in which they were declared in the objects,) when multiple variables are defined, the first variables do not have to be 16-bit aligned. Since the method of defining variables differs depending on the processing system, see the manual for the individual compiler.


Q5 I am currently in the middle of creating a master ROM, but where can I get the "NINTENDO 64 Master Data Utility Nrdc?"

A5 Nrdc is supplied on a floppy disk when we contract with your company regarding N64.