Lameguy64 Banner
PSn00bDEBUG - Lameguy64's Website
PSn00bDEBUG Logo

The only open source on-hardware debugger for the PS1!

This is a PlayStation debug tool that's been in the works since June of 2018, when it started out as an experiment with using exception vectors and cop0 debug registers. There is nothing else like this in the homebrew scene that I'm aware of, aside from emulators that have debugging facilities such as no$psx.

For years the only way to debug on real hardware is with an official development unit such as a DTL-H2000. I do own a DTL-H2000 but I have not used it in a very long time thanks to this debugger and that it can debug programs made with PSn00bSDK which is not possible on the DTL-H2000 and Sony's debug tools.

Once ELF debug symbols support has been implemented, this will be fittingly teamed with PSn00bSDK to form the open source PSt00l Development System for Original PlayStation homebrew development.

Old video, some limitations described have been resolved.

Notable Features

Limitations

The most obvious limitation of PSn00bDEBUG is the interface can become very sluggish especially with interval update due to speed limitations of the serial interface. I have plans to support faster interfaces to this debugger such as Commslink, and I even designed my own parallel port adapter for such a thing (yes, parallel port, as I cannot be bothered to design one for USB. The CommslinkUSB project is useless as there's no source code on how to use it because closed idiots and crap/nonexistent documentation). I chose Commslink because it offers full 8-bit bi-directional communications instead of 8-bit in 4-bit out (basically resembles Centronics or SPP nibble mode) on Xplorer cartridges which I find to be very annoying to deal with.

Another limitation is that it does not support multiple data access breakpoints and I don't know of any method of how to implement such a feature entirely in software without hammering breakpoint IRQs on memory accesses which will harm timing sensitive I/O operations. The DTL-H2000 and other official development systems probably had additional hardware that sits in the DRAM memory bus of the CPU that would allow such a capability.

Multiple program breakpoints is also a feature I wanted to implement, but the last time I tried implementing it which consisted of patching break opcodes turned out to be a failure, as the CPU kept fetching a break opcode when trying to resume execution despite the break opcode being unpatched using an uncached segment. Likely a caching thing going that might be resolved by simply calling FlushCache(). Will have to try it someday.

Get PSn00bDEBUG

Github repo This is the recommended repository for obtain PSn00bDEBUG in source or binary form. If you have a Github account, you can fork off of this if you want to post your own modifications yourself, which may be merged into the main repo if such changes are decent enough to warrant merging in.
SVN repo This is the self-hosted repository of PSn00bDEBUG that I update most regularly. Often you'd find the version here to be newer than the Github release, but beware that it might be pretty buggy especially in the midst of new features/fixes being implemented.

Remember to login to the SVN as annoyingmous just like the FTP. It is also not advisable to work off of this codebase as you won't be able to commit changes upstream easily and that I don't share credentials nor create accounts to randos on the Internet.
Psn00bdebug - Lameguy64's Website