A few years back one of the other forum members here enabled use of the USB connector on the SD2SNES. Those changes were used as a base for a small project to view and modify SNES state over USB. The version linked below has:
- A basic protocol over USB that supports reset, booting of games, SD card file access, reading and writing the 16MB RAM, and a few other things.
- FPGA changes to snoop PPU, WRAM, OAM, CGRAM, and other cart bus operations in order to store mirrored copies in a region of the 16MB RAM.
- A windows tool tray app which provides a way to multiplex the USB connection across multiple clients using websockets.
- Websocket enabled windows apps including a FileViewer/ControlPanel, MemoryViewer to see various components of the 16MB RAM, and a NintendoSpy-based InputViewer which has limited game support for displaying input controls.
- A way to patch code into the NMI hook at run time to support things like the included save_state.ips patch. The save state patch has only been tested on a few games and sometimes requires a game-specific change to support more games so don't expect even GameSaver quality.
... And other things I'm forgetting.
The USB 2.0 port supports full speed rates (12 Mb/s data rate) of which I've seen ~750 KB/s. 1 MB/s may be possible by rewriting parts of the firmware.
The code is far from perfect and I'm still working through some races in the websocket protocol, but it's usable in current form.
BSX, DSP, CX4, MSU, and some of the other chips don't support the FPGA changes in order to free up some space. They still work, but it's best to not use the USB changes with them. The FPGA code hijacks the MSU and other buffers on the SD2SNES to support capturing certain state from the cart bus that is still a work in progress.
https://github.com/RedGuyyyy/sd2snes/releases/latest
source:
https://github.com/RedGuyyyy/sd2snes/
https://github.com/RedGuyyyy/usb2snesw/
- A basic protocol over USB that supports reset, booting of games, SD card file access, reading and writing the 16MB RAM, and a few other things.
- FPGA changes to snoop PPU, WRAM, OAM, CGRAM, and other cart bus operations in order to store mirrored copies in a region of the 16MB RAM.
- A windows tool tray app which provides a way to multiplex the USB connection across multiple clients using websockets.
- Websocket enabled windows apps including a FileViewer/ControlPanel, MemoryViewer to see various components of the 16MB RAM, and a NintendoSpy-based InputViewer which has limited game support for displaying input controls.
- A way to patch code into the NMI hook at run time to support things like the included save_state.ips patch. The save state patch has only been tested on a few games and sometimes requires a game-specific change to support more games so don't expect even GameSaver quality.
... And other things I'm forgetting.
The USB 2.0 port supports full speed rates (12 Mb/s data rate) of which I've seen ~750 KB/s. 1 MB/s may be possible by rewriting parts of the firmware.
The code is far from perfect and I'm still working through some races in the websocket protocol, but it's usable in current form.
BSX, DSP, CX4, MSU, and some of the other chips don't support the FPGA changes in order to free up some space. They still work, but it's best to not use the USB changes with them. The FPGA code hijacks the MSU and other buffers on the SD2SNES to support capturing certain state from the cart bus that is still a work in progress.
https://github.com/RedGuyyyy/sd2snes/releases/latest
source:
https://github.com/RedGuyyyy/sd2snes/
https://github.com/RedGuyyyy/usb2snesw/