]> Chaos Git - corbenik/ctrulib.git/commitdiff
Fixed broken CSND_playsound() code for looping(use vaddr1 for that instead of vaddr0...
authoryellows8 <yellows8@users.noreply.github.com>
Sat, 6 Sep 2014 21:49:48 +0000 (17:49 -0400)
committeryellows8 <yellows8@users.noreply.github.com>
Sat, 6 Sep 2014 21:49:48 +0000 (17:49 -0400)
libctru/source/services/csnd.c

index 9eb11bb50ce795b65810e0afec5b4e595dd3f936..77b1686fcb4024a1662ad8465fbcba0cf1b9cd8f 100644 (file)
@@ -285,7 +285,11 @@ Result CSND_playsound(u32 channel, u32 looping, u32 encoding, u32 samplerate, u3
 
        CSND_sharedmemtype0_cmde(channel, looping, encoding, samplerate, unk0, unk1, physaddr0, physaddr1, totalbytesize);
        CSND_sharedmemtype0_cmd8(channel, samplerate);
-       if(looping)CSND_sharedmemtype0_cmd3(channel, physaddr0, totalbytesize);
+       if(looping)
+       {
+               if(physaddr1>physaddr0)totalbytesize-= (u32)physaddr1 - (u32)physaddr0;
+               CSND_sharedmemtype0_cmd3(channel, physaddr1, totalbytesize);
+       }
        CSND_sharedmemtype0_cmd8(channel, samplerate);
        CSND_sharedmemtype0_cmd9(channel, 0xffff);
        CSND_setchannel_playbackstate(channel, 1);