The NEW Build Your Own Arcade Controls

Software Support => GroovyMAME => Topic started by: edomatic on March 26, 2017, 10:35:57 am

Title: Custom EDID generation expert help needed
Post by: edomatic on March 26, 2017, 10:35:57 am
Guys,

a little help with the following is welcome

i am using ubuntu 16.10,groovymame0.183 with MSI radeon 5450

I am trying to create a custom EDID file for my sony BVM but am struggling with this..
At the moment i am using the generic_15.bin edid file from Ansa89 using thr grub boot loader alteration:
GRUB_CMDLINE_LINUX_DEFAULT="quiet video=VGA-1:e drm_kms_helper.edid_firmware=VGA-1:edid/edid_generic15.bin"

This works, however i notice that most games do not use the full screen window (altough the ubuntu 640x480 desktop does)
and some games are shifted to the left meaning their is a black bar on the right)

Would a custom created EDID solve this?

so far i have tried using a cvt 640 480 60 modeline but when i run that through xrandr to test it the monitor does not sync to it.
Currently this modeline is used (retrieved it from Xorg.0.log):
Modeline "640x480i" x0.0 13.00 640 664 728 832 480 482 488 521 interlace -hsync -vsync

When i do cvt 640 480 60 i get this modeline (but does not sync when tried with xrandr):
Modeline "640x480_60.00" 23.75 640 664 720 800 480 483 487 500 -hsync +vsync

very confusing this EDID  ???



Title: Re: Custom EDID generation expert help needed
Post by: buttersoft on March 26, 2017, 11:42:06 pm
I'm assuming the BVM is 15kHz only, because that modeline you're generating isn't interlaced, and thus it's not 15kHz it's 31kHz (or thereabouts).

I highly doubt the problem with games not filling the screen will be fixed by an EDID. You need a bunch of modelines for different games and different emulators, and then you have to make sure you're using the right one for each game. GroovyMAME knows how to pick modes, most other emulators don't. For example if you set an emulator to run a CPS1 game (384x224) with integer scaling in the vertical direction, and only have a single 480i modeline, it will scale x2 and leave 16 blank lines at the top and 16 at the bottom. Ideally you want integer scaling, with the integer being 1 for lower resolution games on lower resolution screens, but you need the modes to make it work.
Title: Re: Custom EDID generation expert help needed
Post by: edomatic on March 27, 2017, 02:16:58 am
Hi Buttersoft,

 first off thanks for taking the time to respond  :)
yes you are right about the interlace, but i also tried it with a "cvt 640 480 60 i" command, and that does creates the 640 by 480 interlace mode, but that did not work either.
I am only using my machine for mame with groovymame, not for consoles
I believe you might be right about the fixing games not filling the whole screen that the EDID will not be the solution
There must be a way however somehow to tell groovymame or switchres what the screen dimensions are and about that i found this webpage that discussed modelines and quoting here only the piece at the bottom of this page
(source: http://www.geocities.ws/podernixie/htpc/modes-en.html (http://www.geocities.ws/podernixie/htpc/modes-en.html))

"Adjustments"

All modes in this document can be slightly readjusted in order to fit them to particular devices. Each mode follows this general format:

Modeline "Description" FF.FFF HHH HHI HHF HHT VVV VVI VVF VVT (options)
The following simple modifications can be done without redoing the entire mode.

Position shift: to shift the picture left or right add or substract the number of pixels you want to shift to the HHI and HHF values equally. Keep in mind the limits: HHI cannot be less or equal than HHH and HHF cannot be greater or equal than HHT.
The same procedure is used for vertical shifting with values VVI and VVF.
Size/resolution reduction to reduce picture size lower HHH or VVV. This will cut the picture from its right or bottom side respectively, leaving black bars and keeping pixel aspect. Once done, you will have to select the new resolution and may have to center the picture again (position shift).
Picture width: it is possible to adjust picture width keeping the same resolution by adjusting pixel aspect. Modify HHT, a lower value means wider pixels. Then FF.FFF has to be recalculated multiplying HHT by the desired horizontal frequency in MHz, that is 0.015625 for PAL, 0.015734 for NTSC or 0.02496 for 25kHz arcade screens). HHT cannot be less or equal than HHF and FF.FFF must not exceed the maximum pixel clock allowed by the video card.
Horizontal resolution doubling: some old video cards like Matrox do not support the low resolutions used in most old videogames. To correct this problem multiply by two these values: FF.FFF, HHH, HHI, HHF, HHT and set the emulator to use the new resolution.

This sugests that there is room to adjust the modelines by tweaking the values, but i do not have a clue where groovymame stores these and if they could be adjusted this way, if that solves it, i would be willing to work on adapting them to my screen needs if that's what it takes to get the games correctly centered and fullscreen
This adjusting modeline smells like it will be time consuming but i would be willing to give a crack at it if that solves my problem.


Title: Re: Custom EDID generation expert help needed
Post by: buttersoft on March 27, 2017, 06:54:13 am
CRT's aren't fixed pixel though, so you can use a super resolution like 2560x240p and it takes up the same physical space as 320x240p. If you meant that you need to set the resolutions (not size) in the emulators, then yeah, that'd be a good idea :) You can probably also set stretching options, depending on the emulator. Certainly you can in GM for windows, but i don't know anything about Linux, soz.