diff options
author | Nebuleon Fumika | 2013-01-08 15:08:53 -0500 |
---|---|---|
committer | Nebuleon Fumika | 2013-01-08 15:08:53 -0500 |
commit | 4f9bd9449725a67dfb28c0e018c9bd33285faa3e (patch) | |
tree | ec91c6cd288a80e744a54035e1c7d78eac69be86 | |
parent | 12c5afbe60035f52da6ae33e853ea01fe075d06c (diff) | |
download | snesemu-4f9bd9449725a67dfb28c0e018c9bd33285faa3e.tar.gz snesemu-4f9bd9449725a67dfb28c0e018c9bd33285faa3e.tar.bz2 snesemu-4f9bd9449725a67dfb28c0e018c9bd33285faa3e.zip |
Configurable interrupt interval for the sound timer. Right now, only 22050 Hz audio at 2000-microsecond intervals works.
-rw-r--r-- | source/nds/ds2sound.h | 14 | ||||
-rw-r--r-- | source/nds/entry.cpp | 4 |
2 files changed, 10 insertions, 8 deletions
diff --git a/source/nds/ds2sound.h b/source/nds/ds2sound.h index 089afb6..b901939 100644 --- a/source/nds/ds2sound.h +++ b/source/nds/ds2sound.h @@ -1,12 +1,11 @@ // The sound buffer sizes used on the DS2's side, for each value of // Settings.SoundPlaybackRate. -#define DS2_BUFFER_SIZE_1 256 -#define DS2_BUFFER_SIZE_2 256 -#define DS2_BUFFER_SIZE_3 256 -#define DS2_BUFFER_SIZE_4 512 -#define DS2_BUFFER_SIZE_5 512 -#define DS2_BUFFER_SIZE_6 1024 -#define DS2_BUFFER_SIZE_7 1024 +#define DS2_BUFFER_SIZE_4 512 /* tested working */ +// Others don't work, or don't work well. + +// In microseconds. +#define INTERRUPT_TIME_4 2000 /* tested working */ +// Others don't work, or don't work well. // The sampling rate for the sound, in Hz, for each value of // Settings.SoundPlaybackRate. @@ -19,6 +18,7 @@ #define SND_SAMPLE_RATE_7 48000 // Settings in use. The number should match in all three settings. +#define INTERRUPT_TIME INTERRUPT_TIME_4 #define DS2_BUFFER_SIZE DS2_BUFFER_SIZE_4 #define SND_SAMPLE_RATE SND_SAMPLE_RATE_4 #define SNES9X_SRATE_ID 4 diff --git a/source/nds/entry.cpp b/source/nds/entry.cpp index f14c917..a666a0b 100644 --- a/source/nds/entry.cpp +++ b/source/nds/entry.cpp @@ -538,7 +538,7 @@ int sfc_main (int argc, char **argv) Settings.SoundBufferSize); // Start a timer for the sound initTimer(0 /* timer channel, 0 or 1 */, - 2000 /* period in microseconds */, + INTERRUPT_TIME /* period in microseconds */, NDSSFCProduceSound /* timer function, void (unsigned int) */, 0 /* programmer-specified argument to ^ */); runTimer(0 /* timer channel, 0 or 1 */); @@ -1157,6 +1157,8 @@ void NDSSFCProduceSound (unsigned int unused) /* All data sent. */ } + IsSoundGenerated = FALSE; + so.samples_mixed_so_far -= sample_count; } |