1 (edited by pakoman 2017-02-24 20:47:42)

Topic: Custom resolutions through EDID without changing video driver

Very basic guide about how to add custom resolutions through EDID (ATI, NVIDIA, Intel) with stock drivers. Further testing is welcome (even Vmmaker adding resolutions through the emulated EDID would be more than welcome :D)

Needed software VMMaker and CRU.

http://www.makeuseof.com/tag/how-to-set … indows-10/
https://www.monitortests.com/forum/Thre … tility-CRU

1.    Install an emulated EDID with Vmmaker or CRU (e.g. GENERIC_15). UNTESTED WITH CRU.
2.    Run CRU as administrator.
3.    Select at upper left corner the emulated EDID (e.g. GENERIC_15).
4.    Go to Detailed Resolutions, click Add... and enter the custom resolution values.
5.    Click OK (there can be up to 4 Detailed Resolutions).
6.    If more resolutions are needed go to Extension Blocks. Then CEA-861 exension block. Up to 6 resolutions can be added here.  Ok to accept the resolutions.
7.    Click Ok to close CRU and add the resolutions to the EDID.
8.    Run Restart or Restart64 depending on the Windows version. The screen will blink and the custom resolutions are now available.

Notes:

-Tested on Windows 10 64bits with ATI Catalyst 2015.1104.1643.30033 and driver 15.201.1151.1008-151104a-296217E. Mobility Radeon HD 5650 1GB. This should work with any card supporting EDID.

-Vmmaker only works with ATI hardware (not sure about this).

- Catalyst  Control Center is fully functional for the custom resolutions.

-WARNING: GroovyMame/switchres shows in the splash screen the vertical refresh is trying to use, it doesn't mean that the driver is accepting that refresh! So the custom resolutions must have the right vertical refresh as switches won't be able to set arbitrary hz with resolutions below 480 lines without patched drivers. UNTESTED.
-Setting arbitrary vertical refreshes should work for resolutions above 480 lines with unpatched drivers WHILE the system has LESS THAN 10 CUSTOM resolutions. UNTESTED.

-Vmmaker allows to add up to 10 resolutions to plain ATI driver (not EDID) but the driver will reject anything below 480 lines (unless is patched).

-Both methods of adding resolutions should work together EDID + Vmmaker.

-CRU also works with NVIDIA and Intel as they also support EDIDs. UNTESTED

-Adding 480 lines resolutions Through Extension blocks adds more 480 lines resolutions like 800x480 and 720x480. This doesn't happen with Vmmaker.

-Testing is recommended on the secondary screen in order to be able to fix things if something goes wrong.

- mame64 –verbose  shows needed information about screens. mame64 –screen \\.\DISPLAY(screen nº) tells Mame which screen use.


This method is perfect to avoid changing the video driver, not using a dedicated computer or even not using ATI cards.
Results may differ depending on each specific driver limitations. This guide is based on my current hardware and drivers.
However this allows to easily setup Retroarch or Groovymame without the need of installing CRT Emudriver adding for instance resolutions like:
2560x288@50hz
2560x272@51hz
2560x260@53hz
2560x256@55hz
2560x248@57hz
2560x242@60hz
2560x236@60hz
2560x224@60hz

Groovymame needs to be configured for SuperResolutions and Retroarch needs this options:

video_shader_enable = "false"
video_aspect_ratio = "10.60000"
video_aspect_ratio_auto = "false"
video_windowed_fullscreen = "true"
video_scale_integer = "true"
video_smooth = "false"
video_fullscreen = "true"
video_refresh_rate = "59.950001"
video_monitor_index = "2"   (this one select the secondary display)
video_fullscreen_x = "2560"
video_fullscreen_y = "240"
custom_viewport_width = "2560"
custom_viewport_height = "240"
custom_viewport_x = "2560"
custom_viewport_y = "240"
flicker_filter_enable = "false"
soft_filter_enable = "false"
soft_filter_index = "0"
current_resolution_id = "0"
aspect_ratio_index = "19"

http://i63.tinypic.com/250ouwj.png
http://i68.tinypic.com/2mguzbc.png
http://i67.tinypic.com/29m81li.png
http://i65.tinypic.com/352oumf.png
http://i64.tinypic.com/i5mzc1.png
http://i63.tinypic.com/2viqnwy.png
http://i65.tinypic.com/2vb2yrc.png
http://i65.tinypic.com/2ebamg4.png
http://i65.tinypic.com/2lay39h.png





EDIT: What is this about? Just to clarify a bit:

An emulated EDID can trick the system to think a fake monitor is connected to the graphics card. We can add to that EDID the supported custom resolutions to that fake monitor, and they will be available for that screen.

