rlm@0: snes_spc 0.9.0: SNES SPC-700 APU Emulator rlm@0: ----------------------------------------- rlm@0: This library includes a full SPC emulator and an S-DSP emulator that can rlm@0: be used on its own. Two S-DSP emulators are available: a highly accurate rlm@0: one for use in a SNES emulator, and a 3x faster one for use in an SPC rlm@0: music player or a resource-limited SNES emulator. rlm@0: rlm@0: * Can be used from C and C++ code rlm@0: * Full SPC-700 APU emulator with cycle accuracy in most cases rlm@0: * Loads, plays, and saves SPC music files rlm@0: * Can save and load exact full emulator state rlm@0: * DSP voice muting, surround sound disable, and song tempo adjustment rlm@0: * Uses 7% CPU average on 400 MHz Mac to play an SPC using fast DSP rlm@0: rlm@0: The accurate DSP emulator is based on past research by others and rlm@0: hundreds of hours of recent research by me. It passes over a hundred rlm@0: strenuous timing and behavior validation tests that were also run on the rlm@0: SNES. As far as I know, it's the first DSP emulator with cycle accuracy, rlm@0: properly emulating every DSP register and memory access at the exact SPC rlm@0: cycle it occurs at, whereas previous DSP emulators emulated these only rlm@0: to the nearest sample (which occurs every 32 clocks). rlm@0: rlm@0: Author : Shay Green rlm@0: Website: http://www.slack.net/~ant/ rlm@0: Forum : http://groups.google.com/group/blargg-sound-libs rlm@0: License: GNU Lesser General Public License (LGPL) rlm@0: rlm@0: rlm@0: Getting Started rlm@0: --------------- rlm@0: Build a program consisting of demo/play_spc.c, demo/demo_util.c, rlm@0: demo/wave_writer.c, and all source files in snes_spc/. Put an SPC music rlm@0: file in the same directory and name it "test.spc". Running the program rlm@0: should generate the recording "out.wav". rlm@0: rlm@0: Read snes_spc.txt for more information. Post to the discussion forum for rlm@0: assistance. rlm@0: rlm@0: rlm@0: Files rlm@0: ----- rlm@0: snes_spc.txt Documentation rlm@0: changes.txt Change log rlm@0: license.txt GNU LGPL license rlm@0: rlm@0: demo/ rlm@0: play_spc.c Records SPC file to wave sound file rlm@0: benchmark.c Finds how fast emulator runs on your computer rlm@0: trim_spc.c Trims silence off beginning of an SPC file rlm@0: save_state.c Saves/loads exact emulator state to/from file rlm@0: comm.c Communicates with SPC how SNES would rlm@0: demo_util.h General utility functions used by demos rlm@0: demo_util.c rlm@0: wave_writer.h WAVE sound file writer used for demo output rlm@0: wave_writer.c rlm@0: rlm@0: fast_dsp/ Optional standalone fast DSP emulator rlm@0: SPC_DSP.h To use with full SPC emulator, move into rlm@0: SPC_DSP.cpp snes_spc/ and replace original files rlm@0: rlm@0: snes_spc/ Library sources rlm@0: blargg_config.h Configuration (modify as necessary) rlm@0: rlm@0: spc.h C interface to SPC emulator and sound filter rlm@0: spc.cpp rlm@0: rlm@0: SPC_Filter.h Optional filter to make sound more authentic rlm@0: SPC_Filter.cpp rlm@0: rlm@0: SNES_SPC.h Full SPC emulator rlm@0: SNES_SPC.cpp rlm@0: SNES_SPC_misc.cpp rlm@0: SNES_SPC_state.cpp rlm@0: SPC_CPU.h rlm@0: rlm@0: dsp.h C interface to DSP emulator rlm@0: dsp.cpp rlm@0: rlm@0: SPC_DSP.h Standalone accurate DSP emulator rlm@0: SPC_DSP.cpp rlm@0: blargg_common.h rlm@0: blargg_endian.h rlm@0: blargg_source.h rlm@0: rlm@0: -- rlm@0: Shay Green