Jun 072016
 

I’ve started a new page to list games that have issues with the in-game hooks: In-game hook compatibility
Columns will be added to the right with upcoming firmware releases to reflect changes (hopefully improvements!) in compatibility.
So far the list is fairly short and I probably forgot to add some of them based on reports I got. Contributions are welcome. ๐Ÿ˜‰

 Posted by at 4:17 pm
Apr 262016
 

Firmware 0.1.7b is out with a number of fixes. Get it here!

  • BS-X boots correctly again after a soft reset.
  • OBC1 works again (accidentally was permanently disabled)
  • Fixed garbled time on initial clock setting (new unit or battery replacement)
  • fixed a firmware crash when saving after using the serial command line
  • sd2snes folder is always hidden again
 Posted by at 1:14 am
Apr 172016
 

Another maintenance release, yay! Get it here.
This fixes a critical bug and two minor bugs reported yesterday:

  • Firmware locked up when loading Zelda 3 after soft-reset. I am surprised that it actually worked so well with all other games.
  • Auto Region Patch setting wasn’t saved properly.
  • Satellaview custom time had a garbled default value (year 1035). The default has now been fixed. If you’d like to apply it you can delete your config.yml or just the “BSXTime” entry from it to load the new default.
 Posted by at 1:28 pm
Apr 162016
 

Obligatory service announcement! A bug snuck into the firmware where the ROM file could get overwritten with your save data when saving or resetting. On the bright side you’d never lose your save data… ๐Ÿ˜‰
I just replaced the download with the fixed version. If you already downloaded v0.1.7, please re-download and replace it on your card. Sorry for the inconvenience!

 Posted by at 1:13 am
Apr 152016
 

OK, so I decided to release v0.1.7 ๐Ÿ˜‰ There is one feature missing out from the milestone (interactive cheat menu) but I really didn’t want to delay the release EVEN longer. Grab it here!

Here’s what’s new since preview 4:

  • Configuration menu. All settings are now available through the menu. Changes take effect immediately after confirming a setting with the A button. It can use some polish but should work fine. Note that the Video Mode settings are only effective on SuperCIC modded consoles.
  • SRM files (save files) are now stored in sd2snes/saves/<romname>.srm – existing save files will be moved upon save, there is no batch migration.
  • Game fixes:
    • DMA de-initialization has been reintroduced and changed from $00 to $ff. This reflects a real SNES better and hopefully finally fixes sprite corruption with SGnG and SSF2, AND title screen glitches/crashes with Pocky&Rocky US.
    • APU RAM is initialized to $AA (same as specific model SNESes). This fixes stuttering drums due to bugs in sound programming in the intro of Soul Blader on some consoles (not just 1CHIP!)
    • Data written by the SNES CPU is sampled to obtain valid data on certain time points. This should fix Mario Kart track/driver glitches everywhere.
    • All faulty multicycle constraints from Cx4 have been removed. There should be no random “register file error” messages or similar anymore.
  • MSU1 enhancements:
    • MSU1 volume boost: In case MSU1 audio is too quiet you can now increase volume in several steps. Available via Configuration->Chip Options.
    • Interpolation filter to reduce aliasing, resulting in cleaner sound
    • Fixed a bug where volume calculation introduced DC offset to the waveform output. This eliminates clicking or humming on volume changes/fades.
    • Changed MSU1 audio playback rate to exactly 44100Hz to match bsnes/higan implementation. Sound that syncs on bsnes should now also sync properly on sd2snes.
    • MSU1 resume feature implemented (Thanks to Michaรซl Larouche!)
  • Miscellaneous:
    • Missing ROM files are automatically removed from the “Recent Games” list. (Thanks to borti4938!)
    • Background text is now properly greyed out in the SPC player
    • Ultra16 awareness (mostly thanks to borti4938!):
      • Ultra16 serial number and autoboot setting is displayed in the System Information screen.
      • Exiting from the SPC player doesn’t crash the menu anymore on Ultra16 consoles.
      • Soft reset is prolonged a bit on Ultra16 consoles so you have the opportunity to release the controller buttons, not entering the Ultra16 menu by accident.
      • Auto region patching is disabled on Ultra16 consoles so it doesn’t interfere with the Ultra16’s own facilities.
 Posted by at 4:00 pm
Aug 172015
 

Preview 4 of the notorious 0.1.7 firmware is available. Download here!

