qzdoom-gpl/snes_spc/changes.txt
Randy Heit 3bfcc5c09c - Removed lots of spc_* cvars that are no longer meaningful and changed
spc_amp from a x.4 fixed point number to a normal float.
- Switched SPC playback from the external SNESAPU.DLL to Blargg's LGPL
  snes_spc library. I've compiled it with the fast DSP rather than the
  highly accurate one, since I didn't notice a meaningful difference between
  the two in my limited testing. In short: SPC playback is now built in to
  ZDoom. You don't need to download anything extra to make it work, and it
  also works on Linux as well as Windows (though building with Linux is
  currently untested).
- Fixed: Stereo separation was calculated very wrongly when in 2D sound mode.


SVN r794 (trunk)
2008-03-11 22:17:57 +00:00

107 lines
3.6 KiB
Text

snes_spc Change Log
-------------------
snes_spc 0.9.0
--------------
- Improved documentation
- SPC: Added spc_skip() function for quickly seeking in an SPC music
file. Runs 3-4x faster than normal playback using the fast DSP (or about
43-60X real-time on my 400 MHz Mac).
- SPC: Added spc_set_tempo() to change tempo of SPC music playback.
- SPC: Sample generation is now corrected to generate exactly one pair
of samples every 32 clocks without exception. Before it could generate a
few samples more or less depending on how far ahead or behind DSP was at
the moment.
- SPC: Changed spc_reset() and spc_soft_reset() to also reset output
buffer (see spc.h).
- SPC: Fixed minor timer counting bug.
- SPC: Stack pointer wrap-around is now emulated (and without any
noticeable performance hit).
- SPC: Runs about 5% faster due to various optimizations.
- SPC: Found way to make fast DSP register accesses cycle-accurate in
most cases, without reducing performance. Allows fast DSP to pass most
of my validation tests.
- DSP: Added surround disable support to fast DSP again.
- DSP: Improved voice un-muting to take effect immediately on fast DSP.
- DSP: Noise shift register now starts at 0x4000 instead of 0x4001 as it
incorrectly did before.
- Converted library to C++ code internally. A C interface is still
included in spc.h and dsp.h. Note that these are different than the
previous interface, so your code will require minor changes:
Old SPC code New SPC code
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include "spc/spc.h" #include "snes_spc/spc.h"
snes_spc_t* spc; SNES_SPC* spc;
spc = malloc( sizeof (snes_spc_t) ); spc = spc_new();
spc_init( spc );
spc_end_frame( time ); spc_end_frame( spc, time );
/* etc. */
/* done using SPC */ spc_delete( spc );
Old DSP code New DSP code
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include "spc/spc_dsp.h" #include "snes_spc/dsp.h"
spc_dsp_init( ram ); SPC_DSP* dsp;
dsp = spc_dsp_new();
spc_dsp_init( dsp, ram );
spc_dsp_run( count ); spc_dsp_run( dsp, count );
/* etc. */
/* done using DSP */ spc_dsp_delete( dsp );
snes_spc 0.8.0
--------------
- Added several demos
- Added high-pass/low-pass filter to better match SNES sound
- Added save state functionality for SPC and accurate DSP (but not fast
DSP)
- Added emulation of reset switch on NES (soft reset)
- Made source more compatible with pre-C99 compilers by eliminating
mid-block declarations
- SPC: Many S-SMP accuracy improvements, mostly in memory access times
- SPC: S-SMP speed improvements
- SPC: Added SPC load/save functions and KON checking to help trim
silence from beginning
- SPC: Changed spc_init() to have you allocate most of the memory used
by the library so you have more control over it
- DSP: New highly accurate DSP and faster version derived from same code
- DSP: Changed prefix from dsp_ to spc_dsp_. Your DSP code will require
changes.
- DSP: Removed surround disable and gain. Gain can now be done with the
dsp_filter module, and surround disable will probably only be
implemented in the fast DSP at some point.
- DSP: Changed interface to work in clocks rather than samples,
necessary for the new accurate DSP. Sample output is now done with
separate functions. Your DSP code will require changes.