static VIDEO_UPDATE( alg ) { /* composite the video */ if (!video_skip_this_frame()) { mame_bitmap *vidbitmap; rectangle fixedvis = Machine->screen[screen].visarea; fixedvis.max_x++; fixedvis.max_y++; /* first lay down the video data */ laserdisc_get_video(discinfo, &vidbitmap); if (video_texture == NULL) video_texture = render_texture_alloc(vidbitmap, NULL, 0, TEXFORMAT_YUY16, NULL, NULL); else render_texture_set_bitmap(video_texture, vidbitmap, NULL, 0, TEXFORMAT_YUY16); /* then overlay the Amiga video */ if (overlay_texture == NULL) overlay_texture = render_texture_alloc(tmpbitmap, &fixedvis, 0, TEXFORMAT_PALETTEA16, NULL, NULL); else render_texture_set_bitmap(overlay_texture, tmpbitmap, &fixedvis, 0, TEXFORMAT_PALETTEA16); /* add both quads to the screen */ render_screen_add_quad(0, 0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), video_texture, PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1)); render_screen_add_quad(0, 0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), overlay_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_SCREENTEX(1)); } /* display disc information */ if (discinfo != NULL) popmessage("%s", laserdisc_describe_state(discinfo)); return 0; }
/* VIDEO GOODS */ static VIDEO_UPDATE( lgp ) { int charx, chary; /* clear */ fillbitmap(bitmap, 0, cliprect); /* display disc information */ if (discinfo != NULL) popmessage("%s", laserdisc_describe_state(discinfo)); /* Draw tiles */ for (charx = 0; charx < 32; charx++) { for (chary = 0; chary < 32; chary++) { int current_screen_character = (chary*32) + charx; /* Somewhere there's a flag that offsets the tilemap by 0x100*x */ /* Palette is likely set somewhere as well (tile_control_ram?) */ drawgfx(bitmap, screen->machine->gfx[0], tile_ram[current_screen_character], 0, 0, 0, charx*8, chary*8, cliprect, TRANSPARENCY_PEN, 0); } } return 0; }
static VIDEO_UPDATE( cliff ) { /* update the TMS9928A video */ video_update_tms9928a( machine, screen, bitmap, cliprect ); if (discinfo != NULL) { mame_bitmap *vidbitmap; rectangle fixedvis = *TMS9928A_get_visarea(); fixedvis.max_x++; fixedvis.max_y++; laserdisc_get_video(discinfo, &vidbitmap); /* first lay down the video data */ if (video_texture == NULL) video_texture = render_texture_alloc(NULL, NULL); if (vidbitmap != last_video_bitmap) render_texture_set_bitmap(video_texture, vidbitmap, NULL, 0, TEXFORMAT_YUY16); last_video_bitmap = vidbitmap; /* then overlay the TMS9928A video */ if (overlay_texture == NULL) overlay_texture = render_texture_alloc(NULL, NULL); render_texture_set_bitmap(overlay_texture, bitmap, &fixedvis, 0, TEXFORMAT_PALETTEA16); /* add both quads to the screen */ render_container_empty(render_container_get_screen(screen)); render_screen_add_quad(screen, 0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), video_texture, PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1)); render_screen_add_quad(screen, 0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), overlay_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_SCREENTEX(1)); } /* display disc information */ if (discinfo != NULL) popmessage("%s", laserdisc_describe_state(discinfo)); return 0; }