Changes in no particular order:

  • Prevent software from using uninitialized DMA ch.0 transfer to corrupt the stack (fixes Nightmare Busters)
  • Disable PPU region patching during the menu
  • MSU1: Stop audio playback on reset (fixes static buzzing noise in games after soft-resetting out of an MSU1 game)
  • Cx4: Add a switch for original/fast mode. “Original” mimics the Cx4 timing better (Megaman doesn’t die in MMX2 attract mode) whereas “Fast” uses a single CPU cycle for every instruction, improving frame rate when drawing polygons (rotating head in MMX2 intro).
  • Hide dot files and directories again (Regression in 0.1.7).
  • “Stealth Mode” for in-game hook memory area hides the memory region used by in-game routines from games. (Fixes Equinox, Lion King)
  • In-game hooks are a bit less intrusive in terms of CPU time, hopefully reducing glitches a bit with problematic games.
  • System Information screen shows file system usage on card.
  • Slow down DSPx a bit to better match original speed (should have no noticeable effect)
  • Font height is reduced by one pixel to increase readability (lines of text are more distinguishable). This has an effect on the font style so some might not like it…? ๐Ÿ˜‰
  • Background is greyed out when a window is active in foreground
  • Menu now uses the dynamic hierarchical menu system, with automatic calculation of window dimensions, etc. Not much of it can be seen at the moment due to the lack of menu entries.
  • Experimental SRAM mapping for Cx4
  • FPGA: adjust address sampling time for “end-of-cycle” events. Should help primarily with DSP1 glitches.
  • MSU1: initial volume now adheres to the latest spec (initial volume = 0) so it must be initialized by software to the desired level. This actually breaks my own example player ๐Ÿ˜€ I will post an updated version of it shortly.
  • Text file based configuration. Allows you to change some settings while I procrastinate writing the config GUI ๐Ÿ˜› The following options are currently implemented (taken directly from the config file, sd2snes\config.yml, as generated by sd2snes, along with their default values):
    # Allow SuperCIC Pair Mode (required for video mode setting)
    PairModeAllowed: false
    
    # Video mode (0 = 60Hz, 1 = 50Hz, 2 = Auto (game only))
    VideoModeMenu: 0
    VideoModeGame: 2
    
    # Satellaview Settings
    #  BSXUseUsertime: use user defined time instead of real time
    #  BSXTime: user defined Satellaview broadcast time (format: YYYYMMDDhhmmss)
    BSXUseUsertime: true
    BSXTime: 19970301180530
    
    # Enable PPU region flag patching
    R213fOverride: true
    
    # IRQ hook related settings
    #  EnableIRQHook: Overall enable IRQ hooks (required for in-game buttons & WRAM cheats)
    #  EnableIRQButtons: Enable in-game buttons (en/disable cheats, reset sd2snes...)
    #  EnableIRQHoldoff: Enable 10s grace period after reset before enabling in-game hooks
    EnableIRQHook: true
    EnableIRQButtons: true
    EnableIRQHoldoff: true
    
    # Screensaver settings
    #  EnableScreensaver: Enable screensaver
    EnableScreensaver: true
    
    # UI related settings
    #  SortDirectories: Sort directories (slower but files are guaranteed to be in order)
    SortDirectories: true
    
    # Enhancement chip settings
    #  Cx4Speed: Cx4 core speed (0: original, 1: fast, all instructions are single cycle)
    Cx4Speed: 0
  • Text file based cheat support. Cheat files are expected in YAML format with the filename “sd2snes\Cheats\<romname>.yml“. Multiple codes per cheat are supported. The expected data structure is as shown in this example:
    ---
    - Name: Invincibility
       Code: "AAAA-AAAA" # this is an example GG code
      Enabled: True
    - Name: Infinite Money
      Code:
        - "7E0345AA" # this is an example PAR code
        - "809AB001" # and another one
      Enabled: False
    

    Cheats are applied immediately after loading a ROM (if they are enabled). 6 ROM patches and 26 RAM patches can be active simultaneously. Currently there is no sanity check so things probably won’t work correctly if you exceed these limits ๐Ÿ˜‰ At the moment sd2snes will re-write the cheat file every time it is loaded so its look will change after the first run. GameHacking can now export cheats in sd2snes format. Awesome!

  • Minor cosmetic changes.
 Posted by at 5:59 pm
Aug 092015
 

Short update: Things are dragging along a bitย as we moved house and our second son was born aย couple of weeks ago. ๐Ÿ™‚

A tech-savvy user built the current development tree of the sd2snes firmware and made a short demo video. Itย shows how a YAML file containing cheats is supplied and the cheats are in effect:

v0.1.7 preview 4 will be available in a couple of days. It will also feature a text-based configuration file so in-game hooks (and a couple of other things) can be configured via text file while I am working on the GUI. ๐Ÿ˜‰

 Posted by at 2:54 pm
Apr 292015
 

I’ve added Github commits & issues widgets to the sidebar so you can keep an eye on what I’m working on (or have just finished working on), in case you cannot be bothered to look at Github directly. ๐Ÿ˜‰ Of course I will keep posting a summary of changes whenever posting a new release.

Also it would be really really really helpful if you could report issues directly via Github, or at least check if your issue is already there before reporting again. I get many reports about the same issues, questions about when they will be fixed when I already replied to the question to somebody else elsewhere, etc. and I think this gets frustrating for both sides. My time is scarce as it is and I’d rather spend it developing than talking about the same thing over and over ๐Ÿ˜‰
Of course I cannot force anyone to sign up with Github. So if it’s absolutely unacceptable for you to do so you may still report via comments or contact form and I will open a Github issue about it myself. Just check with the issues page if your issue is already there before reporting. ๐Ÿ˜‰

Thanks!

 Posted by at 2:09 pm
Apr 292015
 

Site should be running normally again. I switched to HTTPS a while ago and the transition wasn’t so smooth. In the process a configuration change made the spam filter eat most comments. I’ve dug them out from the spam folder, hope I didn’t miss any. Sorry about it!
Preview 4 will be up shortly but it will mainly contain bug fixes and stability improvements. Squatted some bugs that had been reported in the meantime – some of them a bit tough.

 Posted by at 1:51 pm