Esempio n. 1
0
void pc8801_video_init (int hireso)
{
	wbm1 = auto_bitmap_alloc(Machine->drv->screen_width, Machine->drv->screen_height);
	wbm2 = auto_bitmap_alloc(Machine->drv->screen_width, Machine->drv->screen_height);
	pc8801_is_24KHz=hireso;
	crtcON=0;
	textON=1;

	dmac_FL=0;
	dmac_addr[0]=dmac_size[0]=0;
	dmac_addr[1]=dmac_size[1]=0;
	dmac_addr[2]=dmac_size[2]=0;
	dmac_flag=dmac_status=0;

	gVRAM = (UINT8*) auto_malloc(0xc000);
	pc88sr_textRAM = (UINT8*) auto_malloc(0x1000);
	attr_tmp = auto_malloc(sizeof(unsigned short)*80*25);
	attr_old = auto_malloc(sizeof(unsigned short)*80*100);
	text_old = auto_malloc(sizeof(unsigned short)*80*100);
	graph_dirty = auto_malloc(80*100);

	if (!wbm1 || !wbm2 || !gVRAM || !pc88sr_textRAM || !attr_tmp || !attr_old || !text_old || !graph_dirty)
	{
		logerror ("pc8801: out of memory!\n");
		return;
	}

	memset(gVRAM,0,0xc000);
	memset(pc88sr_textRAM,0,0x1000);
	selected_vram=0;
	ALUON=0;
	analog_palette=0;
}
Esempio n. 2
0
ADDRESS_MAP_END

