Overview | News | Windows | macOS | Android | iOS | Audio Formats | Components | Encoder Pack | Screenshots | Help & Support | Developer | Old Versions | Other Projects | Blog & Rants
SSF/DSF Decoder
By: oops
foo_input_ssf is a decoder component that adds playback support for SSF, DSF, DCSF, miniSSF, miniDSF and miniDCSF files ripped from Sega Saturn and Sega Dreamcast discs to foobar2000.
It is based on foo_input_ht by Christopher Snowhill (kode54).
It uses the Saturn and Dreamcast Sound Emulator Library (Highly_Theoretical) by Neill Corlett and the PSF Parser Library (PSFlib). The Motorola 68000 (Saturn sound CPU) emulator is Musashi by Karl Stenerud which uses the SoftFloat Floating-Point Library by John R. Hauser as its floating-point unit (FPU).
SSF/DSF soundtracks can be distributed as a single ".ssf"/".dsf"/".dcsf" file per song (with a lot of redundant data) or as a set of ".minissf"/".minidsf"/".minidcsf" and ".ssflib"/".dsflib"/".dcsflib" files, where all redundant data is stored together in a single ".ssflib"/".dsflib"/".dcsflib" file and the data unique to each song is stored in the ".minissf"/".minidsf"/".minidcsf" files.
Features
It is based on foo_input_ht by Christopher Snowhill (kode54).
It uses the Saturn and Dreamcast Sound Emulator Library (Highly_Theoretical) by Neill Corlett and the PSF Parser Library (PSFlib). The Motorola 68000 (Saturn sound CPU) emulator is Musashi by Karl Stenerud which uses the SoftFloat Floating-Point Library by John R. Hauser as its floating-point unit (FPU).
SSF/DSF soundtracks can be distributed as a single ".ssf"/".dsf"/".dcsf" file per song (with a lot of redundant data) or as a set of ".minissf"/".minidsf"/".minidcsf" and ".ssflib"/".dsflib"/".dcsflib" files, where all redundant data is stored together in a single ".ssflib"/".dsflib"/".dcsflib" file and the data unique to each song is stored in the ".minissf"/".minidsf"/".minidcsf" files.
Features
- Decodes music files from the Sega Saturn and Sega Dreamcast consoles, ripped to the SSF, DSF, DCSF, miniSSF, miniDSF and miniDCSF formats.
- Recognizes the ".ssf"/".minissf" (Saturn) and ".dsf"/".minidsf" (Dreamcast) extensions, plus the alternate ".dcsf"/".minidcsf" extension for Dreamcast. Handling of the bare ".dsf" extension is controlled by an Enable ".dsf" extension preference (enabled by default) so it can be turned off to leave ".dsf" to a DSD Stream File (DSD audio) decoder, which uses the same extension.
- Supports dark mode for its Preferences page and configuration dialogs.
- The DSP dynamic recompiler is only available in 32-bit x86 (Win32) builds; it emits raw 32-bit x86 machine code. 64-bit x86 and ARM64EC use the DSP interpreter.
- Includes 32-bit and 64-bit x86 component variants as well as ARM64EC.
- Tested on foobar2000 v2.25.10 (x86 64-bit) and Microsoft Windows 11 (Build 26200).
- Requires Windows 10 or later.
Current version: 2.1.0, released on 2026-07-26
Change log:
Changelog relative to foo_input_ht 2.0.53:
- Enable x64 build and playback
- Enable ARM64EC build and playback
-
Refactor `input_xsf` decoder and inline tag handling
- Extract Preferences page and `cfg_*` variables into "preferences.cpp/h"
- Extract context menu entry and time/fade dialog into "context.cpp"
- Extract time and tag utilities into "utility.cpp/h"
- Extract DLL entry module into "dllmain.cpp"
-
Update Preferences page dialog and controls
- Add dark mode support to the Preferences page and to the time/fade dialog
- Replace circular buffer
- Replace deprecated SDK functionality
-
Add more info and metadata tags
- Add "date" file information formatting option
- Replace "magic numbers" with constant expressions
- Rethrow original exception on loader cleanup
- Use `m_`-prefixed names for `input_xsf` decoder's data member variables
- Guard against out-of-range reads and invalid state
- Lower console message verbosity
- Update highly_theoretical emulator core to 2ddfa0e
-
Update Musashi Motorola 680x0 emulator to 4.60 (313ebf1); used for all builds
- Migrate Musashi 68k FPU from SoftFloat Release 2b to 3e
- Serialize access to Musashi's global CPU context (`m68ki_cpu`) to prevent concurrent-decode crash
- Update psflib to 8c7d5fb
- Update zlib to 1.3.2
- Update WTL to 10.01
- Update foobar2000 SDK to 2025-03-07
- Update to v145 platform toolset
- Update Windows 11 SDK to 10.0.28000.2114
- Update README
Supported systems: Windows 32-bit, Windows 64-bit, Windows ARM.
Works with foobar2000 v2.0 and newer.
Works on Windows 10 and newer.
Links
View version history
Documentation
Discussion
More components
Browse all
Browse by author: oops
Tags: decoder, game music, Sega Dreamcast, Sega Saturn