int tecmo_vh_start(void) { if (tecmo_video_type == 2) /* gemini */ { bg_tilemap = tilemap_create(gemini_get_bg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16); fg_tilemap = tilemap_create(gemini_get_fg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16); } else /* rygar, silkworm */ { bg_tilemap = tilemap_create(get_bg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16); fg_tilemap = tilemap_create(get_fg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16); } tx_tilemap = tilemap_create(get_tx_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT, 8, 8,32,32); if (!bg_tilemap || !fg_tilemap || !tx_tilemap) return 1; bg_tilemap->transparent_pen = 0; fg_tilemap->transparent_pen = 0; tx_tilemap->transparent_pen = 0; /* 0x100 is the background color */ palette_transparent_color = 0x100; tilemap_set_scrolldx(bg_tilemap,-48,256+48); tilemap_set_scrolldx(fg_tilemap,-48,256+48); return 0; }
static void wgp_core_vh_start(running_machine *machine, int x_offs,int y_offs,int piv_xoffs,int piv_yoffs) { wgp_piv_tilemap[0] = tilemap_create(get_piv0_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,64,64); wgp_piv_tilemap[1] = tilemap_create(get_piv1_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,64,64); wgp_piv_tilemap[2] = tilemap_create(get_piv2_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,64,64); TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,x_offs,y_offs,0,0,0,0,0); if (has_TC0110PCR()) TC0110PCR_vh_start(); wgp_piv_xoffs = piv_xoffs; wgp_piv_yoffs = piv_yoffs; tilemap_set_transparent_pen( wgp_piv_tilemap[0],0 ); tilemap_set_transparent_pen( wgp_piv_tilemap[1],0 ); tilemap_set_transparent_pen( wgp_piv_tilemap[2],0 ); /* flipscreen n/a */ tilemap_set_scrolldx( wgp_piv_tilemap[0],-piv_xoffs,0 ); tilemap_set_scrolldx( wgp_piv_tilemap[1],-piv_xoffs,0 ); tilemap_set_scrolldx( wgp_piv_tilemap[2],-piv_xoffs,0 ); tilemap_set_scrolldy( wgp_piv_tilemap[0],-piv_yoffs,0 ); tilemap_set_scrolldy( wgp_piv_tilemap[1],-piv_yoffs,0 ); tilemap_set_scrolldy( wgp_piv_tilemap[2],-piv_yoffs,0 ); /* We don't need tilemap_set_scroll_rows, as the custom draw routine applies rowscroll manually */ TC0100SCN_set_colbanks(0x80,0xc0,0x40); /* colors from saved states are often screwy (and this doesn't help...) */ state_save_register_func_postload(dirty_piv_tilemaps); }
static void wgp_core_vh_start( running_machine *machine, int piv_xoffs, int piv_yoffs ) { wgp_state *state = machine->driver_data<wgp_state>(); state->piv_tilemap[0] = tilemap_create(machine, get_piv0_tile_info, tilemap_scan_rows, 16, 16, 64, 64); state->piv_tilemap[1] = tilemap_create(machine, get_piv1_tile_info, tilemap_scan_rows, 16, 16, 64, 64); state->piv_tilemap[2] = tilemap_create(machine, get_piv2_tile_info, tilemap_scan_rows, 16, 16, 64, 64); state->piv_xoffs = piv_xoffs; state->piv_yoffs = piv_yoffs; tilemap_set_transparent_pen(state->piv_tilemap[0], 0); tilemap_set_transparent_pen(state->piv_tilemap[1], 0); tilemap_set_transparent_pen(state->piv_tilemap[2], 0); /* flipscreen n/a */ tilemap_set_scrolldx(state->piv_tilemap[0], -piv_xoffs, 0); tilemap_set_scrolldx(state->piv_tilemap[1], -piv_xoffs, 0); tilemap_set_scrolldx(state->piv_tilemap[2], -piv_xoffs, 0); tilemap_set_scrolldy(state->piv_tilemap[0], -piv_yoffs, 0); tilemap_set_scrolldy(state->piv_tilemap[1], -piv_yoffs, 0); tilemap_set_scrolldy(state->piv_tilemap[2], -piv_yoffs, 0); /* We don't need tilemap_set_scroll_rows, as the custom draw routine applies rowscroll manually */ tc0100scn_set_colbanks(state->tc0100scn, 0x80, 0xc0, 0x40); state->save_item(NAME(state->piv_ctrl_reg)); state->save_item(NAME(state->rotate_ctrl)); state->save_item(NAME(state->piv_zoom)); state->save_item(NAME(state->piv_scrollx)); state->save_item(NAME(state->piv_scrolly)); }
/* 3 Layers (like esprade but with different scroll delta's) */ int guwange_vh_start(void) { tilemap_0 = tilemap_create( get_tile_info_0, tilemap_scan_rows, TILEMAP_TRANSPARENT, 16,16, DIM_NX,DIM_NY ); tilemap_1 = tilemap_create( get_tile_info_1, tilemap_scan_rows, TILEMAP_TRANSPARENT, 16,16, DIM_NX,DIM_NY ); tilemap_2 = tilemap_create( get_tile_info_2, tilemap_scan_rows, TILEMAP_TRANSPARENT, 16,16, DIM_NX,DIM_NY ); sprite_list = sprite_list_create(spriteram_size / 0x10 / 2, SPRITE_LIST_BACK_TO_FRONT | SPRITE_LIST_RAW_DATA ); if (tilemap_0 && tilemap_1 && tilemap_2 && sprite_list) { tilemap_set_scroll_rows(tilemap_0,1); tilemap_set_scroll_cols(tilemap_0,1); tilemap_0->transparent_pen = 0; tilemap_set_scroll_rows(tilemap_1,1); tilemap_set_scroll_cols(tilemap_1,1); tilemap_1->transparent_pen = 0; tilemap_set_scroll_rows(tilemap_2,1); tilemap_set_scroll_cols(tilemap_2,1); tilemap_2->transparent_pen = 0; // tilemap_set_scrolldx( tilemap_0, -0x6c, -0x57 ); // tilemap_set_scrolldx( tilemap_1, -0x6d, -0x56 ); // tilemap_set_scrolldx( tilemap_2, -0x6e, -0x55 ); tilemap_set_scrolldx( tilemap_0, -0x6c +2, -0x57 -2 ); tilemap_set_scrolldx( tilemap_1, -0x6d +2, -0x56 -2 ); tilemap_set_scrolldx( tilemap_2, -0x6e +2, -0x55 -2 ); tilemap_set_scrolldy( tilemap_0, -0x11, -0x100 ); tilemap_set_scrolldy( tilemap_1, -0x11, -0x100 ); tilemap_set_scrolldy( tilemap_2, -0x11, -0x100 ); //tilemap_set_scrolldy( tilemap_2, -0x11 +8, -0x100 -8 ); sprite_list->max_priority = 3; sprite_list->sprite_type = SPRITE_TYPE_ZOOM; return 0; } else return 1; }
/* 2 Layers */ int dfeveron_vh_start(void) { tilemap_0 = tilemap_create( get_tile_info_0, tilemap_scan_rows, TILEMAP_TRANSPARENT, 16,16, DIM_NX,DIM_NY ); tilemap_1 = tilemap_create( get_tile_info_1, tilemap_scan_rows, TILEMAP_TRANSPARENT, 16,16, DIM_NX,DIM_NY ); tilemap_2 = 0; sprite_list = sprite_list_create(spriteram_size / 0x10 / 2, SPRITE_LIST_BACK_TO_FRONT | SPRITE_LIST_RAW_DATA ); if (tilemap_0 && tilemap_1 && sprite_list) { tilemap_set_scroll_rows(tilemap_0,1); tilemap_set_scroll_cols(tilemap_0,1); tilemap_0->transparent_pen = 0; tilemap_set_scroll_rows(tilemap_1,1); tilemap_set_scroll_cols(tilemap_1,1); tilemap_1->transparent_pen = 0; /* Scroll registers (on dfeveron logo screen): 8195 a1f7 (both) = 200-6b 200-9 (flip off) 01ac 2108 (both) = 200-54 100+8 (flip on) Video registers: 0183 0001 = 200-7d 001 (flip off) 81bf 80f0 = 200-41 100-10 (flip on) */ tilemap_set_scrolldx( tilemap_0, -0x6c, -0x54 ); tilemap_set_scrolldx( tilemap_1, -0x6d, -0x53 ); tilemap_set_scrolldy( tilemap_0, -0x11, -0x100 ); tilemap_set_scrolldy( tilemap_1, -0x11, -0x100 ); sprite_list->max_priority = 3; sprite_list->sprite_type = SPRITE_TYPE_ZOOM; return 0; } else return 1; }
/* 1 Layer */ int uopoko_vh_start(void) { tilemap_0 = tilemap_create( get_tile_info_0, tilemap_scan_rows, TILEMAP_TRANSPARENT, 16,16, DIM_NX,DIM_NY ); tilemap_1 = 0; tilemap_2 = 0; sprite_list = sprite_list_create(spriteram_size / 0x10 / 2, SPRITE_LIST_BACK_TO_FRONT | SPRITE_LIST_RAW_DATA ); if (tilemap_0 && sprite_list) { tilemap_set_scroll_rows(tilemap_0,1); tilemap_set_scroll_cols(tilemap_0,1); tilemap_0->transparent_pen = 0; tilemap_set_scrolldx( tilemap_0, -0x6d, -0x54 ); tilemap_set_scrolldy( tilemap_0, -0x11, -0x100 ); sprite_list->max_priority = 3; sprite_list->sprite_type = SPRITE_TYPE_ZOOM; return 0; } else return 1; }
static void gcpinbal_core_vh_start (void) { int xoffs = 0; int yoffs = 0; gcpinbal_tilemap[0] = tilemap_create(get_bg0_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,32,32); gcpinbal_tilemap[1] = tilemap_create(get_bg1_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,32,32); gcpinbal_tilemap[2] = tilemap_create(get_fg_tile_info, tilemap_scan_rows,TILEMAP_TYPE_PEN,8,8,64,64); tilemap_set_transparent_pen( gcpinbal_tilemap[0],0 ); tilemap_set_transparent_pen( gcpinbal_tilemap[1],0 ); tilemap_set_transparent_pen( gcpinbal_tilemap[2],0 ); /* flipscreen n/a */ tilemap_set_scrolldx( gcpinbal_tilemap[0],-xoffs,0 ); tilemap_set_scrolldx( gcpinbal_tilemap[1],-xoffs,0 ); tilemap_set_scrolldx( gcpinbal_tilemap[2],-xoffs,0 ); tilemap_set_scrolldy( gcpinbal_tilemap[0],-yoffs,0 ); tilemap_set_scrolldy( gcpinbal_tilemap[1],-yoffs,0 ); tilemap_set_scrolldy( gcpinbal_tilemap[2],-yoffs,0 ); }
static void gcpinbal_core_vh_start( running_machine &machine ) { gcpinbal_state *state = machine.driver_data<gcpinbal_state>(); int xoffs = 0; int yoffs = 0; state->m_tilemap[0] = tilemap_create(machine, get_bg0_tile_info,tilemap_scan_rows,16,16,32,32); state->m_tilemap[1] = tilemap_create(machine, get_bg1_tile_info,tilemap_scan_rows,16,16,32,32); state->m_tilemap[2] = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,8,8,64,64); tilemap_set_transparent_pen(state->m_tilemap[0], 0); tilemap_set_transparent_pen(state->m_tilemap[1], 0); tilemap_set_transparent_pen(state->m_tilemap[2], 0); /* flipscreen n/a */ tilemap_set_scrolldx(state->m_tilemap[0], -xoffs, 0); tilemap_set_scrolldx(state->m_tilemap[1], -xoffs, 0); tilemap_set_scrolldx(state->m_tilemap[2], -xoffs, 0); tilemap_set_scrolldy(state->m_tilemap[0], -yoffs, 0); tilemap_set_scrolldy(state->m_tilemap[1], -yoffs, 0); tilemap_set_scrolldy(state->m_tilemap[2], -yoffs, 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); }
void namco_tilemap_init( running_machine *machine, int gfxbank, void *maskBaseAddr, void (*cb)( UINT16 code, int *gfx, int *mask) ) { int i; mTilemapInfo.gfxbank = gfxbank; mTilemapInfo.maskBaseAddr = (UINT8 *)maskBaseAddr; mTilemapInfo.cb = cb; mTilemapInfo.videoram = auto_alloc_array(machine, UINT16, 0x10000 ); /* four scrolling tilemaps */ mTilemapInfo.tmap[0] = tilemap_create(machine, get_tile_info0,tilemap_scan_rows,8,8,64,64); mTilemapInfo.tmap[1] = tilemap_create(machine, get_tile_info1,tilemap_scan_rows,8,8,64,64); mTilemapInfo.tmap[2] = tilemap_create(machine, get_tile_info2,tilemap_scan_rows,8,8,64,64); mTilemapInfo.tmap[3] = tilemap_create(machine, get_tile_info3,tilemap_scan_rows,8,8,64,64); /* two non-scrolling tilemaps */ mTilemapInfo.tmap[4] = tilemap_create(machine, get_tile_info4,tilemap_scan_rows,8,8,36,28); mTilemapInfo.tmap[5] = tilemap_create(machine, get_tile_info5,tilemap_scan_rows,8,8,36,28); /* define offsets for scrolling */ for( i=0; i<4; i++ ) { static const int adj[4] = { 4,2,1,0 }; int dx = 44+adj[i]; tilemap_set_scrolldx( mTilemapInfo.tmap[i], -dx, -(-384-dx) ); tilemap_set_scrolldy( mTilemapInfo.tmap[i], -24, 288 ); } tilemap_set_scrolldx( mTilemapInfo.tmap[4], 0, 96 ); tilemap_set_scrolldy( mTilemapInfo.tmap[4], 0, 40 ); tilemap_set_scrolldx( mTilemapInfo.tmap[5], 0, 96 ); tilemap_set_scrolldy( mTilemapInfo.tmap[5], 0, 40 ); } /* namco_tilemap_init */
static VIDEO_START(galaxi) { galaxi_state *state = machine.driver_data<galaxi_state>(); state->m_bg1_tmap = tilemap_create(machine, get_bg1_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10); state->m_bg2_tmap = tilemap_create(machine, get_bg2_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10); state->m_bg3_tmap = tilemap_create(machine, get_bg3_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10); state->m_bg4_tmap = tilemap_create(machine, get_bg4_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10); state->m_fg_tmap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 0x40, 0x20); tilemap_set_transparent_pen(state->m_bg1_tmap, 0); tilemap_set_transparent_pen(state->m_bg2_tmap, 0); tilemap_set_transparent_pen(state->m_bg3_tmap, 0); tilemap_set_transparent_pen(state->m_bg4_tmap, 0); tilemap_set_transparent_pen(state->m_fg_tmap, 0); tilemap_set_scrolldx(state->m_bg3_tmap, -8, 0); }
int namco_tilemap_init( int gfxbank, void *maskBaseAddr, void (*cb)( UINT16 code, int *gfx, int *mask) ) { int i; mTilemapInfo.gfxbank = gfxbank; mTilemapInfo.maskBaseAddr = maskBaseAddr; mTilemapInfo.cb = cb; mTilemapInfo.videoram = auto_malloc( 0x10000*2 ); if( mTilemapInfo.videoram ) { /* four scrolling tilemaps */ mTilemapInfo.tmap[0] = tilemap_create(get_tile_info0,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64); mTilemapInfo.tmap[1] = tilemap_create(get_tile_info1,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64); mTilemapInfo.tmap[2] = tilemap_create(get_tile_info2,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64); mTilemapInfo.tmap[3] = tilemap_create(get_tile_info3,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64); /* two non-scrolling tilemaps */ mTilemapInfo.tmap[4] = tilemap_create(get_tile_info4,tilemap_scan_rows,TILEMAP_BITMASK,8,8,36,28); mTilemapInfo.tmap[5] = tilemap_create(get_tile_info5,tilemap_scan_rows,TILEMAP_BITMASK,8,8,36,28); /* ensure that all tilemaps have been allocated */ for( i=0; i<6; i++ ) { if( !mTilemapInfo.tmap[i] ) return -1; } /* define offsets for scrolling */ for( i=0; i<4; i++ ) { const int adj[4] = { 4,2,1,0 }; int dx = 44+adj[i]; tilemap_set_scrolldx( mTilemapInfo.tmap[i], -dx, -(-288-dx) ); tilemap_set_scrolldy( mTilemapInfo.tmap[i], -24, -(-224-24) ); } return 0; } return -1; } /* namco_tilemap_init */
int renegade_vh_start( void ){ bg_tilemap = tilemap_create( get_bg_tilemap_info, TILEMAP_OPAQUE, 16,16, /* tile width, tile height */ 64,16 /* num_cols, num_rows */ ); fg_tilemap = tilemap_create( get_fg_tilemap_info, TILEMAP_TRANSPARENT, 8,8, /* tile width, tile height */ 32,32 /* num_cols, num_rows */ ); if( bg_tilemap && fg_tilemap ){ fg_tilemap->transparent_pen = 0; tilemap_set_scrolldx( bg_tilemap, 256, 0 ); tilemap_set_scrolldy( fg_tilemap, 0, 16 ); tilemap_set_scrolldy( bg_tilemap, 0, 16 ); return 0; } return 1; }
static void video_start_common(running_machine *machine, tilemap_mapper_callback get_memory_offset) { bg_tilemap = tilemap_create(get_tile_info,get_memory_offset,TILEMAP_TYPE_PEN,8,8,32,32); tilemap_set_scrolldx(bg_tilemap, 0, -128); tilemap_set_transparent_pen(bg_tilemap,0); modify_charcode = 0; modify_spritecode = 0; modify_color = 0; modify_ypos = 0; mooncrst_gfxextend = 0; draw_bullets = 0; draw_background = galaxian_draw_background; background_enable = 0; background_blue = 0; background_red = 0; background_green = 0; draw_stars = noop_draw_stars; flipscreen_x = 0; flipscreen_y = 0; spriteram2_present = 0; spritevisiblearea = &_spritevisiblearea; spritevisibleareaflipx = &_spritevisibleareaflipx; color_mask = (machine->gfx[0]->color_granularity == 4) ? 7 : 3; state_save_register(); }