The /RESET line on the cart is the proper way to handle this in almost all cases. That's the purpose of that line. When the CPU resets, it pulls that line low to reset all of the hardware on the cart. Likewise, when the CIC fails the handshake, it pulls that line low to hold the console in a reset state in order to lock out the console in case of handshake failure. Manually pulling that line low should soft-reset any hardware that is connected to it (which I would have thought was everything, but as it's been mentioned, some of the hardware might not be, though if your code properly initializes all hardware registers at startup you should be fine).