Browsed by
Month: August 2015

Firmware v0.1.7 preview 4

Firmware v0.1.7 preview 4

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.
sd2snes v0.1.7 cheat support preview

sd2snes v0.1.7 cheat support preview

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. 😉