#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
void *state = NULL;\r
int target_fps = Pico.m.pal ? 50 : 60;\r
\r
- // not all rates are supported in MCD mode due to mp3 decoder limitations\r
- if (PicoAHW & PAHW_MCD) {\r
- if (!(11025-100 <= PsndRate && PsndRate <= 11025+100) &&\r
- !(22050-100 <= PsndRate && PsndRate <= 22050+100) &&\r
- !(44100-100 <= PsndRate && PsndRate <= 44100+100))\r
- PsndRate = 22050;\r
- PicoOpt |= POPT_EN_STEREO; // force stereo\r
- }\r
-\r
if (preserve_state) {\r
state = malloc(0x204);\r
if (state == NULL) return;\r
// recalculate dac info\r
dac_recalculate();\r
\r
- if (PicoAHW & PAHW_MCD)\r
- pcm_set_rate(PsndRate);\r
-\r
// clear all buffers\r
memset32(PsndBuffer, 0, sizeof(PsndBuffer)/4);\r
memset(cdda_out_buffer, 0, sizeof(cdda_out_buffer));\r
short *d = PsndOut + pos;\r
for (; len > 0; len--, d++) *d = dout;\r
}\r
-\r
-#if 0\r
- if (do_pcm) {\r
- int *d = PsndBuffer;\r
- d += (PicoOpt&8) ? pos*2 : pos;\r
- pcm_update(d, len, 1);\r
- }\r
-#endif\r
}\r
\r
// cdda\r
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
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
int buf32_updated = 0;\r
int *buf32 = PsndBuffer+offset;\r
int stereo = (PicoOpt & 8) >> 3;\r
- // emulating CD && PCM option enabled && PCM chip on && have enabled channels\r
- int do_pcm = (PicoAHW & PAHW_MCD) && (PicoOpt&POPT_EN_MCD_PCM) &&\r
- (Pico_mcd->pcm.control & 0x80) && Pico_mcd->pcm.enabled;\r
+\r
offset <<= stereo;\r
\r
pprof_start(sound);\r
(void)buf32_updated;\r
\r
// CD: PCM sound\r
- if (do_pcm) {\r
- pcm_update(buf32, length, stereo);\r
+ if (PicoAHW & PAHW_MCD) {\r
+ pcd_pcm_update(buf32, length, stereo);\r
//buf32_updated = 1;\r
}\r
\r
// 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