From 1beb671de1d39964ad3453e28fd48a117046a8cb Mon Sep 17 00:00:00 2001 From: Nebuleon Fumika Date: Tue, 8 Jan 2013 15:04:53 -0500 Subject: Configurable interrupt interval for the sound timer. Right now, only 22050 Hz audio at 2000-microsecond intervals works. --- Makefile | 3 ++- source/nds/ds2sound.h | 14 +++++++------- source/nds/entry.cpp | 4 +++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 0642bf7..ed21eca 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,8 @@ CFLAGS := -mips32 -mno-abicalls -fno-pic -fno-builtin \ DEFS := -DSPC700_C -DEXECUTE_SUPERFX_PER_LINE -DSDD1_DECOMP \ -DVAR_CYCLES -DCPU_SHUTDOWN -DSPC700_SHUTDOWN \ -DNO_INLINE_SET_GET -DNOASM -DHAVE_MKSTEMP '-DACCEPT_SIZE_T=size_t' \ - -DUNZIP_SUPPORT -DSYNC_JOYPAD_AT_HBLANK + -DUNZIP_SUPPORT -DNO_OPEN_BUS +# -DSYNC_JOYPAD_AT_HBLANK .PHONY: clean makedirs .SUFFIXES: .elf .dat .plg 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; } -- cgit v1.2.3