1use ymfm_sys::ffi::{self, ChipType};
2
3fn exercise_chip(chip_type: ChipType) {
4 let mut chip = ffi::create_chip(chip_type, 8_000_000);
5
6 chip.pin_mut().reset();
7
8 let saved = chip.pin_mut().save_state();
9 assert!(!saved.is_empty());
10 chip.pin_mut().restore_state(&saved);
11
12 chip.pin_mut().read(0);
13 chip.pin_mut().write(0, 0);
14
15 let channels = chip.channels() as usize;
16 let mut samples = vec![0_i32; channels * 20];
17 chip.pin_mut().generate(&mut samples);
18}
19
20fn main() {
21 let chip_types = [
22 ChipType::Ym2149,
23 ChipType::Ym2151,
24 ChipType::Ym2203,
25 ChipType::Ym2164,
26 ChipType::Ym2413,
27 ChipType::Ym2414,
28 ChipType::Ym2423,
29 ChipType::Ym2608,
30 ChipType::Ym2610,
31 ChipType::Ym2610B,
32 ChipType::Ym2612,
33 ChipType::Ym3526,
34 ChipType::Ym3438,
35 ChipType::Ymf276,
36 ChipType::Y8950,
37 ChipType::Ym3533,
38 ChipType::Ym3812,
39 ChipType::Ymf262,
40 ChipType::Ymf278B,
41 ChipType::Ymf281,
42 ChipType::Ymf289B,
43 ChipType::Ym3806,
44 ChipType::Ymf288,
45 ChipType::Ds1001,
46 ];
47
48 for chip_type in chip_types {
49 exercise_chip(chip_type);
50 }
51
52 println!("Done");
53}