/* update screen window */ void crtc_update_window(void) { if (!crtc.initialized) { return; } crtc.raster.display_ystart = CRTC_SCREEN_BORDERHEIGHT; crtc.raster.display_ystop = crtc.screen_height - 2 * CRTC_SCREEN_BORDERHEIGHT; crtc.raster.display_xstart = CRTC_SCREEN_BORDERWIDTH; crtc.raster.display_xstop = crtc.screen_width - 2 * CRTC_SCREEN_BORDERWIDTH; crtc_update_renderer(); raster_set_geometry(&crtc.raster, crtc.screen_width, crtc.screen_height, crtc.screen_width, crtc.screen_height, crtc.screen_width - 2 * CRTC_SCREEN_BORDERWIDTH, crtc.screen_height - 2 * CRTC_SCREEN_BORDERHEIGHT, CRTC_SCREEN_TEXTCOLS(), CRTC_SCREEN_TEXTLINES(), 0, 0, 0, CRTC_SCREEN_BORDERHEIGHT, crtc.screen_height - 2 * CRTC_SCREEN_BORDERHEIGHT, 0, 0); crtc.raster.geometry->pixel_aspect_ratio = crtc_get_pixel_aspect(); crtc.raster.viewport->crt_type = crtc_get_crt_type(); }
static int set_stretch(int val, void *param) { DBG(("set_stretch")); crtc_stretchy = val; crtc_update_renderer(); resources_touch("CrtcDoubleSize"); return 0; }
int crtc_resources_init(void) { video_chip_cap.dsize_allowed = ARCHDEP_CRTC_DSIZE; video_chip_cap.dsize_default = 0; video_chip_cap.dsize_limit_width = 800; /* 2 times the 80cols screen */ video_chip_cap.dsize_limit_height = 700; /* 4 times the 80cols screen */ video_chip_cap.dscan_allowed = ARCHDEP_CRTC_DSCAN; video_chip_cap.hwscale_allowed = ARCHDEP_CRTC_HWSCALE; video_chip_cap.external_palette_name = "green"; video_chip_cap.double_buffering_allowed = ARCHDEP_CRTC_DBUF; fullscreen_capability(&(video_chip_cap.fullscreen)); if (raster_resources_chip_init("Crtc", &crtc.raster, &video_chip_cap) < 0) { return -1; } crtc.video_chip_cap = &video_chip_cap; crtc_update_renderer(); return resources_register_int(resources_int); }