Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: Direct3D may not show custom video modes (Windows 7)  (Read 3866 times)

0 Members and 1 Guest are viewing this topic.

krick

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2006
  • Last login:February 08, 2023, 08:30:27 pm
  • Gotta have blue hair.
Direct3D may not show custom video modes (Windows 7)
« on: August 28, 2011, 11:53:32 pm »
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
http://www.virtualdub.org/blog/pivot/entry.php?id=349
Hantarex Polo 15KHz
Sapphire Radeon HD 7750 2GB (GCN)
GroovyMAME 0.197.017h_d3d9ex
CRT Emudriver & CRT Tools 2.0 beta 13 (Crimson 16.2.1 for GCN cards)
Windows 7 Home Premium 64-bit
Intel Core i7-4790K @ 4.8GHz
ASUS Z87M-PLUS Motherboard

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7418
  • Last login:May 02, 2024, 04:59:06 am
  • Quote me with care
Re: Direct3D may not show custom video modes (Windows 7)
« Reply #1 on: August 29, 2011, 07:26:20 am »
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: [Select]
//if (!strcmp(options.video(), "ddraw"))
// flags = EDS_RAWMODE;
machine.switchRes.modecount = GetAvailableVideoModes(machine.switchRes.videoModes, flags);

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.
Important note: posts reporting GM issues without a log will be IGNORED.
Steps to create a log:
 - From command line, run: groovymame.exe -v romname >romname.txt
 - Attach resulting romname.txt file to your post, instead of pasting it.

CRT Emudriver, VMMaker & Arcade OSD downloads, documentation and discussion:  Eiusdemmodi