Exemple #1
0
/* Run FM chip for required M-cycles */
INLINE void fm_update(unsigned int cycles)
{
    if (cycles > fm_cycles_count)
    {
        int32 *buffer;

        /* samples to run */
        unsigned int samples = (cycles - fm_cycles_count + fm_cycles_ratio - 1) / fm_cycles_ratio;

        /* update cycle count */
        fm_cycles_count += samples * fm_cycles_ratio;

        /* select input sample buffer */
        buffer = Fir_Resampler_buffer();
        if (buffer)
        {
            Fir_Resampler_write(samples << 1);
        }
        else
        {
            buffer = snd.fm.pos;
            snd.fm.pos += (samples << 1);
        }

        /* run FM chip & get samples */
        YM_Update(buffer, samples);
    }
}
Exemple #2
0
/* Run FM chip until required M-cycles */
INLINE void fm_update(unsigned int cycles)
{
    if (cycles > fm_cycles_count)
    {
        /* number of samples to run */
        unsigned int samples = (cycles - fm_cycles_count + fm_cycles_ratio - 1) / fm_cycles_ratio;

        /* run FM chip to sample buffer */
        YM_Update(fm_ptr, samples);

        /* update FM buffer pointer */
        fm_ptr += (samples << 1);

        /* update FM cycle counter */
        fm_cycles_count += samples * fm_cycles_ratio;
    }
}