X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fsound%2Fsound.c;h=68106bc3ba17a30aaedf309606300c3fe9d3e413;hb=b5e5172d049a83251874fb33e65a53c9654dc0bc;hp=f43252ffd7757117a5c3ac02611f854ce4d124b2;hpb=c5b61ac25d64d5fb1e8d825e6b44c6c50b05ab34;p=picodrive.git diff --git a/Pico/sound/sound.c b/Pico/sound/sound.c index f43252f..68106bc 100644 --- a/Pico/sound/sound.c +++ b/Pico/sound/sound.c @@ -220,8 +220,14 @@ PICO_INTERNAL void PsndClear(void) { int len = PsndLen; if (PsndLen_exc_add) len++; - if (PicoOpt & 8) memset32((int *) PsndOut, 0, len); // clear both channels at once - else memset(PsndOut, 0, len<<1); + if (PicoOpt & 8) + memset32((int *) PsndOut, 0, len); // assume PsndOut to be aligned + else { + short *out = PsndOut; + if ((int)out & 2) { *out++ = 0; len--; } + memset32((int *) out, 0, len/2); + if (len & 1) out[len-1] = 0; + } }