int MDSound_Init(void) { MDSound_SetSoundRate(0); zebuf.clock_rate((long)(CLOCK_NTSC / 15)); FMUnit.set_rate(); RedoVolume(); zebuf.bass_freq(20); return(1); }
static void Emulate(EmulateSpecStruct *espec) { MDFNMP_ApplyPeriodicCheats(); MDIO_BeginTimePeriod(md_timestamp); MDINPUT_Frame(); if(espec->VideoFormatChanged) MainVDP.SetPixelFormat(espec->surface->format); //.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); if(espec->SoundFormatChanged) MDSound_SetSoundRate(espec->SoundRate); MainVDP.SetSurface(espec); //espec->surface, &espec->DisplayRect); system_frame(0); espec->MasterCycles = md_timestamp; espec->SoundBufSize = MDSound_Flush(espec->SoundBuf, espec->SoundBufMaxSize); #if 0 { static double avg = 0; static double s_avg = 0; avg += (espec->MasterCycles - avg) * 0.05; s_avg += (espec->SoundBufSize - s_avg) * 0.05; printf("%f, %f\n", avg / 262 / 10, 48000 / s_avg); } #endif MDIO_EndTimePeriod(md_timestamp); md_timestamp = 0; z80_last_ts = 0; Main68K.timestamp = 0; MainVDP.ResetTS(); //MainVDP.SetSurface(NULL); }