void galaxian_state::video_start() { /* create a tilemap for the background */ if (!m_sfx_tilemap) { /* normal galaxian hardware is row-based and individually scrolling columns */ m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxian_state::bg_get_tile_info),this), TILEMAP_SCAN_ROWS, GALAXIAN_XSCALE*8,8, 32,32); m_bg_tilemap->set_scroll_cols(32); } else { /* sfx hardware is column-based and individually scrolling rows */ m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxian_state::bg_get_tile_info),this), TILEMAP_SCAN_COLS, GALAXIAN_XSCALE*8,8, 32,32); m_bg_tilemap->set_scroll_rows(32); } m_bg_tilemap->set_transparent_pen(0); /* initialize globals */ m_flipscreen_x = 0; m_flipscreen_y = 0; m_background_enable = 0; m_background_blue = 0; m_background_red = 0; m_background_green = 0; /* initialize stars */ stars_init(); /* register for save states */ state_save_register(); }
void stars_draw ( ) { u8 i; vobject_add ( ESTRELLITA1 ); vobject_add ( ESTRELLITA2 ); vobject_add ( ESTRELLITA3 ); vobject_add ( ESTRELLITA4 ); Vect2D_s16 posiciones = { vdpSpriteCache[splist_griel].x - 4-128, vdpSpriteCache[splist_griel].y + 2-128 }; s16 x = posiciones.x; s16 y = posiciones.y; vsprite_set ( sprites[0] = 71, x-12, y-12, ESTRELLITA1 ); vsprite_set ( sprites[1] = 72, x+12, y-12, ESTRELLITA2 ); vsprite_set ( sprites[2] = 73, x-12, y+12, ESTRELLITA3 ); vsprite_set ( sprites[3] = 74, x+12, y+12, ESTRELLITA4 ); u16 duracion = animation_duracion(ESTRELLITA1); while ( duracion-- ) { if ( duracion % 4 == 0 ) { _freeze_objects(); } vobject_update(); vobject_upload ( ); VDP_updateSprites(80,1); VDP_waitVSync(); } vobject_delete ( ESTRELLITA1 ); vobject_delete ( ESTRELLITA2 ); vobject_delete ( ESTRELLITA3 ); vobject_delete ( ESTRELLITA4 ); for ( i=0; i<STARTS_SPRITES; i++ ) { u8 sprite = sprites [ i ] ; splist_hide_sprite ( sprite ); vsprite_animation ( sprite, EMPTY_SPRITE ); sd_delete ( sprite ); } stars_init (); }