diff options
author | Franklin Wei <git@fwei.tk> | 2018-01-05 17:25:03 -0500 |
---|---|---|
committer | Franklin Wei <git@fwei.tk> | 2018-01-15 19:45:28 -0500 |
commit | cf07bb328deb71cf2dc602f435b5340b0b55a2e5 (patch) | |
tree | e90dc67756cedabb0e857ad2f44309791a92e38b /apps/plugins/sdl/progs/duke3d/Engine/src | |
parent | 69ff35ac497abddd0559412f82682d717888eb03 (diff) | |
download | rockbox-cf07bb328deb71cf2dc602f435b5340b0b55a2e5.tar.gz rockbox-cf07bb328deb71cf2dc602f435b5340b0b55a2e5.zip |
duke3d: further optimize audio mixing
Rather than holding intermediate results as fixed-point, this converts them
directly to normal integers (in the range of the PCM sample) while mixing,
instead of waiting till the end to perform a separate shifting step. Also,
this precalculates some constants in the reverb code.
Change-Id: Ie04e444d145bc28ce67eef9ae0ead6d328acf28a
Diffstat (limited to 'apps/plugins/sdl/progs/duke3d/Engine/src')
-rw-r--r-- | apps/plugins/sdl/progs/duke3d/Engine/src/display.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/apps/plugins/sdl/progs/duke3d/Engine/src/display.c b/apps/plugins/sdl/progs/duke3d/Engine/src/display.c index 3883803bce..501ffa411c 100644 --- a/apps/plugins/sdl/progs/duke3d/Engine/src/display.c +++ b/apps/plugins/sdl/progs/duke3d/Engine/src/display.c | |||
@@ -1368,9 +1368,13 @@ int VBE_setPalette(uint8_t *palettebuffer) | |||
1368 | memcpy(lastPalette, palettebuffer, 768); | 1368 | memcpy(lastPalette, palettebuffer, 768); |
1369 | 1369 | ||
1370 | for (i = 0; i < 256; i++){ | 1370 | for (i = 0; i < 256; i++){ |
1371 | sdlp->b = (Uint8) ((((float) *p++) / 63.0) * 255.0); | 1371 | /* doesn't map perfectly */ |
1372 | sdlp->g = (Uint8) ((((float) *p++) / 63.0) * 255.0); | 1372 | sdlp->b = (Uint8) (*p << 2) | (*p >> 4); |
1373 | sdlp->r = (Uint8) ((((float) *p++) / 63.0) * 255.0); | 1373 | p++; |
1374 | sdlp->g = (Uint8) (*p << 2) | (*p >> 4); | ||
1375 | p++; | ||
1376 | sdlp->r = (Uint8) (*p << 2) | (*p >> 4); | ||
1377 | p++; | ||
1374 | sdlp->unused = *p++; /* This byte is unused in BUILD, too. */ | 1378 | sdlp->unused = *p++; /* This byte is unused in BUILD, too. */ |
1375 | sdlp++; | 1379 | sdlp++; |
1376 | } | 1380 | } |