Software Support > GroovyMAME

Direct3D may not show custom video modes (Windows 7)


I just came across this interesting thread over on the VirtualDub blog.
It might explain some of the weird Windows 7 behavior...

Direct3D may not show custom video modes

Hi krick,

Thanks for poiting that out! I just run across the same issue some weeks ago messing with Windows/DirectX API when testing on a normal SVGA CRT monitor. The problem appears when your monitor has a valid EDID, so some resolutions get filtered by Windows if it considers they're not inside the monitor's ranges. While this helps in most cases, it actually prevents some valid resolutios from being available, as was the case for 512 lines resolutions in that particular monitor I was testing.

I found that you have to do two things in order to bring these resolutions back:

- Uncheck the "hide modes that the monitor cannot display" option in the display properties dialog.
- Enumarate available resolutions with the EDS_RAWMODE flag enabled.

However, it turned out this only works for DirectDraw (another reason to stick with ddraw when using CRTs), so when using Direct3D these modes are still hidden from us.

This is the reason I added this 'flags' param to the GetAvailableVideoModes funtion in switchres.c in the last GroovyMAME diffs, however I commented it out by now until I can do further testing:

--- Code: --- //if (!strcmp(, "ddraw"))
// flags = EDS_RAWMODE;
machine.switchRes.modecount = GetAvailableVideoModes(machine.switchRes.videoModes, flags);
--- End code ---

Anyway, I doubt this has anything to do with the interlace issues in Win7. I've got my personal theory for that. Interlaced modes such as 50i Hz / 60i Hz are usually used to display PAL / NTSC video material, which has a native rate 25 / 30 fps. So someone must have the good idea of just reporting one out of two vertical retrace signals (which actually is the right thing from the whole frame count point of view), but this ruins the possibility of vsyncing these modes for arcade uses.


[0] Message Index

Go to full version