2 Common Source Code Project
3 MSX Series (experimental)
8 [ Sound Manager for Cartridge ]
11 #include "sound_cart.h"
15 SOUND_CART::SOUND_CART(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
17 d_chip[SOUND_CHIP_SCC] = new SCC(parent_vm, parent_emu);
18 enable_chip[SOUND_CHIP_SCC] = false;
19 set_device_name(_T("Sound Cartridge"));
22 void SOUND_CART::disable_all()
25 for(i=0; i<=SOUND_CHIP_MAX; i++) {
26 this->enable_c(i, false);
30 void SOUND_CART::enable_c(int chip, bool enable)
32 if (enable_chip[chip] != enable) {
33 d_chip[chip]->reset();
34 enable_chip[chip] = enable;
38 void SOUND_CART::write_io8_c(int chip, uint32_t addr, uint32_t data)
40 d_chip[chip]->write_io8(addr, data);
43 uint32_t SOUND_CART::read_io8_c(int chip, uint32_t addr)
45 return d_chip[chip]->read_io8(addr);
48 void SOUND_CART::write_data8_c(int chip, uint32_t addr, uint32_t data)
50 d_chip[chip]->write_data8(addr, data);
53 uint32_t SOUND_CART::read_data8_c(int chip, uint32_t addr)
55 return d_chip[chip]->read_data8(addr);
58 void SOUND_CART::initialize()
61 for(i=0; i<=SOUND_CHIP_MAX; i++) {
62 d_chip[i]->initialize();
66 void SOUND_CART::release()
69 for(i=0; i<=SOUND_CHIP_MAX; i++) {
71 enable_chip[i] = false;
75 void SOUND_CART::reset()
78 for(i=0; i<=SOUND_CHIP_MAX; i++) {
83 void SOUND_CART::mix(int32_t* buffer, int cnt)
86 for(i=0; i<=SOUND_CHIP_MAX; i++) {
88 d_chip[i]->mix(buffer, cnt);
93 void SOUND_CART::initialize_sound(int rate, int clock, int samples)
95 ((SCC*)d_chip[SOUND_CHIP_SCC])->initialize_sound(rate, clock, samples);
98 void SOUND_CART::set_volume(int ch, int decibel_l, int decibel_r)
101 for(i=0; i<=SOUND_CHIP_MAX; i++) {
102 if (enable_chip[i]) {
103 d_chip[i]->set_volume(1, decibel_l, decibel_r);