\r
void YM2612Init_940(int baseclock, int rate)\r
{\r
+ static int oldrate;\r
+\r
+ // HACK\r
+ if (Pico.m.frame_count > 0 && !crashed_940 && rate == oldrate)\r
+ return;\r
+\r
printf("YM2612Init_940()\n");\r
printf("Mem usage: shared_data: %i, shared_ctl: %i\n", sizeof(*shared_data), sizeof(*shared_ctl));\r
\r
shared_ctl->baseclock = baseclock;\r
shared_ctl->rate = rate;\r
add_job_940(JOB940_INITALL);\r
+\r
+ oldrate = rate;\r
}\r
\r
\r
ym_active_chs = shared_ctl->ym_active_chs;\r
\r
// mix in ym buffer. is_buf_empty means nobody mixed there anything yet and it may contain trash\r
- if (is_buf_empty && ym_active_chs) memcpy32(buffer, ym_buf, length<<stereo);\r
+ if (is_buf_empty && ym_active_chs) memcpy(buffer, ym_buf, length << (stereo + 2));\r
else memset32(buffer, 0, length<<stereo);\r
\r
if (shared_ctl->writebuffsel == 1) {\r
writebuff_ptr = 0;\r
\r
/* predict sample counter for next frame */\r
- if (PsndLen_exc_add) {\r
- length = PsndLen;\r
- if (PsndLen_exc_cnt + PsndLen_exc_add >= 0x10000) length++;\r
+ if (Pico.snd.len_e_add) {\r
+ length = Pico.snd.len;\r
+ if (Pico.snd.len_e_cnt + Pico.snd.len_e_add >= 0x10000) length++;\r
}\r
\r
/* give 940 ym job */\r
\r
int mp3dec_decode(FILE *f, int *file_pos, int file_len)\r
{\r
- if (!(PicoOpt & POPT_EXT_FM)) {\r
+ if (!(PicoIn.opt & POPT_EXT_FM)) {\r
//mp3_update_local(buffer, length, stereo);\r
return 0;\r
}\r
\r
int mp3dec_start(FILE *f, int fpos_start)\r
{\r
- if (!(PicoOpt & POPT_EXT_FM)) {\r
+ if (!(PicoIn.opt & POPT_EXT_FM)) {\r
//mp3_start_play_local(f, pos);\r
return -1;\r
}\r
\r
if (loaded_mp3 != f)\r
{\r
- if (PicoMessage != NULL)\r
+ if (PicoIn.osdMessage != NULL)\r
{\r
fseek(f, 0, SEEK_END);\r
if (ftell(f) > 2*1024*1024)\r
- PicoMessage("Loading MP3...");\r
+ PicoIn.osdMessage("Loading MP3...");\r
}\r
fseek(f, 0, SEEK_SET);\r
fread(mp3_mem, 1, MP3_SIZE_MAX, f);\r