Debugging in SN64

Question: How do I download an image and test it?

Answer: To download without debugging: use the file server's Uploader command on the Tools menu, and specify that you want to download your game image to 0xB0000000. Make sure the N64 is turned off at this point. Once the image is downloaded (the activity LED on the SN64 will go out) then turn on the N64 and your image should boot.


Answer: To download and debug: set up a project in the debugger and add the binary image file to it. Specify in its Properties dialog that you want to download it when the project is opened and that the target address is 0xB0000000. Turn the N64ís power off and reopen the project, then turn the N64 back on and your image should boot.

Question: I can download my game image just fine, but nothing happens when I turn it on.

Answer: Make sure you have an appropriate game cartridge plugged into the SN64. You need to use a PAL game if you have a PAL N64, and an NTSC game if you have an NTSC N64. Also make sure your monitor is connected properly and switched on!


Question: My image looks like itís running, but the debugger wonít connect to it.

Answer: Did you remember to call init_debug() after osInitialize()? If so, you should be able to stop the target and press Ctrl-U, and your debugger panes will light up with information.


Question: My game worked fine with the SG hardware but it wonít work with the SN64, it just locks up at various points.

Answer: Are you using any calls to osSyncPrintf() for debugging purposes, or any other host communications? This could account for the freeze. Our target communications are handled differently and we donít currently support osSyncPrintf().


Question: Itís annoying having to reload the Windows debugger every time I download a new image.

Answer: You donít have to do this; just select Reopen from the Project menu and the debugger will download your image and reload the symbols for you. You can even use the Windows 95 start command to run or reactivate the debugger directly from your makefile.


Question: My symbol file takes ages to load.

Answer: Try using SYMMUNGE to compress it.


Question: What does PCinit() do?

Answer: This is necessary if you want to use the file server output window, or perform file access with the PC. You should call it after youíve called osInitialize() and init_debug().


Question: I download an image and itís running, but whenever I stop the target, the debugger displays the source for my idle thread.

Answer: The debugger doesnít yet completely support the N64ís multithreading. If you want to stop the CPU at any point other than the idle thread, you need to set a breakpoint.


Question: I keep on placing breakpoints and forgetting about them later and getting unexpected halts. Is there a centralised list of all the breakpoints?

Answer: Yes; you can open the Breakpoint Manager as a modal dialog, or in a pane so you can always see the list. In either case you can see the complete list of breakpoints currently in effect. You can also disable breakpoints without actually deleting them, so you can reactivate them later.


Question: It would be handy to see the C source and disassembly interwoven while Iím stepping my code.

Answer: You canít do this at the moment, but you can have two panes side-by-side showing the source and assembly, locked to keep the PC in the centre of the screen. They will both update correctly as you step. You can also set the stepping mode to step either one source or one assembly line at a time regardless of the pane you have active.