I’ve added an FAQ to address some questions I’ve been getting over time. I’d rather not give any time estimates for implemented features since that didn’t work so well in the past… All I can say is that SuperFX is too much for me to handle at the moment so I’m going to target some lower hanging fruit for now.
So I’ve been getting a lot of questions pertaining to current progress, understandably.
SuperFX is still crawling along, I’ve gotten a basic CPU core control unit and partial instruction decoder to work which can run test code in simulation fine, albeit limited. But it doesn’t deal with the different memory delays, stalling and parallelism yet; also the SNES interface, plot logic and other supplementary stuff are still missing.
The SuperFX uses pipelining which is a thing I haven’t fully understood yet, so that’s going to take some brain work and likely multiple complete rewrites of the CPU core. I’d rather not give an estimated time of completion for that at the moment… Implementing pipelining properly is important because game code is laid out to take advantage of it and will not run correctly otherwise.
Besides the SuperFX, kogami has discovered a BS memory mapping bug, a regression that snuck into firmware 0.1.5 where I rewrote the BS memory mapping based on my own RE efforts. Also some graphical corruption has been found when using the “Run previous game” feature (Start button). I expect to make a bug fix / minor release addressing these issues (possibly others) in a couple of weeks.
Firmware v0.1.5 is out with these changes:
- Menu: Files are now sorted by their entire file name instead of the first 20 characters only
- Menu: Ignore input from non-standard controllers (Super Scope, Mouse etc.)
- SPC player: fix soft fade-in (first note cut off) on S-APU consoles (1CHIP / some Jr.)
- More accurate BS-X memory map
- Correctly map SRAM larger than 8192 bytes (HiROM) / 32768 bytes (LoROM), fixes Dezaemon, Ongaku Tsukuuru – Kanadeeru
- minor memory access timing tweaks (should help with occasional glitches on some systems)
Download it here.
In the past weeks, amongst a number of smaller feature requests, I’ve been getting a lot of questions about SuperFX progress. I’ve even seen rumors spread about SuperFX support being cancelled. This is not the case.
SuperFX is the most complex core to implement to date, and it even took me several months to complete Cx4 support. That was before the public release of sd2snes, however, so less people noticed. Rest assured that SuperFX support is still in progress. It will take at least the rest of this year though.
To me, having existing features working properly takes priority. That’s why I’m addressing reported bugs and also minor feature requests which have been in the queue for quite long in parallel to working on SuperFX. I expect there to be 1-2 more releases before SuperFX support is introduced in v0.2.0, not counting critical bug fixes should need for them arise. Since people seem to get annoyed at my love for the Satellaview I’ll put off further work on that until after SuperFX.
There will be a v0.1.5 release shortly, which supports large SRAM properly, fixes sorting of long directory entries, fixes a glitch in SPC playback with S-APU consoles, works properly with non-standard controllers plugged in (e.g. Super Scope), and has more faithful BS-X memory mapping (<- actually finished a couple of weeks ago).
v0.1.6 will probably introduce proper SuperCIC support (allowing to select 50/60Hz from the menu) and maybe rudimentary cheat code support (ROM patching only). Both might be delayed to v0.2.0.
Keep in mind that while I’m continuing work on SuperFX support it helps doing something else now and then.
I’ve added a compatibility list (actually an incompatibility list) to the page: Compatibility
It will be updated whenever new custom chips are implemented or bugs are fixed.
Firmware v0.1.4a has been released. This fixes DMA initialization by the menu that could cause sprite corruption in some games (e.g. Super Ghouls’N Ghosts lv. 1, SSFII) and text distortion in the menu itself.
Grab it here.
Firmware v0.1.4 is out with these changes:
- SPC Player (contributed by necronomfive/blargg)
- System Information screen now shows CPU/PPU revision (contributed by necronomfive)
- Satellaview: basic data transmission packet support (makes some more games boot, thanks to LuigiBlood for assistance and sample data packets)
- Number of supported files increased to ~50000 per card / 16380 per directory
- Slight speedup of menu text rendering
- Reduce load time of menu
- Adjust Cx4 timing to be closer to the original (Mega Man now defeats the boss in attract mode in Mega Man X2; test this against some emulators for fun. )
- adapt ROM mirroring size to file size if header information is invalid (fixes Super Noah’s Ark 3D, possibly others)
- MSU1 interface changes suggested by byuu:
- Data offset 0 and audio track 0 are automatically requested on reset. This causes the busy flags to become 0 shortly after reset/startup.
- $2000 bit 3 is now “audio error”, becomes valid after “audio busy” -> 0; set when an error occurred while preparing playback of the requested audio track
- write LED stays on when SRAM content changes constantly
- fix empty save files on FAT16 / incorrect free cluster count on FAT32
- correct directory sorting (force parent directory at top of list)
- fix text corruption when entering a directory with a scrollable name
- fix files/dirs count in system information
- make ‘sd2snes’ directory hiding case-insensitive
- improve DAC I²S timing
- fix occasional palette corruption in menu
- fix SD clock glitch on ROM loading (occasional glitches/crashes)
- fix memory write timing on ROM loading (occasional glitches/crashes)
- fix SPI timing (ROMs not loading; System Information not working)
- properly synchronize SNES control signals (occasional glitches/crashes)
- fix floating IRQ output (occasional glitches/slowdowns)
Download it here.
Firmware v0.1.3 is out with these changes:
- Updated logo gfx with final version from klaptra
- Updated font to distinguish between 1 and I
- Menu layout adjusted to move status line up by 4 scanlines
- Run previously loaded game by pressing Start in the menu
- Auto-scroll file names that do not fit the screen
- SD access time measurement on System Information screen (takes a while!)
- Cx4 memory map: mirror ROM to 40-7d/c0-ff (fixes MMX3 fully playable Zero patch)
- Fix: FPGA-side SD clock pullup (increases reliability with some cards)
Download it here.
I guess I’m a bit behind the rumors already
sd2snes will be available soon from KRIKzz. The first stores to sell them are Stone Age Gamer and Retrogate.
I’m asking everyone on the 2012 pre-order list (who got a confirmation) to contact me whether you would like to stay on the list or order from one of the stores. Honestly I really encourage you to do the latter because it gives me more time for actual development.