SPONSORED LINKS

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.

or

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.