win32 Pico mostly finished
[picodrive.git] / Pico / sound / sound.c
index c39d0c1..1d6c168 100644 (file)
@@ -158,6 +158,9 @@ void PsndRerate(int preserve_state)
 \r
   // set mixer\r
   PsndMix_32_to_16l = (PicoOpt & POPT_EN_STEREO) ? mix_32_to_16l_stereo : mix_32_to_16_mono;\r
+\r
+  if (PicoAHW & PAHW_PICO)\r
+    PicoReratePico();\r
 }\r
 \r
 \r
@@ -278,6 +281,11 @@ PICO_INTERNAL void cdda_start_play(void)
   cdda_stream = Pico_mcd->TOC.Tracks[i].F;\r
   PicoCDBufferFlush(); // buffering relies on fp not being touched\r
   pm_seek(cdda_stream, lba_offset * 2352, SEEK_SET);\r
+  if (Pico_mcd->TOC.Tracks[i].ftype == TYPE_WAV)\r
+  {\r
+    // skip headers, assume it's 44kHz stereo uncompressed\r
+    pm_seek(cdda_stream, 44, SEEK_CUR);\r
+  }\r
 }\r
 \r
 \r
@@ -321,6 +329,11 @@ PICO_INTERNAL int PsndRender(int offset, int length)
   if (PicoOpt & POPT_EN_PSG)\r
     SN76496Update(PsndOut+offset, length, stereo);\r
 \r
+  if (PicoAHW & PAHW_PICO) {\r
+    PicoPicoPCMUpdate(PsndOut+offset, length, stereo);\r
+    return length;\r
+  }\r
+\r
   // Add in the stereo FM buffer\r
   if (PicoOpt & POPT_EN_FM) {\r
     buf32_updated = YM2612UpdateOne(buf32, length, stereo, 1);\r