https://github.com/RedGuyyyy/sd2snes/blob/master/rel/usb2snes_v0.65.zipusb2snes 0.65
Fixed save state to not enable PPU until after PPU alignment. Fixes some momentary graphics glitches on load.
Fixed many timing and questionable SNES bus loading statements in the FPGA.
Added support for 64B data block sizes and no responses based on flag.
Added support for 64B vector VGET/VPUT commands.
Removed MSU support from base firmware.
Removed ZeldaHUD.
Changed save to SD code to compute CRC across multiple iterations to leave time for USB on large SaveRAM images.
This is mostly bug fixes so you should definitely get it if you have an earlier version. I temporarily removed MSU support to make room for other things, but I will fit it back in for the next release without all of the USB support. I had to change how saving to SD works so remember to back up your SD card before trying this. It's a little slower now for large SaveRAM files (mostly rom hacks) for it to back the save state up to the SD card.
I decided to remove the ZeldaHUD because I wasn't updating it anymore. The previous version should still work with the 0.65 firmware. Once there's a better USB interface to sd2snes I'm hoping someone will come along and make one or modify one of the existing ones that are popular.
<Technical stuff below>
EDIT: Looks like there are some bugs with NORESP and the GET operations. I'm working on a fix.
I was ignoring a lot of timing problems in the verilog which I think were causing weird hardware glitches for people. The address decode logic in several units is in desperate need of some flops, but I need to understand it better to make sure I don't introduce logic bugs. This release fixes that and the context state is still working as far as I can tell.
The save state fix is pretty simple and cleans up the first few frames after save/load so it doesn't show garbage.
The 512B minimum packet size was artificial because full speed USB 2.0 bulk has a maximum packet size of 64B. I'm not ready to redesign the whole USB interface protocol so instead I added flags to: (a) enable a 64B data payload and (b) disable the need for responses on certain transactions. This is coupled with 2 new 64B commands VGET/VPUT that support 8 vector lanes of 0-255 byte each. The vector data is packed over USB. All of the old commands (including responses) are still 512B. So you can now use VGET/VPUT with responses disabled and 64B payload to do small fetches of somewhat sparse data with lower latency and lower overhead. The vector operations are reasonably well tested, but may have some bugs.
I haven't started on the app that allow sharing of the USB, but it is very high on the list of things to do.