Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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);
}
Ejemplo n.º 3
0
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;

}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
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;
}