I guess it would be more accurate to say that the SA-1 is a chip not even higan is able to handle gracefully. Last August's v101 release fixed an issue with
Super Mario RPG, which suggests progress is being made, but by byuu's own admission, accurate SA-1 emulation would require far too much computational power to be feasible. (Given byuu's track record, chances are that a more accurate implementation of the chip is possible with PCSX2-level system requirements, but in any case, it hasn't been done.) It's not like SA-1 games are completely broken, though.
byuu, circa June 2016, wrote:> It's not just the memory conflicts, bsnes' SA1 is full of things that make my inner voice scream "THIS IS BLATANTLY WRONG, HARDWARE CANNOT POSSIBLY WORK THIS WAY":
You and me both.
Now what's really scary, is how much worse everyone else's is. Probably 30% of the entire chip's feature set is completely unemulated in Snes9X. Even more in ZSNES. Why? In Snes9X's case, games don't use those parts (like H/V IRQs); and in ZSNES' case, unpopular games don't use those parts (like the golf and horse racing games.) They both have horrendous lists of ROM patches based on game ROM title that hack out wait loops to try to speed up SA-1 games more.
To add to your list, a huge issue now is that a lot of the I/O registers are only readable from either the SA-1 or CPU. Yet in most cases, both can freely read/write all the registers. This is poison to SA-1 ROM hackers, and is the exact kind of thing that leads to emulator-only hacks.
higan is basically ZSNES-level on the SA-1. And everything else is much worse than even that. The SA-1 is basically half the complexity of an SNES emulator in a single coprocessor, used by ~10 US games (and some boring horse racing/Japanese chess/fishing games in Japan.)
byuu, roughly six months ago, wrote:Right now, higan splits cycles in half to try and simulate the register latching lengths. I don't have the CPU power available to try and do full 100% bus-accurate emulation; which is especially needed for SA-1 emulation to be truly accurate.
EDIT: Not sure why I thought SA-1 games ran too slowly in higan... v098-balanced runs
Super Deluxe at full speed just fine. A post by byuu suggests that, despite accurate emulation of the chip being too slow to really be feasible, it isn't needed.
byuu, circa 2008 wrote:The SA-1 ... it's basically just a faster SNES CPU with some bitmap <> bitplane stuff, and a few other misc utilities like that. We should be able to directly extend a standard SNES CPU class to support it, however at the cycle level it will be unmaintainably slow using methods that I use.
It will require more thought toward optimizations if it's to be pulled off, with things like time shifting and rollbacks. I'm not convinced it's worth the effort for the paltry selection of SA-1 games available, especially when none seem to need it.
Would it be nice? Sure, but there are more important things to work on at the moment.