Esempio n. 1
0
void cassette_seek(device_t *device, double time, int origin)
{
	dev_cassette_t	*cassette = get_safe_token( device );

	double length;

	cassette_update(device);

	length = cassette_get_length(device);

	switch(origin) {
	case SEEK_SET:
		break;

	case SEEK_END:
		time += length;
		break;

	case SEEK_CUR:
		time += cassette_get_position(device);
		break;
	}

	/* clip position into legal bounds */
	if (time < 0)
		time = 0;
	else
	if (time > length)
		time = length;

	cassette->position = time;
}
Esempio n. 2
0
void cassette_output(mess_image *cassette, double value)
{
	struct mess_cassetteimg *tag;
	tag = get_cassimg(cassette);
	if (((tag->state & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD) && (tag->value != value))
	{
		cassette_update(cassette);

		value = MIN(value, 1.0);
		value = MAX(value, -1.0);

		tag->value = (INT32) (value * 0x7FFFFFFF);
	}
}
Esempio n. 3
0
void cassette_output(device_t *device, double value)
{
	dev_cassette_t	*cassette = get_safe_token( device );

	if (((cassette->state & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD) && (cassette->value != value))
	{
		cassette_update(device);

		value = MIN(value, 1.0);
		value = MAX(value, -1.0);

		cassette->value = (INT32) (value * 0x7FFFFFFF);
	}
}
Esempio n. 4
0
double cassette_input(device_t *device)
{
	dev_cassette_t	*cassette = get_safe_token( device );
	INT32 sample;
	double double_value;

	cassette_update(device);
	sample = cassette->value;
	double_value = sample / ((double) 0x7FFFFFFF);

	LOG(("cassette_input(): time_index=%g value=%g\n", cassette->position, double_value));

	return double_value;
}
Esempio n. 5
0
void cassette_change_state(device_t *device, cassette_state state, cassette_state mask)
{
	dev_cassette_t	*cassette = get_safe_token( device );
	cassette_state new_state;

	new_state = cassette->state;
	new_state = (cassette_state)(new_state & ~mask);
	new_state = (cassette_state)(new_state | (state & mask));

	if (new_state != cassette->state)
	{
		cassette_update(device);
		cassette->state = new_state;
	}
}
Esempio n. 6
0
void cassette_change_state(mess_image *cassette, cassette_state state, cassette_state mask)
{
	struct mess_cassetteimg *tag;
	cassette_state new_state;

	tag = get_cassimg(cassette);
	new_state = tag->state;
	new_state &= ~mask;
	new_state |= (state & mask);

	if (new_state != tag->state)
	{
		cassette_update(cassette);
		tag->state = new_state;
	}
}
Esempio n. 7
0
static DEVICE_IMAGE_UNLOAD( cassette )
{
	device_t *device = &image.device();
	dev_cassette_t	*cassette = get_safe_token( device );

	/* if we are recording, write the value to the image */
	if ((cassette->state & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD)
		cassette_update(device);

	/* close out the cassette */
	cassette_close(cassette->cassette);
	cassette->cassette = NULL;

	/* set to default state, but only change the UI state */
	cassette_change_state(device, CASSETTE_STOPPED, CASSETTE_MASK_UISTATE);
}
Esempio n. 8
0
static void device_unload_cassette(mess_image *image)
{
	struct mess_cassetteimg *tag;
	
	tag = get_cassimg(image);

	/* if we are recording, write the value to the image */
	if ((tag->state & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD)
		cassette_update(image);

	/* close out the cassette */
	cassette_close(tag->cassette);
	tag->cassette = NULL;

	/* set to default state, but only change the UI state */
	cassette_change_state(image, CASSETTE_STOPPED, CASSETTE_MASK_UISTATE);
}
Esempio n. 9
0
double cassette_input(mess_image *cassette)
{
	INT32 sample;
	double double_value;
	struct mess_cassetteimg *tag;

	cassette_update(cassette);
	tag = get_cassimg(cassette);
	sample = tag->value;
	double_value = sample / ((double) 0x7FFFFFFF);

#if VERBOSE
	logerror("cassette_input(): time_index=%g value=%g\n", tag->position, double_value);
#endif

	return double_value;
}
Esempio n. 10
0
void cassette_seek(mess_image *cassette, double time, int origin)
{
	struct mess_cassetteimg *tag;

	cassette_update(cassette);

	switch(origin) {
	case SEEK_SET:
		break;

	case SEEK_END:
		time += cassette_get_length(cassette);
		break;

	case SEEK_CUR:
		time += cassette_get_position(cassette);
		break;
	}

	/* clip position into legal bounds */
	tag = get_cassimg(cassette);
	tag->position = time;
}