Here’s another preview: v0.1.7 preview 2
It addresses some issues reported with v0.1.7 preview (and some others).
- Satellaview works again. BSX alters the original interrupt vectors at run time. The original interrupt vectors are now saved per hook call, not only once when loading the ROM.
- In game buttons now work with MSU1, too.
- Automatic hook method choosing: NMI is default but switched to IRQ when no NMIs are triggered. If both occur, NMI has priority. This should enable the in-game buttons for games that previously did nothing.
- The hook routine saves some CPU time when auto joypad read is enabled by the game – it will just reuse the result instead of doing its own controller scanning. Also the controller is now only scanned every 8 frames. This helps alleviate some glitches, e.g. Secret of Mana now starts up correctly. There are still some glitches left which can’t be eliminated fully.
- Auto region patching works again without having to delete the sd2snes.cfg.
- BSX now emulates Type 1 memory packs instead of Type 2. Apparently the BSX BIOS is buggy with Type 2 packs when they contain HiROM games that are supposed to be run from PSRAM. So, at least Bomberman works now, and probably others too.
- Fixed BSX PSRAM shadowing for HiROM.
- Files and directories with “hidden” or “system” attributes are now actually hidden from the file browser.
NOTE: Satellaview is broken at the moment because it doesn’t work with the NMI vector patching. I’m working on it.
At last here’s the v0.1.7 preview. Cx4 blew up in my face when I tried to insert the cheat/in-game hook engine and ended up taking days to get working. :|
Here’s what’s new (mostly copied from the status post):
- In-game button combinations are in effect. See the table below for the key mapping. Note that some games show glitches with the in-game functions in place. I added an additional feature to temporarily disable them in case of game glitches (e.g. Secret of Mana hangs at the Squaresoft logo, displaying only garbage). I’m not entirely happy with the button choice but it will do for now. ;)
- When running a game from the recent games list, the selected entry is now moved to top of the list.
- LED blink codes for file system errors – e.g. in case the SRM file cannot be saved this will tell you that something’s gone wrong. The blink codes are yet to be listed.
- Also the sd2snes will retry saving until it works so you have the chance to swap out the SD Card. In that case the directory structure must be present where the sd2snes expects to save the file.
- “Screen saver” – in the menu, the screen is darkened after some idle time to reduce wear on CRT and plasma screens.
- Memory sharing between SNES and the sd2snes CPU is greatly simplified (The FSM is reduced to only 5 states instead of 18) and timing is more relaxed. This should help with stability on a wider range of consoles.
- On-the-fly file browsing. Also shows a little “loading…” window when loading directories/files.
- Windows are now blue so they stick out better in front of yellow directory listings.
- Cx4 data ROM is now embedded in the FPGA configuration – no more need for the external file cx4.bin.
- Initial Satellaview clock is back to 18:00:00 from 18:05:30.
- SD cards can be hotswapped. Currently there is no automatic refresh of the file list so tapping reset on the SNES or changing the directory is necessary to get the new contents.
- The status line is moved upward a few pixels so hopefully it doesn’t get eaten by overscan.
- Navigation: When scrolling page-wise with the right D-pad arrow, the end of the file list is now aligned to the bottom of the screen.
- Navigation: The shoulder buttons can be used to jump to the beginning/end of a directory listing.
- Bugfix: some compatibility issues with a number of games. (Super Play Action Football (S-RTC interference), GP1 Part II (WRAM initialization), Human Grand Prix (mapper detection bug))
- Bugfix: properly initialize FPGA state machine (on some consoles the menu failed to start at all)
v0.1.7 final will contain menu items for various configuration settings and a cheat interface.
Please let me know if any games are broken that worked before, even with the in-game functions disabled.
In-game button mappings:
|L+R+Select+X||Reset to sd2snes menu
|L+R+Start+Y||Permanently disable in-game hooks (in case they interfere with game operation).
|L+R+Start+X||Temporarily disable in-game hooks (~10 seconds - if you need to get past a glitch but don't want to lose in-game buttons)
Sorry to keep you waiting! Turns out I have some sort of GUI-code-a-phobia so the cheat interface isn’t done yet.
I’m currently updating the secondary FPGA configurations (cx4, obc1, bootstrap) with the updated in-game command interface and simplified memory sharing. So with a bit of luck I might be able to release a preview version (with everything but cheat support) this weekend. :)