Example #1
0
INPUT_PORTS_END



/***************************************************************************

    Machine Driver

***************************************************************************/

static void simpsons_objdma( running_machine &machine )
{
	simpsons_state *state = machine.driver_data<simpsons_state>();
	int counter, num_inactive;
	UINT16 *src, *dst;

	k053247_get_ram(state->m_k053246, &dst);
	counter = k053247_get_dy(state->m_k053246);

	src = state->m_spriteram;
	num_inactive = counter = 256;

	do {
		if ((*src & 0x8000) && (*src & 0xff))
		{
			memcpy(dst, src, 0x10);
			dst += 8;
			num_inactive--;
		}
		src += 8;
	}
	while (--counter);

	if (num_inactive) do { *dst = 0; dst += 8; } while (--num_inactive);
}
Example #2
0
static void xexex_objdma( running_machine &machine, int limiter )
{
	xexex_state *state = machine.driver_data<xexex_state>();
	int counter, num_inactive;
	UINT16 *src, *dst;

	counter = state->m_frame;
	state->m_frame = machine.primary_screen->frame_number();
	if (limiter && counter == state->m_frame)
		return; // make sure we only do DMA transfer once per frame

	k053247_get_ram(state->m_k053246, &dst);
	counter = k053247_get_dy(state->m_k053246);
	src = state->m_spriteram;
	num_inactive = counter = 256;

	do
	{
		if (*src & 0x8000)
		{
			dst[0] = src[0x0];  dst[1] = src[0x2];
			dst[2] = src[0x4];  dst[3] = src[0x6];
			dst[4] = src[0x8];  dst[5] = src[0xa];
			dst[6] = src[0xc];  dst[7] = src[0xe];
			dst += 8;
			num_inactive--;
		}
		src += 0x40;
	}
	while (--counter);

	if (num_inactive) do { *dst = 0; dst += 8; } while (--num_inactive);
}
Example #3
0
static void moo_objdma( running_machine &machine, int type )
{
	moo_state *state = machine.driver_data<moo_state>();
	int num_inactive;
	UINT16 *src, *dst, zmask;
	int counter = k053247_get_dy(state->m_k053246);

	k053247_get_ram(state->m_k053246, &dst);
	src = state->m_spriteram;
	num_inactive = counter = 256;

	zmask = (type) ? 0x00ff : 0xffff;

	do {
		if ((*src & 0x8000) && (*src & zmask))
		{
			memcpy(dst, src, 0x10);
			dst += 8;
			num_inactive--;
		}
		src += 0x80;
	}
	while (--counter);

	if (num_inactive) do { *dst = 0; dst += 8; } while (--num_inactive);
}