improve cue handling a bit
[picodrive.git] / pico / sound / sound.c
index 48ad409..236a483 100644 (file)
@@ -1,19 +1,22 @@
-// This is part of Pico Library\r
-\r
-// (c) Copyright 2004 Dave, All rights reserved.\r
-// (c) Copyright 2006,2007 notaz, All rights reserved.\r
-// Free for non-commercial use.\r
-\r
-// For commercial use, separate licencing terms must be obtained.\r
-\r
+/*\r
+ * PicoDrive\r
+ * (c) Copyright Dave, 2004\r
+ * (C) notaz, 2006-2009\r
+ *\r
+ * This work is licensed under the terms of MAME license.\r
+ * See COPYING file in the top-level directory.\r
+ */\r
 \r
 #include <string.h>\r
 #include "ym2612.h"\r
 #include "sn76496.h"\r
 #include "../pico_int.h"\r
 #include "../cd/pcm.h"\r
+#include "../cd/cue.h"\r
 #include "mix.h"\r
 \r
+#define SIMPLE_WRITE_SOUND 0\r
+\r
 void (*PsndMix_32_to_16l)(short *dest, int *src, int count) = mix_32_to_16l_stereo;\r
 \r
 // master int buffer to mix to\r
@@ -181,6 +184,9 @@ PICO_INTERNAL void PsndDoDAC(int line_to)
   int dout = ym2612.dacout;\r
   int line_from = PsndDacLine;\r
 \r
+  if (line_to >= 312)\r
+    line_to = 311;\r
+\r
   PsndDacLine = line_to + 1;\r
 \r
   pos =dac_info[line_from]>>4;\r
@@ -255,7 +261,7 @@ PICO_INTERNAL void cdda_start_play(void)
     return;\r
   }\r
 \r
-  if (Pico_mcd->TOC.Tracks[i].ftype == TYPE_MP3)\r
+  if (Pico_mcd->TOC.Tracks[i].ftype == CT_MP3)\r
   {\r
     int pos1024 = 0;\r
 \r
@@ -275,7 +281,7 @@ 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
+  if (Pico_mcd->TOC.Tracks[i].ftype == CT_WAV)\r
   {\r
     // skip headers, assume it's 44kHz stereo uncompressed\r
     pm_seek(cdda_stream, 44, SEEK_CUR);\r
@@ -353,7 +359,7 @@ static int PsndRender(int offset, int length)
     // note: only 44, 22 and 11 kHz supported, with forced stereo\r
     int index = Pico_mcd->scd.Cur_Track - 1;\r
 \r
-    if (Pico_mcd->TOC.Tracks[index].ftype == TYPE_MP3)\r
+    if (Pico_mcd->TOC.Tracks[index].ftype == CT_MP3)\r
       mp3_update(buf32, length, stereo);\r
     else\r
       cdda_raw_update(buf32, length);\r