int MSM5205_sh_start (const struct MachineSound *msound) { int i; /* save a global pointer to our interface */ msm5205_intf = (const struct MSM5205interface*)msound->sound_interface; /* compute the difference tables */ ComputeTables (); /* initialize the voices */ memset (msm5205, 0, sizeof (msm5205)); /* stream system initialize */ for (i = 0;i < msm5205_intf->num;i++) { struct MSM5205Voice *voice = &msm5205[i]; char name[20]; sprintf(name,"MSM5205 #%d",i); voice->stream = stream_init(name,msm5205_intf->mixing_level[i], Machine->sample_rate,i, MSM5205_update); } /* initialize */ MSM5205_sh_reset(); /* success */ return 0; }
static DEVICE_START( msm5205 ) { msm5205_state *voice = get_safe_token(device); /* save a global pointer to our interface */ voice->intf = (const msm5205_interface *)device->baseconfig().static_config(); voice->device = device; voice->clock = device->clock(); /* compute the difference tables */ ComputeTables (voice); /* stream system initialize */ voice->stream = stream_create(device,0,1,device->clock(),voice,MSM5205_update); voice->timer = timer_alloc(device->machine, MSM5205_vclk_callback, voice); /* initialize */ DEVICE_RESET_CALL(msm5205); /* register for save states */ state_save_register_device_item(device, 0, voice->clock); state_save_register_device_item(device, 0, voice->data); state_save_register_device_item(device, 0, voice->vclk); state_save_register_device_item(device, 0, voice->reset); state_save_register_device_item(device, 0, voice->prescaler); state_save_register_device_item(device, 0, voice->bitwidth); state_save_register_device_item(device, 0, voice->signal); state_save_register_device_item(device, 0, voice->step); }
LPMATSHAPER cmsAllocMatShaper2(LPMAT3 Matrix, LPGAMMATABLE In[], LPGAMMATABLE Out[], DWORD Behaviour) { LPMATSHAPER NewMatShaper; int rc; NewMatShaper = (LPMATSHAPER) _cmsMalloc(sizeof(MATSHAPER)); if (NewMatShaper) ZeroMemory(NewMatShaper, sizeof(MATSHAPER)); NewMatShaper->dwFlags = Behaviour & (MATSHAPER_ALLSMELTED); // Fill matrix part MAT3toFix(&NewMatShaper -> Matrix, Matrix); // Reality check if (!MAT3isIdentity(&NewMatShaper -> Matrix, 0.00001)) NewMatShaper -> dwFlags |= MATSHAPER_HASMATRIX; // Now, on the table characteristics if (Out) { rc = ComputeTables(Out, NewMatShaper ->L, &NewMatShaper ->p16); if (rc < 0) { cmsFreeMatShaper(NewMatShaper); return NULL; } if (rc == 1) NewMatShaper -> dwFlags |= MATSHAPER_HASSHAPER; } if (In) { rc = ComputeTables(In, NewMatShaper ->L2, &NewMatShaper ->p2_16); if (rc < 0) { cmsFreeMatShaper(NewMatShaper); return NULL; } if (rc == 1) NewMatShaper -> dwFlags |= MATSHAPER_HASINPSHAPER; } return NewMatShaper; }
int UPD7759_sh_start (const struct MachineSound *msound) { int i; const struct UPD7759_interface *intf = msound->sound_interface; if( Machine->sample_rate == 0 ) return 0; /* compute the difference tables */ ComputeTables (); /* copy the interface pointer to a global */ upd7759_intf = intf; base_rate = intf->clock_rate / CLOCK_DIVIDER; #if OVERSAMPLING oversampling = (Machine->sample_rate / base_rate); if (!oversampling) oversampling = 1; emulation_rate = base_rate * oversampling; #else emulation_rate = base_rate; #endif memset(updadpcm,0,sizeof(updadpcm)); for (i = 0; i < intf->num; i++) { char name[20]; updadpcm[i].mask = 0xffffffff; updadpcm[i].signal = 0; updadpcm[i].step = 0; updadpcm[i].counter = emulation_rate / 2; sprintf(name,"uPD7759 #%d",i); channel[i] = stream_init(name,intf->volume[i],emulation_rate,16,i,UPD7759_update); } return 0; }
static void *msm5205_start(int sndindex, int clock, const void *config) { struct MSM5205Voice *voice; voice = auto_malloc(sizeof(*voice)); memset(voice, 0, sizeof(*voice)); sndintrf_register_token(voice); /* save a global pointer to our interface */ voice->intf = config; voice->index = sndindex; voice->clock = clock; /* compute the difference tables */ ComputeTables (voice); /* stream system initialize */ voice->stream = stream_create(0,1,Machine->sample_rate,voice,MSM5205_update); voice->timer = timer_alloc_ptr(MSM5205_vclk_callback, voice); /* initialize */ msm5205_reset(voice); /* register for save states */ state_save_register_item("msm5205", sndindex, voice->clock); state_save_register_item("msm5205", sndindex, voice->data); state_save_register_item("msm5205", sndindex, voice->vclk); state_save_register_item("msm5205", sndindex, voice->reset); state_save_register_item("msm5205", sndindex, voice->prescaler); state_save_register_item("msm5205", sndindex, voice->bitwidth); state_save_register_item("msm5205", sndindex, voice->signal); state_save_register_item("msm5205", sndindex, voice->step); /* success */ return voice; }