* Change default composite_sync value to 1
From a troubleshooting perspective, composite_sync=1 seems like a more common gotcha because more people are using consumer CRTs than monitors.
I'm wondering if it makes sense to make this change as it covers more use cases.
* Update cfg.cpp
* Simple Auto Direct Video
direct_video=2
Checks for 1024x768 HDMI resolution and sets direct_video=1
No hot plug detect
No EDID parsing
No device whitelist
No hdmi_limited set based on EDID whitelist
* Add EDID detection and set hdmi_limited for common DACs
- AG6200 sets hdmi_limited=2
- CS5213 sets hdmi_limited=0
* Fix logic to pass normal EDID resolution if not 1024x768
* Update MiSTer.ini
* Remove 1024x768 resolution check
- Only use mfg_id from EDID to identify known compatible DACs
* Add DAC id and settings to dv_dac.txt and dv_dac_user.txt
- mfg_id
- rgb range
- hdmi_audio_96khz
- composite_sync: 0, 1, or "" (default is "")
- dv_dac_user.txt for HDMI video upscalers that support direct video
- device commented out by default
Add osd_lock and osd_lock_time config options
When osd_lock is set it specifies a sequence of button pressed that must be pressed in order to gain access to the OSD while running a core.
osd_lock_time is the time (in seconds) before you will be prompted again for the unlock code after you have closes the OSD.
Co-authored-by: Martin Donlon <github-martin@donlons.com>
Add ini option `unique_mapping` which makes controller mappings unique to the physical port the controller is connected to.
Calculates a uint32_t unique_hash for each device during enumeration.
Co-authored-by: Martin Donlon <github-martin@donlons.com>
Update Y/C Parser
- Added the Y/C tuned phase inc's into the yc.txt file.
- Fixed an issue with the parser handling spaces in the core name
Removed force SOG on CVBS / SVIDEO Modes
`preset_default` option added to ini. Filename is relative to the presets/ path.
"Reset to defaults" option added to video processing menu which will delete the config files and reload the default configuration.
* Merge branch 'hdr' of https://github.com/wickerwaka/Main_MiSTer into feature-hdr
Merged in wickerwaka's old HDR branch and integrated the BT2020 and DCI P3 color space conversion matrices. Changed "hdr" option to be a selection of matrix instead of saturation option.
* Add HDR example to MiSTer ini
* Addition of HDMI color controls (brightness, contrast, saturation, hue, gain, offset) that can be tweaked via MiSTer.ini (examples in-file). These controls are used to construct a matrix for the HDMI chip's color space converter. Due to the nature of this change, HDMI limited and YCbCr options have been reworked and combined into the color matrix routine (hdmi_config_set_csc)
* Change cc_ prefix to video_, as per suggestion and inline with existing video options.
Added `cfg_error` function for reporting errors in the ini.
Report errors when parsing video_mode information.
Report out of bounds settings.
Report unknown settings.
Detect numeric parse failures.
* Support enabling VRR on displays that advertise it
* Disable SPD and Spare packet registers when they aren't needed. Update ini
Co-authored-by: Zakk <zakk@rsdio.com>
vertical scale and use the minimum.
vscale_mode has been changed to make it more reliable.
vscale_mode=4 - Generate modes that match the cores aspect ratio.
Generally better, will work with more cores and produce most optimal
resolutions, but will not be compatible with displays that always
stretch the image to fill.
vscale_mode=5 - Generate modes that match the original display aspect
ratio, if the core needs a wider aspect then the resolution is not
changed. Compatible with a wider range of displays.
Updated INI with a clearer description.
Removed mode 6 since it was not being used and adjusting display width
doesn't enable integer horizontal scaling.
uh undo
Integer Resolution Scaling
Generate a video mode whose vertical resolution is an integer multiple
of the cores vertical resolution. The video mode set via the
`video_mode` parameter is considered the maximum resolution. There are
two modes of operation: vscale_mode=4 - Both vertical and horizontal
resolution are modified. The horizontal resolution is scaled in
propotion to the vertical, so the aspect ratio is maintained. This will
be most suited to VGA CRTs that expect a specific aspect ratio signal.
vscale_mode=5 - Only the vertical resolution is modified. This will be
suitable for most modern LCD/OLED displays. The additional horizontal
resolution provides more space for wide aspect ratio cores.
Video Mode Calculation
CVT timing calculations are used to generate the modified video modes
for Interger Resolution Scaling, this mode generation is also exposed as
an additional way to specify video modes in the MiSTer.ini. Modes can be
specified with just the width, height and refresh rate:
`video_mode=1920,1200,60`. Whether to use the original CVT or the
reduced blanking CVT-RB timings can be specified with an optional flag,
e.g. `video_mode=1024,768,60,cvt`. Additionally the sync polarities can
also be expressed using flags now, e.g.
`video_mode=1280,110,40,220,720,5,5,20,74250,+hsync,-vsync`
Code Changes
More functionality was broken out of `video_mode_adjust`.
`video_mode_select` determines what the correct base video mode is based
on the timing and vsync_adjust configuration. The mode selected there is
then passed to `video_resolution_adjust` which modifies it based on the
integer resolution scaling selected. Other than that the functionality
of `video_mode_adjust` remains the same.
The `video_calculate_cvt` function was added to calculated video mode
timings.
`parse_custom_video_mode` was changed to support the additional flags.
It now uses `str_tokenize` to split up the input string so it is more
easy to manage the different variations of parameter counts allowed for
the modes.
`vmode_custom_param_t` was added to alias the items in the
vmode_custom_t instead of using raw array indexing everywhere.
`str_util.h/.cpp` added to provide some safer and easy to use string
functions. `strcpyz`, `strncpyz`, `sprintfz` all ensure that the
resulting string is null terminated and doesn't overrun memory.