FOR ATI (tested by me):
-Almost any ATI card  (5000 series and higher?) with standard drivers can be used with custom resolutions through EDID.
-Vmmaker/CRU can install an emulated EDID with standard drivers. CRU can add custom resolutions to that EDID.
-Vmmaker can install custom resolutions with standard drivers (10 maximum and above 640x480 but these can be easily removed on standard drivers with ATI Pixelclock patcher. Calamity removed these limitations in CRT Emudriver long time ago).
-Calamity added to CRT Emudriver the ability to create resolutions on the fly without restarting the driver, GroovyMame uses this feature.
-GroovyMame source can be easily modified to work with standard drivers by adding the resolution and reseting the graphics card instead of use the above mentioned feature (that is not present on standard drivers). If the needed resolution is bigger than 640x480 it won't work (unless the driver is patched) and if a graphics card reset is needed to add the custom resolution the screen will do a blink more than CRT Emudriver and the "USB plug and detect hardware" will sound.
-Theoretically, if GroovyMame could add resolutions to the EDID instead of to the driver and reset the card it would work out of the box with standard drivers.


FOR OTHERS:
-Almost any Nvidia card with standard drivers can be used with custom resolutions through EDID. May need a dongle connected for the emulated EDID.
-There is a Nvidia Patcher to remove some driver limitations.
-CRU can install an emulated EDID with standard drivers. CRU can add custom resolutions to that EDID.
-Some intel cards with a special driver can be used with custom resolutions through EDID with CRU.

2

Re: Custom resolutions through EDID without changing video driver

Nice job Pakoman! Just wanted to make some comments.

With regards to EDID emulation, as far as I know CRU uses EDID overrides, which is a feature of Windows. On the other hand VMMaker uses EDID emulation, an ATI specific feature. EDID emulation operates on a somewhat lower level than EDID overrides, because it's the driver what reports a fake monitor, so from Windows standpoint it's just another monitor, it basically can't tell the difference.

The link from Nvidia that buttersoft posted shows there's an equivalent method that works for Nvidia Quadros. The thing is the method VMMaker uses for EDID emulation is only supposed to work for AMD Firepros, but VMMaker uses a hack to make it available for all AMD cards. Maybe the same could be done for Nvidia. (It's really funny how these companies copy each other. These workstation cards are sold at unjustifiably expensive prices and some of their features are just functionality being capped by the driver on the lower-end models).

With regards to stock ATI driver, I can confirm it won't accept more than 10 custom modes and nothing below 640x480 (this is not a pixel clock limitation that could be patched, rather than that it's a crude "if x < 640 or y < 480 then " check hardcoded in the driver that CRT Emudriver explicitely removes). One could try to use the registry to add the modes instead of using the API in order to bypass the check, but then, again, GM wouldn't be able to udpate the video timings afterwards because the check would be applied then. Believe me when I say that I exhausted all these possibilities when developing GM for 5000+ cards last year. Sadly there was no option but to use a patched driver.

Now on the other hand, adding the modes to an emulated EDID, even if read only,  is an interesting alternative, specially for super resolutions. The check I mentioned doesn't apply to those modes (this could be different for Nvidia).

I have to say I never liked the EDID approach because its read-only-ness takes us a decade back into the past. Our quest is custom video, rather than a boring "15-kHz output". However, that said, I have to confess I often miss the possibility of outputting even a single custom video mode from an average laptop, even if I had to configure it manuallyover and over. So I understand here's where this method could shine.

3 (edited by pakoman 2017-01-05 19:59:14)

Re: Custom resolutions through EDID without changing video driver

Thanks Calamity for the comments and clarifications.

I know the ATI Pixel Clock patcher has nothing to do with this, but I meant more about the fact that it seems to patch the stock driver without needing to boot in safe mode or reinstall. Couldn't the same patching approach be used to patch the 640x480 check limitation on stock drivers?  With super resolutions 9 custom modes should be enough.

I agree, for a dedicated emulation computer CRT Emudriver is the way to go. But if you still want to use the computer as usual without having to install a specific emulation system while being able to play at native resolutions, or simply don't have a CRT Emudriver compatible card, EDID resolutions do the trick.


EDIT: I've just patched my stock ATI driver and it seems to patch more than the pixel clock!  Have to do more testing :D

http://i66.tinypic.com/2ymhyki.jpg


EDIT2:  IT WORKS ! ! ! ! !  :D:D:D

4

Re: Custom resolutions through EDID without changing video driver

Definitely need to check this :D

5

Re: Custom resolutions through EDID without changing video driver

It works with the modified GM you sent me days ago :)