int COLOURS_PAL_ReadConfig(char *option, char *ptr) { if (strcmp(option, "COLOURS_PAL_SATURATION") == 0) return Util_sscandouble(ptr, &COLOURS_PAL_setup.saturation); else if (strcmp(option, "COLOURS_PAL_CONTRAST") == 0) return Util_sscandouble(ptr, &COLOURS_PAL_setup.contrast); else if (strcmp(option, "COLOURS_PAL_BRIGHTNESS") == 0) return Util_sscandouble(ptr, &COLOURS_PAL_setup.brightness); else if (strcmp(option, "COLOURS_PAL_GAMMA") == 0) return Util_sscandouble(ptr, &COLOURS_PAL_setup.gamma); else if (strcmp(option, "COLOURS_PAL_EXTERNAL_PALETTE") == 0) Util_strlcpy(COLOURS_PAL_external.filename, ptr, sizeof(COLOURS_PAL_external.filename)); else if (strcmp(option, "COLOURS_PAL_EXTERNAL_PALETTE_LOADED") == 0) /* Use the "loaded" flag to indicate that the palette must be loaded later. */ return (COLOURS_PAL_external.loaded = Util_sscanbool(ptr)) != -1; else if (strcmp(option, "COLOURS_PAL_ADJUST_EXTERNAL_PALETTE") == 0) return (COLOURS_PAL_external.adjust = Util_sscanbool(ptr)) != -1; else return FALSE; return TRUE; }
int FILTER_NTSC_ReadConfig(char *option, char *ptr) { if (strcmp(option, "FILTER_NTSC_SHARPNESS") == 0) return Util_sscandouble(ptr, &FILTER_NTSC_setup.sharpness); else if (strcmp(option, "FILTER_NTSC_RESOLUTION") == 0) return Util_sscandouble(ptr, &FILTER_NTSC_setup.resolution); else if (strcmp(option, "FILTER_NTSC_ARTIFACTS") == 0) return Util_sscandouble(ptr, &FILTER_NTSC_setup.artifacts); else if (strcmp(option, "FILTER_NTSC_FRINGING") == 0) return Util_sscandouble(ptr, &FILTER_NTSC_setup.fringing); else if (strcmp(option, "FILTER_NTSC_BLEED") == 0) return Util_sscandouble(ptr, &FILTER_NTSC_setup.bleed); else if (strcmp(option, "FILTER_NTSC_BURST_PHASE") == 0) return Util_sscandouble(ptr, &FILTER_NTSC_setup.burst_phase); else return FALSE; }
int VIDEOMODE_ReadConfig(char *option, char *ptr) { if (strcmp(option, "VIDEOMODE_WINDOW_WIDTH") == 0) return (window_resolution.width = Util_sscandec(ptr)) != -1; else if (strcmp(option, "VIDEOMODE_WINDOW_HEIGHT") == 0) return (window_resolution.height = Util_sscandec(ptr)) != -1; else if (strcmp(option, "VIDEOMODE_FULLSCREEN_WIDTH") == 0) return (init_fs_resolution.width = Util_sscandec(ptr)) != -1; else if (strcmp(option, "VIDEOMODE_FULLSCREEN_HEIGHT") == 0) return (init_fs_resolution.height = Util_sscandec(ptr)) != -1; else if (strcmp(option, "VIDEOMODE_WINDOWED") == 0) return (VIDEOMODE_windowed = Util_sscanbool(ptr)) != -1; else if (strcmp(option, "VIDEOMODE_HORIZONTAL_AREA") == 0) { int i = CFG_MatchTextParameter(ptr, horizontal_area_cfg_strings, VIDEOMODE_HORIZONTAL_SIZE); if (i < 0) { VIDEOMODE_horizontal_area = VIDEOMODE_HORIZONTAL_CUSTOM; return (VIDEOMODE_custom_horizontal_area = Util_sscandec(ptr)) != -1 && VIDEOMODE_custom_horizontal_area >= VIDEOMODE_MIN_HORIZONTAL_AREA && VIDEOMODE_custom_horizontal_area <= VIDEOMODE_MAX_HORIZONTAL_AREA; } VIDEOMODE_horizontal_area = i; } else if (strcmp(option, "VIDEOMODE_VERTICAL_AREA") == 0) { int i = CFG_MatchTextParameter(ptr, vertical_area_cfg_strings, VIDEOMODE_VERTICAL_SIZE); if (i < 0) { VIDEOMODE_vertical_area = VIDEOMODE_VERTICAL_CUSTOM; return (VIDEOMODE_custom_vertical_area = Util_sscandec(ptr)) != -1 && VIDEOMODE_custom_vertical_area >= VIDEOMODE_MIN_VERTICAL_AREA && VIDEOMODE_custom_vertical_area <= VIDEOMODE_MAX_VERTICAL_AREA; } VIDEOMODE_vertical_area = i; } else if (strcmp(option, "VIDEOMODE_HORIZONTAL_SHIFT") == 0) return Util_sscansdec(ptr, &VIDEOMODE_horizontal_offset); else if (strcmp(option, "VIDEOMODE_VERTICAL_SHIFT") == 0) return Util_sscansdec(ptr, &VIDEOMODE_vertical_offset); else if (strcmp(option, "VIDEOMODE_STRETCH") == 0) { int i = CFG_MatchTextParameter(ptr, stretch_cfg_strings, VIDEOMODE_STRETCH_SIZE); if (i < 0) { VIDEOMODE_stretch = VIDEOMODE_STRETCH_CUSTOM; return Util_sscandouble(ptr, &VIDEOMODE_custom_stretch) && VIDEOMODE_custom_stretch >= 1.0; } VIDEOMODE_stretch = i; } else if (strcmp(option, "VIDEOMODE_FIT") == 0) { int i = CFG_MatchTextParameter(ptr, fit_cfg_strings, VIDEOMODE_FIT_SIZE); if (i < 0) return FALSE; VIDEOMODE_fit = i; } else if (strcmp(option, "VIDEOMODE_IMAGE_ASPECT") == 0) { int i = CFG_MatchTextParameter(ptr, keep_aspect_cfg_strings, VIDEOMODE_KEEP_ASPECT_SIZE); if (i < 0) return FALSE; VIDEOMODE_keep_aspect = i; } #if SUPPORTS_ROTATE_VIDEOMODE else if (strcmp(option, "VIDEOMODE_ROTATE90") == 0) return (VIDEOMODE_rotate90 = Util_sscanbool(ptr)) != -1; #endif else if (strcmp(option, "VIDEOMODE_HOST_ASPECT_RATIO") == 0) { if (strcmp(ptr, "AUTO") == 0) VIDEOMODE_host_aspect_ratio_w = VIDEOMODE_host_aspect_ratio_h = 0.0; else return ParseAspectRatio(ptr, &VIDEOMODE_host_aspect_ratio_w, &VIDEOMODE_host_aspect_ratio_h); } #if NTSC_FILTER else if (strcmp(option, "VIDEOMODE_NTSC_FILTER") == 0) return (VIDEOMODE_ntsc_filter = Util_sscanbool(ptr)) != -1; #endif #if COLUMN_80 else if (strcmp(option, "VIDEOMODE_80_COLUMN") == 0) return (VIDEOMODE_80_column = Util_sscanbool(ptr)) != -1; #endif else return FALSE; return TRUE; }
int VIDEOMODE_Initialise(int *argc, char *argv[]) { int i, j; for (i = j = 1; i < *argc; i++) { int i_a = (i + 1 < *argc); /* is argument available? */ int a_m = FALSE; /* error, argument missing! */ int a_i = FALSE; /* error, argument invalid! */ if (strcmp(argv[i], "-win-width") == 0) { if (i_a) a_i = (window_resolution.width = Util_sscandec(argv[++i])) == -1; else a_m = TRUE; } else if (strcmp(argv[i], "-win-height") == 0) { if (i_a) a_i = (window_resolution.height = Util_sscandec(argv[++i])) == -1; else a_m = TRUE; } else if (strcmp(argv[i], "-fs-width") == 0) { if (i_a) a_i = (init_fs_resolution.width = Util_sscandec(argv[++i])) == -1; else a_m = TRUE; } else if (strcmp(argv[i], "-fs-height") == 0) { if (i_a) a_i = (init_fs_resolution.height = Util_sscandec(argv[++i])) == -1; else a_m = TRUE; } else if (strcmp(argv[i], "-fullscreen") == 0) VIDEOMODE_windowed = FALSE; else if (strcmp(argv[i], "-windowed") == 0) VIDEOMODE_windowed = TRUE; else if (strcmp(argv[i], "-horiz-area") == 0) { if (i_a) { int idx = CFG_MatchTextParameter(argv[++i], horizontal_area_cfg_strings, VIDEOMODE_HORIZONTAL_SIZE); if (idx < 0) { VIDEOMODE_horizontal_area = VIDEOMODE_HORIZONTAL_CUSTOM; a_i = (VIDEOMODE_custom_horizontal_area = Util_sscandec(argv[i])) == -1 || VIDEOMODE_custom_horizontal_area < VIDEOMODE_MIN_HORIZONTAL_AREA || VIDEOMODE_custom_horizontal_area > VIDEOMODE_MAX_HORIZONTAL_AREA; } else VIDEOMODE_horizontal_area = idx; } else a_m = TRUE; } else if (strcmp(argv[i], "-vert-area") == 0) { if (i_a) { int idx = CFG_MatchTextParameter(argv[++i], vertical_area_cfg_strings, VIDEOMODE_VERTICAL_SIZE); if (idx < 0) { VIDEOMODE_vertical_area = VIDEOMODE_VERTICAL_CUSTOM; a_i = (VIDEOMODE_custom_vertical_area = Util_sscandec(argv[i])) == -1 || VIDEOMODE_custom_vertical_area < VIDEOMODE_MIN_VERTICAL_AREA || VIDEOMODE_custom_vertical_area > VIDEOMODE_MAX_VERTICAL_AREA; } else VIDEOMODE_vertical_area = idx; } else a_m = TRUE; } else if (strcmp(argv[i], "-horiz-shift") == 0) { if (i_a) a_i = !Util_sscansdec(argv[++i], &VIDEOMODE_horizontal_offset); else a_m = TRUE; } else if (strcmp(argv[i], "-vert-shift") == 0) { if (i_a) a_i = !Util_sscansdec(argv[++i], &VIDEOMODE_vertical_offset); else a_m = TRUE; } else if (strcmp(argv[i], "-stretch") == 0) { if (i_a) { int idx = CFG_MatchTextParameter(argv[++i], stretch_cfg_strings, VIDEOMODE_STRETCH_SIZE); if (idx < 0) { VIDEOMODE_stretch = VIDEOMODE_STRETCH_CUSTOM; a_i = !Util_sscandouble(argv[i], &VIDEOMODE_custom_stretch) || VIDEOMODE_custom_stretch < 1.0; } else VIDEOMODE_stretch = idx; } else a_m = TRUE; } else if (strcmp(argv[i], "-fit-screen") == 0) { if (i_a) { if ((VIDEOMODE_fit = CFG_MatchTextParameter(argv[++i], fit_cfg_strings, VIDEOMODE_FIT_SIZE)) < 0) a_i = TRUE; } else a_m = TRUE; } else if (strcmp(argv[i], "-image-aspect") == 0) { if (i_a) { if ((VIDEOMODE_keep_aspect = CFG_MatchTextParameter(argv[++i], keep_aspect_cfg_strings, VIDEOMODE_KEEP_ASPECT_SIZE)) < 0) a_i = TRUE; } else a_m = TRUE; } #if SUPPORTS_ROTATE_VIDEOMODE else if (strcmp(argv[i], "-rotate90") == 0) VIDEOMODE_rotate90 = TRUE; else if (strcmp(argv[i], "-no-rotate90") == 0) VIDEOMODE_rotate90 = FALSE; #endif /* SUPPORTS_ROTATE_VIDEOMODE */ else if (strcmp(argv[i], "-host-aspect-ratio") == 0) { if (i_a) { if (strcmp(argv[++i], "auto") == 0) VIDEOMODE_host_aspect_ratio_w = VIDEOMODE_host_aspect_ratio_h = 0.0; else a_i = !ParseAspectRatio(argv[i], &VIDEOMODE_host_aspect_ratio_w, &VIDEOMODE_host_aspect_ratio_h); } else a_m = TRUE; } #if NTSC_FILTER else if (strcmp(argv[i], "-ntscemu") == 0) VIDEOMODE_ntsc_filter = TRUE; else if (strcmp(argv[i], "-no-ntscemu") == 0) VIDEOMODE_ntsc_filter = FALSE; #endif /* NTSC_FILTER */ #if COLUMN_80 else if (strcmp(argv[i], "-80column") == 0) VIDEOMODE_80_column = TRUE; else if (strcmp(argv[i], "-no-80column") == 0) VIDEOMODE_80_column = FALSE; #endif /* COLUMN_80 */ else { if (strcmp(argv[i], "-help") == 0) { Log_print("\t-win-width <num> Host window width"); Log_print("\t-win-height <num> Host window height"); Log_print("\t-fs-width <num> Host fullscreen width"); Log_print("\t-fs-height <num> Host fullscreen height"); Log_print("\t-fullscreen Run fullscreen"); Log_print("\t-windowed Run in window"); Log_print("\t-horiz-area narrow|tv|full|<number>"); Log_print("\t Set horizontal view area"); Log_print("\t-vert-area short|tv|full|<number>"); Log_print("\t Set vertical view area"); Log_print("\t-horiz-shift <num> Set horizontal shift of the visible area (-%i..%i)", VIDEOMODE_MAX_HORIZONTAL_AREA, VIDEOMODE_MAX_HORIZONTAL_AREA); Log_print("\t-vert-shift <num> Set vertical shift of the visible area (-%i..%i)", VIDEOMODE_MAX_VERTICAL_AREA, VIDEOMODE_MAX_VERTICAL_AREA); Log_print("\t-stretch none|integral|full|<number>"); Log_print("\t Set method of image stretching"); Log_print("\t-fit-screen width|height|both"); Log_print("\t Set method of image fitting the screen"); Log_print("\t-image-aspect none|square-pixels|real"); Log_print("\t Set image aspect ratio"); #if SUPPORTS_ROTATE_VIDEOMODE Log_print("\t-rotate90 Rotate the screen sideways"); Log_print("\t-no-rotate90 Don't rotate the screen"); #endif /* SUPPORTS_ROTATE_VIDEOMODE */ Log_print("\t-host-aspect-ratio auto|<w>:<h>"); Log_print("\t Set host display aspect ratio"); #if NTSC_FILTER Log_print("\t-ntscemu Enable NTSC composite video filter"); Log_print("\t-no-ntscemu Disable NTSC composite video filter"); #endif #if COLUMN_80 Log_print("\t-80column Show output of an 80 column card, if present"); Log_print("\t-no-80column Show standard screen output"); #endif } argv[j++] = argv[i]; } if (a_m) { Log_print("Missing argument for '%s'", argv[i]); return FALSE; } else if (a_i) { Log_print("Invalid argument for '%s'", argv[--i]); return FALSE; } } *argc = j; #ifdef XEP80_EMULATION display_modes[VIDEOMODE_MODE_XEP80].asp_ratio = xep80_aspect_ratio_ntsc; #endif return TRUE; }