ymfm-sys 0.1.0

Rust bindings to the ymfm FM sound chip emulation library
Documentation
use ymfm_sys::ffi::{self, ChipType};

fn exercise_chip(chip_type: ChipType) {
    let mut chip = ffi::create_chip(chip_type, 8_000_000);

    chip.pin_mut().reset();

    let saved = chip.pin_mut().save_state();
    assert!(!saved.is_empty());
    chip.pin_mut().restore_state(&saved);

    chip.pin_mut().read(0);
    chip.pin_mut().write(0, 0);

    let channels = chip.channels() as usize;
    let mut samples = vec![0_i32; channels * 20];
    chip.pin_mut().generate(&mut samples);
}

fn main() {
    let chip_types = [
        ChipType::Ym2149,
        ChipType::Ym2151,
        ChipType::Ym2203,
        ChipType::Ym2164,
        ChipType::Ym2413,
        ChipType::Ym2414,
        ChipType::Ym2423,
        ChipType::Ym2608,
        ChipType::Ym2610,
        ChipType::Ym2610B,
        ChipType::Ym2612,
        ChipType::Ym3526,
        ChipType::Ym3438,
        ChipType::Ymf276,
        ChipType::Y8950,
        ChipType::Ym3533,
        ChipType::Ym3812,
        ChipType::Ymf262,
        ChipType::Ymf278B,
        ChipType::Ymf281,
        ChipType::Ymf289B,
        ChipType::Ym3806,
        ChipType::Ymf288,
        ChipType::Ds1001,
    ];

    for chip_type in chip_types {
        exercise_chip(chip_type);
    }

    println!("Done");
}