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; }
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); }
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)); }
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 ); }
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; }
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; }
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); }
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); }
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); }
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; }
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); }
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)); }
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); }
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); }
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; }
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; }