static VIDEO_START(sliver)
{
	sliver_bitmap_bg = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
	sliver_bitmap_fg = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
}
Esempio n. 3
0
static DEVICE_START( cdp1861 )
{
	cdp1861_t *cdp1861 = get_safe_token(device);
	const cdp1861_interface *intf = get_interface(device);

	/* resolve callbacks */
	devcb_resolve_write_line(&cdp1861->out_int_func, &intf->out_int_func, device);
	devcb_resolve_write_line(&cdp1861->out_dmao_func, &intf->out_dmao_func, device);
	devcb_resolve_write_line(&cdp1861->out_efx_func, &intf->out_efx_func, device);

	/* get the cpu */
	cdp1861->cpu = device->machine().device<cpu_device>(intf->cpu_tag);

	/* get the screen device */
	cdp1861->screen =  device->machine().device<screen_device>(intf->screen_tag);
	assert(cdp1861->screen != NULL);

	/* allocate the temporary bitmap */
	cdp1861->bitmap = auto_bitmap_alloc(device->machine(), cdp1861->screen->width(), cdp1861->screen->height(), cdp1861->screen->format());

	/* create the timers */
	cdp1861->int_timer = device->machine().scheduler().timer_alloc(FUNC(cdp1861_int_tick), (void *)device);
	cdp1861->efx_timer = device->machine().scheduler().timer_alloc(FUNC(cdp1861_efx_tick), (void *)device);
	cdp1861->dma_timer = device->machine().scheduler().timer_alloc(FUNC(cdp1861_dma_tick), (void *)device);

	/* register for state saving */
	device->save_item(NAME(cdp1861->disp));
	device->save_item(NAME(cdp1861->dispon));
	device->save_item(NAME(cdp1861->dispoff));
	device->save_item(NAME(cdp1861->dmaout));
	device->save_item(NAME(*cdp1861->bitmap));
}
Esempio n. 4
0
static VIDEO_START(jchan)
{
	/* so we can use suprnova.c */
	jchan_sprite_ram32_1 = auto_alloc_array(machine, UINT32, 0x4000/4);
	jchan_sprite_ram32_2 = auto_alloc_array(machine, UINT32, 0x4000/4);

	machine->generic.spriteram_size = 0x4000;
	jchan_sprite_regs32_1 = auto_alloc_array(machine, UINT32, 0x40/4);
	jchan_sprite_regs32_2 = auto_alloc_array(machine, UINT32, 0x40/4);

	sprite_bitmap_1 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
	sprite_bitmap_2 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);

	suprnova_alt_enable_sprites = 1;

	VIDEO_START_CALL( kaneko16_1xVIEW2_tilemaps );
}
Esempio n. 5
0
static VIDEO_START(coolridr)
{
	coolridr_state *state = machine.driver_data<coolridr_state>();
	int width = machine.primary_screen->width();
	int height = machine.primary_screen->height();

	state->m_temp_bitmap_sprites  = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
	state->m_test_offs = 0x2000;
}
Esempio n. 6
0
static VIDEO_START( common )
{
	if ((dirtybuffer = auto_malloc(videoram_size)) == 0)
		return 1;
	memset (dirtybuffer, 1, videoram_size);

	if ((tmpbitmap = auto_bitmap_alloc (36*8,60*8)) == 0)
		return 1;

	return 0;
}
Esempio n. 7
0
static VIDEO_START(galpani3)
{
	/* so we can use suprnova.c */
	galpani3_spriteram32 = auto_alloc_array(machine, UINT32, 0x4000/4);
	spriteram_size = 0x4000;
	galpani3_spc_regs = auto_alloc_array(machine, UINT32, 0x40/4);
	suprnova_alt_enable_sprites = 1;


	sprite_bitmap_1 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);

}
Esempio n. 8
0
static VIDEO_START(galpani3)
{
	galpani3_state *state = machine->driver_data<galpani3_state>();
	/* so we can use suprnova.c */
	state->spriteram32 = auto_alloc_array(machine, UINT32, 0x4000/4);
	machine->generic.spriteram_size = 0x4000;
	state->spc_regs = auto_alloc_array(machine, UINT32, 0x40/4);
	suprnova_alt_enable_sprites = 1;


	state->sprite_bitmap_1 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);

}
Esempio n. 9
0
static void TMS9928A_start (running_machine *machine, const TMS9928a_interface *intf)
{
    assert_always(((intf->vram == 0x1000) || (intf->vram == 0x2000) || (intf->vram == 0x4000)), "4, 8 or 16 kB vram please");

    tms.model = intf->model;

	tms.top_border = TMS_50HZ ? TOP_BORDER_50HZ : TOP_BORDER_60HZ;
	tms.bottom_border = TMS_50HZ ? BOTTOM_BORDER_50HZ : BOTTOM_BORDER_60HZ;

	tms.INTCallback = intf->int_callback;

	/* determine the visible area */
	tms.visarea.min_x = LEFT_BORDER - MIN(intf->borderx, LEFT_BORDER);
	tms.visarea.max_x = LEFT_BORDER + 32*8 - 1 + MIN(intf->borderx, RIGHT_BORDER);
	tms.visarea.min_y = tms.top_border - MIN(intf->bordery, tms.top_border);
	tms.visarea.max_y = tms.top_border + 24*8 - 1 + MIN(intf->bordery, tms.bottom_border);

	/* configure the screen if we weren't overridden */
	if (video_screen_get_width(machine->primary_screen) == LEFT_BORDER+32*8+RIGHT_BORDER &&
	    video_screen_get_height(machine->primary_screen) == TOP_BORDER_60HZ+24*8+BOTTOM_BORDER_60HZ)
		video_screen_configure(machine->primary_screen, LEFT_BORDER + 32*8 + RIGHT_BORDER, tms.top_border + 24*8 + tms.bottom_border, &tms.visarea, video_screen_get_frame_period(machine->primary_screen).attoseconds);

    /* Video RAM */
    tms.vramsize = intf->vram;
    tms.vMem = auto_alloc_array_clear(machine, UINT8, intf->vram);

    /* Sprite back buffer */
    tms.dBackMem = auto_alloc_array(machine, UINT8, IMAGE_SIZE);

    /* back bitmap */
    tms.tmpbmp = auto_bitmap_alloc (machine, 256, 192, video_screen_get_format(machine->primary_screen));

    TMS9928A_reset ();
    tms.LimitSprites = 1;

	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[0]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[1]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[2]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[3]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[4]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[5]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[6]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Regs[7]);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.StatusReg);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.ReadAhead);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.FirstByte);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.latch);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.Addr);
	state_save_register_item(machine, "tms9928a", NULL, 0, tms.INT);
	state_save_register_item_pointer(machine, "tms9928a", NULL, 0, tms.vMem, intf->vram);
}
Esempio n. 10
0
int rampart_bitmap_init(int _xdim, int _ydim)
{
	/* set the dimensions */
	xdim = _xdim;
	ydim = _ydim;

	/* allocate dirty map */
	pfdirty = auto_malloc(sizeof(pfdirty[0]) * ydim);
	memset(pfdirty, 1, sizeof(pfdirty[0]) * ydim);

	/* allocate playfield bitmap */
	pfbitmap = auto_bitmap_alloc(xdim, ydim);
	return 1;
}
Esempio n. 11
0
	AM_RANGE(0x9800, 0x9803) AM_RAM

ADDRESS_MAP_END

