# HG changeset patch # User Matti Hamalainen # Date 1363364310 -7200 # Node ID e5603b03732bcd9e3ab3bf6b1cdd85dea2fd5833 # Parent 2663b7bb23b92430d72b1962fd39258c878e8aee Some more work. diff -r 2663b7bb23b9 -r e5603b03732b 3x666.c --- a/3x666.c Fri Mar 15 17:57:09 2013 +0200 +++ b/3x666.c Fri Mar 15 18:18:30 2013 +0200 @@ -29,6 +29,7 @@ BOOL exitFlag; + Sint16 *mixBuf; int optVFlags; SDL_Surface *screen; SDL_Event event; @@ -424,7 +425,7 @@ 22, 17, 17, 22 }; -signed int *drum0, *drum1; +int *drum0, *drum1; /* sampling sucks! */ @@ -441,20 +442,13 @@ for (i = drumlgt; i; i--) { - int u; - o = (o >> 1) + (rand() % vol) - (rand() % vol); oo = (oo * 2 + ((rand() % vol) - (rand() % vol))) / 3; o *= sin(a); oo *= sin(a); - u = o * 2; - if (u < -65535) - u = -65535; - if (u > 65535) - u = 65535; - *d++ = (vol * sin((a / 2) + ((float) u) / 80000)); + *d++ = (vol * sin((a / 2) + ((float) dmClamp(o * 2, -65535, 65535)) / 80000)); *e++ = (vol * sin(a + ((float) oo) / 60000)); a += da; @@ -464,21 +458,15 @@ } -static void engineAudioCallback(void *userdata, Uint8 *stream, int len) +static int engineRenderAudio(Sint16 *stream) { -#if 0 - (void) userdata; static int rowno = 0; static signed int delta = -5; static char ismelody = 0, silend = 0; - - int rowlgt = engine.tickLen * SET_ROWTIX, i; - int *d = mxbuf, note; + int i, rowlgt = engine.tickLen * SET_ROWTIX; + Sint16 *d = stream, note; /* BASS (sawtooth ofcoz) */ - - *d++ = rowlgt; - note = basstrak[(rowno >> 1) & 31]; if (!note) @@ -497,7 +485,7 @@ dps = ((noterate[note] << 10) / SET_AUDIO_FREQ); for (i = rowlgt; i; i--) { - *d++ = ps; + *d++ = dmClamp(ps, -32767, 32767); ps = (ps + dps) & 32767; } } @@ -513,7 +501,7 @@ { if (ismelody) { - d = mxbuf + 1; + d = (Sint16 *) stream; if (rowno & 1) note = 0; else @@ -525,7 +513,7 @@ dps = ((noterate[note] << 12) / engine.optAfmt.freq); for (i = rowlgt; i; i--) { - *d++ += ps; + *d++ = dmClamp(ps, -32767, 32767); ps = (ps + dps) & 32767; } } @@ -534,7 +522,7 @@ /* DRUMS (rave on!!!) */ { int *s = drum1; - d = mxbuf + 1; + d = (Sint16 *) stream; if (rowno & 4) s = drum0; s += (rowno & 3) * rowlgt; @@ -571,9 +559,16 @@ } } -// if (engine.dev != NULL) -// jvmRenderAudio(engine.dev, stream, len / jvmGetSampleSize(engine.dev)); -#endif + return rowlgt; +} + + + +static void engineAudioCallback(void *userdata, Uint8 *stream, int len) +{ + (void) userdata; + int slen = len / sizeof(Sint16); + } @@ -910,6 +905,7 @@ initSDL = TRUE; // Initialize audio parts + engine.mixBuf = malloc((1 + SET_MAXROWLGT) * sizeof(Sint16)); engine.optAfmt.freq = SET_AUDIO_FREQ; engine.optAfmt.format = AUDIO_S16SYS; engine.optAfmt.channels = SET_AUDIO_CHN; diff -r 2663b7bb23b9 -r e5603b03732b config.h --- a/config.h Fri Mar 15 17:57:09 2013 +0200 +++ b/config.h Fri Mar 15 18:18:30 2013 +0200 @@ -16,4 +16,4 @@ // Maybe these shouldn't be here #define SET_ROWTIX 6 -#define SET_MAXROWLGT (TIKLGT * SET_ROWTIX) +#define SET_MAXROWLGT (engine.tickLen * SET_ROWTIX)