static VIDEO_START(mlanding)
{
	int i;
	for(i=0;i<ML_CHARS;i++)
	{
		dirtychar[i]=0;
	}

	for	(i=0;i<8;i++)
		ml_bitmap[i] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
}
Esempio n. 12
0
void cdp1862_device::device_start()
{
	// resolve callbacks
	m_in_rd_func.resolve(m_in_rd_cb, *this);
	m_in_bd_func.resolve(m_in_bd_cb, *this);
	m_in_gd_func.resolve(m_in_gd_cb, *this);

	// find devices
	m_screen =  machine().device<screen_device>(m_screen_tag);
	m_bitmap = auto_bitmap_alloc(machine(), m_screen->width(), m_screen->height(), m_screen->format());

	// init palette
	initialize_palette();

	// register for state saving
	save_item(NAME(m_bgcolor));
	save_item(NAME(m_con));
}
Esempio n. 13
0
static VIDEO_START( madalien )
{
	madalien_state *state = machine->driver_data<madalien_state>();
	int i;

	static const tilemap_mapper_func scan_functions[4] =
	{
		scan_mode0, scan_mode1, scan_mode2, scan_mode3
	};

	static const int tilemap_cols[4] =
	{
		16, 16, 32, 32
	};

	state->tilemap_fg = tilemap_create(machine, get_tile_info_FG, tilemap_scan_cols_flip_x, 8, 8, 32, 32);
	tilemap_set_transparent_pen(state->tilemap_fg, 0);
	tilemap_set_scrolldx(state->tilemap_fg, 0, 0x50);
	tilemap_set_scrolldy(state->tilemap_fg, 0, 0x20);

	for (i = 0; i < 4; i++)
	{
		state->tilemap_edge1[i] = tilemap_create(machine, get_tile_info_BG_1, scan_functions[i], 16, 16, tilemap_cols[i], 8);
		tilemap_set_scrolldx(state->tilemap_edge1[i], 0, 0x50);
		tilemap_set_scrolldy(state->tilemap_edge1[i], 0, 0x20);

		state->tilemap_edge2[i] = tilemap_create(machine, get_tile_info_BG_2, scan_functions[i], 16, 16, tilemap_cols[i], 8);
		tilemap_set_scrolldx(state->tilemap_edge2[i], 0, 0x50);
		tilemap_set_scrolldy(state->tilemap_edge2[i], 0, machine->primary_screen->height() - 256);
	}

	state->headlight_bitmap = auto_bitmap_alloc(machine, 128, 128, BITMAP_FORMAT_INDEXED16);

	gfx_element_set_source(machine->gfx[0], state->charram);

	drawgfx_opaque(state->headlight_bitmap, NULL, machine->gfx[2], 0, 0, 0, 0, 0x00, 0x00);
	drawgfx_opaque(state->headlight_bitmap, NULL, machine->gfx[2], 0, 0, 0, 1, 0x00, 0x40);
}
Esempio n. 14
0
static VIDEO_START(speglsht)
{
	speglsht_state *state = machine.driver_data<speglsht_state>();
	state->m_bitmap = auto_bitmap_alloc(machine, 512, 5122, BITMAP_FORMAT_INDEXED16 );
	VIDEO_START_CALL(st0016);
}
Esempio n. 15
0
static int TMS9928A_start (const TMS9928a_interface *intf)
{
    /* 4, 8 or 16 kB vram please */
    if (! ((intf->vram == 0x1000) || (intf->vram == 0x2000) || (intf->vram == 0x4000)) )
        return 1;

    tms.model = intf->model;

	tms.top_border = TMS_50HZ ? TOP_BORDER_50HZ : TOP_BORDER_60HZ;
	tms.bottom_border = TMS_50HZ ? BOTTOM_BORDER_50HZ : BOTTOM_BORDER_60HZ;

	tms.INTCallback = intf->int_callback;

	/* determine the visible area */
	tms.visarea.min_x = LEFT_BORDER - MIN(intf->borderx, LEFT_BORDER);
	tms.visarea.max_x = LEFT_BORDER + 32*8 - 1 + MIN(intf->borderx, RIGHT_BORDER);
	tms.visarea.min_y = tms.top_border - MIN(intf->bordery, tms.top_border);
	tms.visarea.max_y = tms.top_border + 24*8 - 1 + MIN(intf->bordery, tms.bottom_border);

	/* configure the screen if we weren't overridden */
	if (Machine->screen[0].width == LEFT_BORDER+32*8+RIGHT_BORDER && Machine->screen[0].height == TOP_BORDER_60HZ+24*8+BOTTOM_BORDER_60HZ)
		video_screen_configure(0, LEFT_BORDER + 32*8 + RIGHT_BORDER, tms.top_border + 24*8 + tms.bottom_border, &tms.visarea, Machine->screen[0].refresh);

    /* Video RAM */
    tms.vramsize = intf->vram;
    tms.vMem = (UINT8*) auto_malloc (intf->vram);
    memset (tms.vMem, 0, intf->vram);

    /* Sprite back buffer */
    tms.dBackMem = (UINT8*)auto_malloc (IMAGE_SIZE);

    /* dirty buffers */
    tms.DirtyName = (char*)auto_malloc (MAX_DIRTY_NAME);

    tms.DirtyPattern = (char*)auto_malloc (MAX_DIRTY_PATTERN);

    tms.DirtyColour = (char*)auto_malloc (MAX_DIRTY_COLOUR);

    /* back bitmap */
    tms.tmpbmp = auto_bitmap_alloc (256, 192);

    TMS9928A_reset ();
    tms.LimitSprites = 1;

	state_save_register_item("tms9928a", 0, tms.Regs[0]);
	state_save_register_item("tms9928a", 0, tms.Regs[1]);
	state_save_register_item("tms9928a", 0, tms.Regs[2]);
	state_save_register_item("tms9928a", 0, tms.Regs[3]);
	state_save_register_item("tms9928a", 0, tms.Regs[4]);
	state_save_register_item("tms9928a", 0, tms.Regs[5]);
	state_save_register_item("tms9928a", 0, tms.Regs[6]);
	state_save_register_item("tms9928a", 0, tms.Regs[7]);
	state_save_register_item("tms9928a", 0, tms.StatusReg);
	state_save_register_item("tms9928a", 0, tms.ReadAhead);
	state_save_register_item("tms9928a", 0, tms.FirstByte);
	state_save_register_item("tms9928a", 0, tms.latch);
	state_save_register_item("tms9928a", 0, tms.Addr);
	state_save_register_item("tms9928a", 0, tms.INT);
	state_save_register_item_pointer("tms9928a", 0, tms.vMem, intf->vram);

    return 0;
}
Esempio n. 16
0
static int TMS9928A_start (const TMS9928a_interface *intf) {
    /* 4, 8 or 16 kB vram please */
    if (! ((intf->vram == 0x1000) || (intf->vram == 0x2000) || (intf->vram == 0x4000)) )
        return 1;

    tms.model = intf->model;

	tms.top_border = TMS_50HZ ? TOP_BORDER_50HZ : TOP_BORDER_60HZ;
	tms.bottom_border = TMS_50HZ ? BOTTOM_BORDER_50HZ : BOTTOM_BORDER_60HZ;

	tms.INTCallback = intf->int_callback;

    /* Video RAM */
    tms.vramsize = intf->vram;
    tms.vMem = (UINT8*) auto_malloc (intf->vram);
    if (!tms.vMem)
		return 1;
    memset (tms.vMem, 0, intf->vram);

    /* Sprite back buffer */
    tms.dBackMem = (UINT8*)auto_malloc (IMAGE_SIZE);
    if (!tms.dBackMem)
        return 1;

    /* dirty buffers */
    tms.DirtyName = (char*)auto_malloc (MAX_DIRTY_NAME);
    if (!tms.DirtyName)
        return 1;

    tms.DirtyPattern = (char*)auto_malloc (MAX_DIRTY_PATTERN);
    if (!tms.DirtyPattern)
        return 1;

    tms.DirtyColour = (char*)auto_malloc (MAX_DIRTY_COLOUR);
    if (!tms.DirtyColour)
        return 1;

    /* back bitmap */
    tms.tmpbmp = auto_bitmap_alloc (256, 192);
    if (!tms.tmpbmp)
        return 1;

    TMS9928A_reset ();
    tms.LimitSprites = 1;

	state_save_register_UINT8 ("tms9928a", 0, "R0", &tms.Regs[0], 1);
	state_save_register_UINT8 ("tms9928a", 0, "R1", &tms.Regs[1], 1);
	state_save_register_UINT8 ("tms9928a", 0, "R2", &tms.Regs[2], 1);
	state_save_register_UINT8 ("tms9928a", 0, "R3", &tms.Regs[3], 1);
	state_save_register_UINT8 ("tms9928a", 0, "R4", &tms.Regs[4], 1);
	state_save_register_UINT8 ("tms9928a", 0, "R5", &tms.Regs[5], 1);
	state_save_register_UINT8 ("tms9928a", 0, "R6", &tms.Regs[6], 1);
	state_save_register_UINT8 ("tms9928a", 0, "R7", &tms.Regs[7], 1);
	state_save_register_UINT8 ("tms9928a", 0, "S", &tms.StatusReg, 1);
	state_save_register_UINT8 ("tms9928a", 0, "read_ahead", &tms.ReadAhead, 1);
	state_save_register_UINT8 ("tms9928a", 0, "first_byte", &tms.FirstByte, 1);
	state_save_register_UINT8 ("tms9928a", 0, "latch", &tms.latch, 1);
	state_save_register_UINT16 ("tms9928a", 0, "vram_latch", (UINT16*)&tms.Addr, 1);
	state_save_register_UINT8 ("tms9928a", 0, "interrupt_line", &tms.INT, 1);
	state_save_register_UINT8 ("tms9928a", 0, "VRAM", tms.vMem, intf->vram);

    return 0;
}