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: Switchres: modeline generator engine  (Read 344302 times)

0 Members and 1 Guest are viewing this topic.

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
The right settings as you say are: unevenstretch 0, keepaspect 0, unless you are stretching, which it's not going to be necessary with your monitor as it accepts any resolution. Streching is only interesting in addition to interlace, i.e. to show vertical games with more than 288 lines on a horizontal lowres monitor. Stretching helps reducing the flicker introduced by interlace, at the cost of ruining sharpness.

I've seen the problem with DBZ, it also happens with Golden Axe: Revenge of Death Adder (SEGA too). I have seen this before, the problem is that Mame reports a wrong resolution, active xres is not 416 but maybe around 320 or so. Then you get big side borders. I've also seen the opposite problem, Mame reports xres = 256 where it should be 320, i.e. Thunderforce AC or Bonanza Bros. so you get a chopped picture. It would good to have a list of resolution patches for these games to check before creating video modes.

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

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Upgrading to Maverick as I type.

There's also the "nouveau" drivers now too, which do support my TNT2 (and apparently work fine in 2D/"soft").  However it's using this new fangled kernel modeline stuff, so I'm not sure where to hack the minimum pclocks (or even if I can!).  But that will be my next step if Maverick doesn't play ball.

[edit]

Maverick upgrade is in.  Same issues as before with the nv_drv.so (even the latest from git).  It definitely looks like that driver can't understand XRandR requests.

nouveau certainly understands them (I can see the resize requests coming through in the log file), but the pixel clocks limits must be too high because it's throwing errors.

So, now I'm off to hack the nouveau drivers (and hopefully just the userspace stuff, and not kernel stuff too).

Maybe it's time to order an old ATI card off eBay? :)
I tried the nv driver with an nvidia card I have, and confirmed what your seeing.  It doesn't support Xrandr at all for mode switching, mine didn't even allow the custom modes because of the vertical refresh rate being out of bounds (which it isn't).  So from what I can tell that driver is just not able to do this, it does do vsync though with openGL but unfortunately we can't call it to switch modes we choose.

Now the trick it seems is to install that http://nouveau.freedesktop.org/wiki/InstallDRM#Installationnotes nouveau driver and all the additional stuff with it, like reinstall drm, mesa sdl and recompile mame too.  It needs some changes, but not the driver itself which is not where the pixelclock limitations come from but instead the drm part of the driver in the kernel.  I had to make changes so it chose a frame buffer console I could use, I had to do a lot of stuff and it wasn't simple unfortunately but it may just work.  I've at least got modeswitching working so equal to the radeon card, I'm seeing if I can get the vsync stuff working for it too.  It looks promising and is already a better driver than the nv one, but I'm not sure how stable it is when really fully using OpenGL yet.  

Here's the patch I had to make to the kernel directory for it...
Code: [Select]
diff -ru master/drivers/gpu/drm/drm_crtc_helper.c nouveau/drivers/gpu/drm/drm_crtc_helper.c
--- master/drivers/gpu/drm/drm_crtc_helper.c    2010-10-21 00:12:37.000000000 -0500
+++ nouveau/drivers/gpu/drm/drm_crtc_helper.c   2010-10-22 02:20:57.000000000 -0500
@@ -116,7 +116,7 @@

        count = (*connector_funcs->get_modes)(connector);
        if (count == 0 && connector->status == connector_status_connected)
-               count = drm_add_modes_noedid(connector, 1024, 768);
+               count = drm_add_modes_noedid(connector, 640, 480);
        if (count == 0)
                goto prune;

diff -ru master/drivers/gpu/drm/nouveau/nouveau_connector.c nouveau/drivers/gpu/drm/nouveau/nouveau_connector.c
--- master/drivers/gpu/drm/nouveau/nouveau_connector.c  2010-10-21 00:12:37.000000000 -0500
+++ nouveau/drivers/gpu/drm/nouveau/nouveau_connector.c 2010-10-22 02:40:41.000000000 -0500
@@ -666,7 +666,7 @@
        struct nouveau_connector *nv_connector = nouveau_connector(connector);
        struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
        struct drm_encoder *encoder = to_drm_encoder(nv_encoder);
-       unsigned min_clock = 25000, max_clock = min_clock;
+       unsigned min_clock = 3000, max_clock = min_clock;
        unsigned clock = mode->clock;

        switch (nv_encoder->dcb->type) {

That allowed the frame buffer to come up and show up on my monitor, but I'm not sure if it may need more hacking to add a modeline in the default modes when no EDID is detected for an Arcade monitor that isn't  a WG d9800 that can do VGA.  It complains about no EDID, I had to compile opengl and opendrm with support for it, and had to remove the dri module for it that opengl created because it caused a kernel oops.  But without that module, it looks better than the nv driver, and I'm recompiling mame now to see if it can do vsync.  For some reason, figure it's the newer opengl I just updated to from git with support for this card, mame now segfaults so I'll know in a bit if it just needs recompiled or it's a bigger issue.  I think something about the opengl support with the gallium support is not allowing things to use opengl.  So if that new Ubuntu supports this then by all means give it a try because maybe they have a working stable build of this.  Let me know how that goes, and if it can also do the vsync support, which is the main issue with the radeon cards which don't seem to support vsync.  If they do, it'd be with these newer kernels and the KMS support for the DRM driver.  Definitely a pain that it seems each driver and card combination has caveats and haven't found the perfect combo it seems since each one is missing a part, either vsync with no mode switching or mode switching without vsync support.

Thanks,
Chris

Edit:  Yeah it seems it can't do vsync like the nv driver can, but it does do modeswitching at least and works fine if you avoid the gallium support in opengl, that seems to be what causes the oops for me.  I'm hoping that when that works, then it'll do vsync with openGL.
« Last Edit: October 22, 2010, 05:13:03 am by bitbytebit »
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
AdvanceMAME did dynamic modeline generation at game start-up, and was initially Linux-based. Maybe you want to look at the source?

http://advancemame.sourceforge.net/

Thanks for reminding me, I actually have wanted to do that and tried awhile back but now should take another look.  I have learned a lot more since I last tried and suspect I can spot the stuff I need much easier now.  Definitely seems like what this is turning into is a wrapper for the normal mame/mess or other emulators that can give them the ability that advancemame has/had when it was up to date.  Hopefully can be a little less dependent on hardware, but I am starting to see how that is really a brick wall with certain cards with either the physical chips or the knowledge of how to get the chips to do what we need. 

AdvanceMame, at least Windows version, performs direct video hardware access, by installing it's own video driver stuff that is able to work on the hardware layer. It's the same that Powerstrip does. The problem with this approach is that it's very difficult to mantain, as newer versions of Mame and video hardware keep coming. The wrapper solution is much more elegant, provided we had drivers that worked as intended.

It's a shame that these drivers haven't implemented the basic vsync stuff. From the hardware point of view, it's one of the easiest things one can do, I believe any chip must support this:

Code: [Select]
mov dx, 03DAh
@@:
in al,dx
test al,8
jnz @B
@@:
in al,dx
test al,8
jz @B
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

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Version 0.12
* Should work better with nvidia cards, if you use the nouveau version because the xf86-nv driver does not work with xrandr mode switching.
* lots of improvements in the way that switchres chooses the resolution, lrmc improved in being more separate and generic as a modeline generator
   for arcade monitors.
* make sure to read the README and README_xrandr files for more details, they have changed quite  a bit.



Goals and focus right now are on finding what is stopping vsync from working in the nvidia nouveau and radeon ati drivers.  If these two drivers did vsync properly they would fully do resolution mode switching and refresh rate accuracy with vsync capability.  I think the radeon driver will do it as long as you enable KMS in the drm module in the kernel.  This is an issue for the AVGA cards though because the ATOM bios in them is altered and it seems to make the drm module barf when choosing kms to be enabled.  I have filed a bug report about this to the drm people, hopefully they know what is going on, I have dumped the BIOS from the AVGA 3000 card for them and have a kernel null pointer oops debug log. 

The nvidia drivers for the nouveau are interesting, but a bit unstable unless you disable the newer GL stuff so then they don't do vsync yet they do modeswitching with xrandr so you get the same as if you used the radeon ati drivers.  I have patches included now for the nvidia drm kernel module, which allow lower pixclocks and set the default resolution it chooses to 640x480 although it's VGA VESA and may still be bad for arcade monitors.  There's not a real good ability right now in that driver to choose the default bootup mode and it says it in the source that is something they need to work on.  One could go in there and hardcode a modeline for their card and force it as the default, but it'd depend on your card.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
I've been working on gettnig switchres working decent in Windows, at least able to generate a modeline and launch mame with that resolution on the command line.  So you can avoid using .ini files in theory in Windows too, just need to get the modelines put into the driver like using the usermodes for Soft15Khz.  There's a new lrmc.exe binary too so it can be used under Windows now to generate modelines and read the mame.xml file to do that or just custom ones on the command line.  New switchres.conf config file allows you to set your settings and not have to call them on the command line, or put them into the frontend calling switchres when you want to change the command line.

No luck on waitforvsync support in X Windows, but do see they are possibly working on it right now in development of the linux kernel drm stuff for the r500-r700 chipsets for ATI radeon cards. 

I am eventually going to get the xrandr support in switchres to be able to do all the setup for dual monitors, maybe it'll work now but I've currently got it turning off all extra monitors since otherwise things get weird or it won't switch resolutions unless you have 2 arcade monitors.  Hopefully can get that working eventually so it's all done automatically and uses dual monitors either as one being the game and other being the extra screen or if not a dual game then possibly show the marquee art or something.

Version 0.13
* can run switchres on Windows, prints out lrmc generated modeline and runs with that on the command line for resolution (so shouldn't need .ini files anymore in Windows for Soft15Khz).  This is a start at Windows support and
   still needs to have a better method of putting the modelines into the driver.  Right now you can generate modelines this way or with lrmc itself for Soft15Khz usermodes setup. 
* Have a version of lrmc for Windows in binary form, should be able to generate modelines now in Windows either from the mame.xml or for any chosen resolution on the command line. 
* Can use a config file with switchres now, switchres.conf, and it can be either in /etc/switchres.conf or ~/switchres.conf or ~/.config/switchres.conf (on Linux), in Windows it's in C:\\etc\switchres.conf
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Hi bitbytebit,

I've been testing your lrmc for Windows, I'd like to paste the results I'm getting to make sure we both get the same. I've done two tests, one with -D9800 (no lrmc.conf), and another with lrmc.conf set for Hantarex MTC9110. Using mame.xml v0.131. I'm only copying the first modelines to keep the message short. Here they are:

lrmc mame.xml -D9800

Code: [Select]

        # 256x224x60.00 @ 29.400kHz
        Modeline "256x448x60.00"  9.172800  256 264 304 312  448 457 461 490  -HSync -VSync

        # 640x480x60.00 @ 31.500kHz
        Modeline "640x480x60.00"  25.200000  640 656 752 800  480 490 494 525  -HSync -VSync

        # 224x256x60.00 @ 16.620kHz
        Modeline "688x256x60.00"  13.694880  688 704 776 824  256 260 263 277  -HSync -VSync

        # 320x240x60.00 @ 15.600kHz
        Modeline "640x240x60.00"  11.980800  640 656 720 768  240 244 247 260  -HSync -VSync

        # 320x224x60.00 @ 29.400kHz
        Modeline "320x448x60.00"  11.524800  320 328 376 392  448 457 461 490  -HSync -VSync

        # 320x224x59.19 @ 29.001kHz
        Modeline "320x448x59.19"  11.368372  320 328 376 392  448 457 461 490  -HSync -VSync

        # 384x224x59.63 @ 29.218kHz
        Modeline "384x448x59.63"  13.791089  384 392 448 472  448 457 461 490  -HSync -VSync

        # 512x288x60.00 @ 18.720kHz
        Modeline "512x288x60.00"  11.681280  512 520 568 624  288 293 296 312  -HSync -VSync

        # 256x240x60.00 @ 15.600kHz
        Modeline "512x240x60.00"  9.609600  512 528 576 616  240 244 247 260  -HSync -VSync

        # 336x240x59.92 @ 15.580kHz
        Modeline "672x240x59.92"  12.588570  672 688 752 808  240 244 247 260  -HSync -VSync

    # 1024x697x55.01 @ 39.716kHz
    Modeline "1024x697x55.01"  52.107801  1024 1064 1168 1312  697 700 704 722  +HSync +VSync

        # 384x224x59.61 @ 29.209kHz
        Modeline "384x448x59.61"  13.786601  384 392 448 472  448 457 461 490  -HSync -VSync

        # 224x288x60.61 @ 18.909kHz
        Modeline "384x288x60.61"  8.925091  384 392 432 472  288 293 296 312  -HSync -VSync

        # 288x224x60.00 @ 29.400kHz
        Modeline "288x448x60.00"  10.348800  288 296 336 352  448 457 461 490  -HSync -VSync

        # 384x240x60.00 @ 15.600kHz
        Modeline "768x240x60.00"  14.352000  768 784 864 920  240 244 247 260  -HSync -VSync

        # 224x288x60.00 @ 18.720kHz
        Modeline "384x288x60.00"  8.835840  384 392 432 472  288 293 296 312  -HSync -VSync

        # 224x256x60.61 @ 16.788kHz
        Modeline "688x256x60.61"  13.833213  688 704 776 824  256 260 263 277  -HSync -VSync

        # 320x224x60.05 @ 29.427kHz
        Modeline "320x448x60.05"  11.535248  320 328 376 392  448 457 461 490  -HSync -VSync

        # 512x256x60.00 @ 16.620kHz
        Modeline "512x256x60.00"  10.237920  512 528 576 616  256 260 263 277  -HSync -VSync

        # 224x260x59.54 @ 16.791kHz
        Modeline "704x260x59.54"  14.238633  704 728 800 848  260 265 268 282  -HSync -VSync

        # 496x384x60.00 @ 24.960kHz
        Modeline "496x384x60.00"  14.776320  496 512 560 592  384 388 392 416  -HSync -VSync

        # 320x240x58.00 @ 15.250kHz
        Modeline "648x242x58.21"  11.834000  648 664 728 776  242 246 249 262  -HSync -VSync

        # 384x256x60.11 @ 16.650kHz
        Modeline "768x256x60.11"  15.317666  768 784 864 920  256 260 263 277  -HSync -VSync

        # 256x232x60.00 @ 30.480kHz
        Modeline "256x464x60.00"  9.509760  256 264 304 312  464 474 478 508  -HSync -VSync

        # 224x320x60.00 @ 20.820kHz
        Modeline "432x320x60.00"  10.493280  432 440 480 504  320 326 329 347  -HSync -VSync

        # 384x224x60.00 @ 29.400kHz
        Modeline "384x448x60.00"  13.876800  384 392 448 472  448 457 461 490  -HSync -VSync

        # 240x240x57.44 @ 30.159kHz
        Modeline "320x480x57.44"  11.822151  320 328 376 392  480 490 494 525  -HSync -VSync

        # 704x512x60.00 @ 32.040kHz
        Modeline "704x512x60.00"  28.964160  704 736 848 904  512 516 520 534  -HSync +VSync

        # 512x224x60.00 @ 29.400kHz
        Modeline "512x448x60.00"  18.345600  512 520 600 624  448 457 461 490  -HSync -VSync

        # 288x224x60.61 @ 29.697kHz
        Modeline "288x448x60.61"  10.453334  288 296 336 352  448 457 461 490  -HSync -VSync

        # 448x224x60.00 @ 29.400kHz
        Modeline "448x448x60.00"  16.228800  448 464 528 552  448 457 461 490  -HSync -VSync

        # 240x384x60.00 @ 24.960kHz
        Modeline "512x384x60.00"  15.375360  512 528 576 616  384 388 392 416  -HSync -VSync

        # 256x224x60.10 @ 29.447kHz
        Modeline "256x448x60.10"  9.187501  256 264 304 312  448 457 461 490  -HSync -VSync

        # 256x224x60.00 @ 29.400kHz
        Modeline "600x448x60.00"  21.638400  600 616 704 736  448 457 461 490  -HSync -VSync

        # 399x253x54.82 @ 30.415kHz
        Modeline "400x506x55.00"  14.842520  400 408 464 488  506 516 520 553  -HSync -VSync

        # 384x232x60.00 @ 30.480kHz
        Modeline "384x464x60.00"  14.386560  384 392 448 472  464 474 478 508  -HSync -VSync

        # 304x224x60.00 @ 29.400kHz
        Modeline "304x448x60.00"  11.054400  304 312 360 376  448 457 461 490  -HSync -VSync

        # 256x248x60.00 @ 16.140kHz
        Modeline "512x248x60.00"  9.942240  512 528 576 616  248 252 255 269  -HSync -VSync

        # 320x224x58.97 @ 28.895kHz
        Modeline "320x448x58.97"  11.326958  320 328 376 392  448 457 461 490  -HSync -VSync

        # 704x480x59.94 @ 31.469kHz
        Modeline "704x480x59.94"  27.692305  704 720 824 880  480 490 494 525  -HSync -VSync

        # 336x240x60.00 @ 15.600kHz
        Modeline "672x240x60.00"  12.604800  672 688 752 808  240 244 247 260  -HSync -VSync

        # 256x240x58.00 @ 15.250kHz
        Modeline "520x242x58.21"  9.516000  520 536 592 624  242 246 249 262  -HSync -VSync

        # 416x224x60.00 @ 29.400kHz
        Modeline "416x448x60.00"  15.052800  416 432 496 512  448 457 461 490  -HSync -VSync

        # 320x232x58.97 @ 29.957kHz
        Modeline "320x464x58.97"  11.743050  320 328 376 392  464 474 478 508  -HSync -VSync

        # 256x240x59.19 @ 15.388kHz
        Modeline "512x240x59.19"  9.479167  512 528 576 616  240 244 247 260  -HSync -VSync

        # 256x240x57.44 @ 30.159kHz
        Modeline "256x480x57.44"  9.409467  256 264 304 312  480 490 494 525  -HSync -VSync

        # 512x480x30.00 @ 31.500kHz
        Modeline "512x480x60.00"  20.160000  512 528 608 640  480 490 494 525  -HSync -VSync

        # 640x480x57.00 @ 29.925kHz
        Modeline "640x480x57.00"  23.461200  640 656 752 784  480 490 494 525  -HSync -VSync

        # 384x256x55.02 @ 15.250kHz
        Modeline "768x256x55.05"  14.030000  768 784 864 920  256 260 263 277  -HSync -VSync

        # 320x224x59.64 @ 29.222kHz
        Modeline "320x448x59.64"  11.455153  320 328 376 392  448 457 461 490  -HSync -VSync



lrmc mame.xml (using lrmc.conf: Clock = 4 - 25 / 15.625 - 16.650 / 49.50 - 65.00)
Code: [Select]

        # 256x224x60.00 @ 15.625kHz
        Modeline "280x240x60.10"  5.375000  280 288 312 344  240 244 247 260  -HSync -VSync

        # 640x480x60.00 @ 16.650kHz
        Modeline "640x255x60.11"  13.053600  640 656 712 784  255 260 263 277  -HSync -VSync

        # 224x256x60.00 @ 16.650kHz
        Modeline "344x255x60.11"  7.059600  344 352 384 424  255 260 263 277  -HSync -VSync

        # 320x240x60.00 @ 15.625kHz
        Modeline "320x240x60.10"  6.125000  320 328 360 392  240 244 247 260  -HSync -VSync

        # 320x224x60.00 @ 15.625kHz
        Modeline "344x240x60.10"  6.625000  344 352 384 424  240 244 247 260  -HSync -VSync

        # 320x224x59.19 @ 15.625kHz
        Modeline "352x243x59.19"  6.750000  352 360 392 432  243 248 251 264  -HSync -VSync

        # 384x224x59.63 @ 15.625kHz
        Modeline "416x241x59.64"  8.000000  416 432 472 512  241 246 249 262  -HSync -VSync

        # 512x288x60.00 @ 16.650kHz
        Modeline "512x255x60.11"  10.522800  512 528 576 632  255 260 263 277  -HSync -VSync

        # 336x240x59.92 @ 15.625kHz
        Modeline "336x240x60.10"  6.500000  336 344 376 416  240 244 247 260  -HSync -VSync

        # 256x240x60.00 @ 15.625kHz
        Modeline "256x240x60.10"  4.875000  256 264 288 312  240 244 247 260  -HSync -VSync

    # 1024x253x60.50 @ 16.094kHz
    Modeline "1024x253x60.50"  20.600440  1024 1048 1152 1280  253 256 260 266  +HSync +VSync

        # 288x224x60.00 @ 15.625kHz
        Modeline "312x240x60.10"  6.000000  312 320 352 384  240 244 247 260  -HSync -VSync

        # 224x288x60.61 @ 16.650kHz
        Modeline "384x253x60.77"  7.858800  384 392 424 472  253 257 260 274  -HSync -VSync

        # 384x240x60.00 @ 15.625kHz
        Modeline "384x240x60.10"  7.375000  384 392 424 472  240 244 247 260  -HSync -VSync

        # 224x288x60.00 @ 16.650kHz
        Modeline "384x255x60.11"  7.858800  384 392 424 472  255 260 263 277  -HSync -VSync

        # 224x256x60.61 @ 16.650kHz
        Modeline "344x253x60.77"  7.059600  344 352 384 424  253 257 260 274  -HSync -VSync

        # 496x384x60.00 @ 16.650kHz
        Modeline "496x255x60.11"  10.123200  496 512 560 608  255 260 263 277  -HSync -VSync

        # 224x260x59.54 @ 16.650kHz
        Modeline "352x257x59.68"  7.192800  352 360 392 432  257 262 265 279  -HSync -VSync

        # 256x232x60.00 @ 15.625kHz
        Modeline "264x240x60.10"  5.125000  264 272 296 328  240 244 247 260  -HSync -VSync

        # 320x240x58.00 @ 15.625kHz
        Modeline "336x248x58.09"  6.500000  336 344 376 416  248 252 255 269  -HSync -VSync

        # 224x320x60.00 @ 16.650kHz
        Modeline "432x255x60.11"  8.791200  432 440 480 528  255 260 263 277  -HSync -VSync

        # 512x240x60.00 @ 15.625kHz
        Modeline "512x240x60.10"  9.875000  512 528 576 632  240 244 247 260  -HSync -VSync

        # 240x240x57.44 @ 15.625kHz
        Modeline "336x250x57.66"  6.500000  336 344 376 416  250 254 257 271  -HSync -VSync

        # 384x224x60.00 @ 15.625kHz
        Modeline "416x240x60.10"  8.000000  416 432 472 512  240 244 247 260  -HSync -VSync

        # 704x512x60.00 @ 16.650kHz
        Modeline "704x255x60.11"  14.385600  704 720 784 864  255 260 263 277  -HSync -VSync

        # 288x224x60.61 @ 15.625kHz
        Modeline "304x237x60.80"  5.875000  304 312 336 376  237 241 244 257  -HSync -VSync

        # 512x224x60.00 @ 15.625kHz
        Modeline "552x240x60.10"  10.625000  552 568 616 680  240 244 247 260  -HSync -VSync

        # 256x224x60.10 @ 15.625kHz
        Modeline "272x239x60.33"  5.250000  272 280 304 336  239 243 246 259  -HSync -VSync

        # 448x224x60.00 @ 15.625kHz
        Modeline "480x240x60.10"  9.250000  480 496 536 592  240 244 247 260  -HSync -VSync

        # 256x224x60.00 @ 16.650kHz
        Modeline "600x255x60.11"  12.254400  600 616 672 736  255 260 263 277  -HSync -VSync

        # 304x224x60.00 @ 15.625kHz
        Modeline "328x240x60.10"  6.250000  328 336 368 400  240 244 247 260  -HSync -VSync

        # 384x232x60.00 @ 15.625kHz
        Modeline "400x240x60.10"  7.750000  400 416 456 496  240 244 247 260  -HSync -VSync

        # 399x253x54.82 @ 15.625kHz
        Modeline "416x263x54.82"  8.000000  416 432 472 512  263 267 270 285  -HSync -VSync

        # 256x248x60.00 @ 16.140kHz
        Modeline "256x248x60.00"  5.035680  256 264 288 312  248 252 255 269  -HSync -VSync

        # 416x224x60.00 @ 15.625kHz
        Modeline "448x240x60.10"  8.625000  448 464 504 552  240 244 247 260  -HSync -VSync

        # 640x240x60.00 @ 15.625kHz
        Modeline "640x240x60.10"  12.250000  640 656 712 784  240 244 247 260  -HSync -VSync

        # 320x232x58.97 @ 15.625kHz
        Modeline "336x243x59.19"  6.500000  336 344 376 416  243 248 251 264  -HSync -VSync

        # 256x240x58.00 @ 15.625kHz
        Modeline "264x248x58.09"  5.125000  264 272 296 328  248 252 255 269  -HSync -VSync

        # 256x256x60.00 @ 16.650kHz
        Modeline "256x255x60.11"  5.194800  256 264 288 312  255 260 263 277  -HSync -VSync

        # 512x480x30.00 @ 16.650kHz
        Modeline "512x236x65.04"  10.522800  512 528 576 632  236 240 243 256  -HSync -VSync

        # 256x240x59.19 @ 15.625kHz
        Modeline "264x243x59.19"  5.125000  264 272 296 328  243 248 251 264  -HSync -VSync

        # 256x240x57.44 @ 15.625kHz
        Modeline "272x250x57.66"  5.250000  272 280 304 336  250 254 257 271  -HSync -VSync

        # 640x480x57.00 @ 16.650kHz
        Modeline "640x269x57.02"  13.053600  640 656 712 784  269 274 277 292  -HSync -VSync

        # 320x224x59.64 @ 15.625kHz
        Modeline "344x241x59.87"  6.625000  344 352 384 424  241 245 248 261  -HSync -VSync

    # 800x255x59.84 @ 16.038kHz
    Modeline "800x255x59.84"  15.909851  800 816 896 992  255 258 262 268  +HSync +VSync

        # 384x256x55.02 @ 15.625kHz
        Modeline "392x261x55.21"  7.500000  392 400 432 480  261 265 268 283  -HSync -VSync

        # 496x384x57.52 @ 16.650kHz
        Modeline "496x266x57.61"  10.123200  496 512 560 608  266 271 274 289  -HSync -VSync

        # 240x320x54.00 @ 16.650kHz
        Modeline "432x284x54.06"  8.791200  432 440 480 528  284 289 292 308  -HSync -VSync

        # 352x240x60.00 @ 15.625kHz
        Modeline "352x240x60.10"  6.750000  352 360 392 432  240 244 247 260  -HSync -VSync

    # 856x255x59.84 @ 16.038kHz
    Modeline "856x255x59.84"  17.064599  856 872 960 1064  255 258 262 268  +HSync +VSync

        # 320x240x59.60 @ 15.625kHz
        Modeline "328x241x59.64"  6.250000  328 336 368 400  241 246 249 262  -HSync -VSync

        # 384x512x60.10 @ 16.650kHz
        Modeline "688x255x60.11"  14.119200  688 712 776 848  255 260 263 277  -HSync -VSync

        # 256x224x59.19 @ 15.625kHz
        Modeline "280x243x59.19"  5.375000  280 288 312 344  243 248 251 264  -HSync -VSync

        # 240x248x60.00 @ 16.140kHz
        Modeline "336x248x60.00"  6.714240  336 344 376 416  248 252 255 269  -HSync -VSync

        # 256x224x57.50 @ 15.625kHz
        Modeline "288x250x57.66"  5.500000  288 296 320 352  250 254 257 271  -HSync -VSync

        # 256x240x57.41 @ 15.625kHz
        Modeline "272x251x57.44"  5.250000  272 280 304 336  251 255 258 272  -HSync -VSync

        # 208x256x61.04 @ 16.650kHz
        Modeline "344x251x61.21"  7.059600  344 352 384 424  251 255 258 272  -HSync -VSync

        # 256x224x60.61 @ 15.625kHz
        Modeline "272x237x60.80"  5.250000  272 280 304 336  237 241 244 257  -HSync -VSync

        # 260x224x59.54 @ 15.625kHz
        Modeline "280x241x59.64"  5.375000  280 288 312 344  241 246 249 262  -HSync -VSync

        # 360x240x59.92 @ 15.625kHz
        Modeline "360x240x60.10"  6.875000  360 368 400 440  240 244 247 260  -HSync -VSync

        # 256x224x56.00 @ 15.625kHz
        Modeline "296x257x56.00"  5.750000  296 304 328 368  257 262 265 279  -HSync -VSync

        # 224x256x56.00 @ 15.625kHz
        Modeline "344x257x56.00"  6.625000  344 352 384 424  257 262 265 279  -HSync -VSync

        # 512x288x60.31 @ 16.650kHz
        Modeline "512x254x60.33"  10.522800  512 528 576 632  254 259 262 276  -HSync -VSync

        # 544x480x60.00 @ 16.650kHz
        Modeline "544x255x60.11"  11.188800  544 560 608 672  255 260 263 277  -HSync -VSync

        # 384x256x55.00 @ 15.625kHz
        Modeline "392x262x55.02"  7.500000  392 400 432 480  262 266 269 284  -HSync -VSync

        # 292x240x60.10 @ 15.625kHz
        Modeline "296x240x60.10"  5.750001  296 304 328 368  240 244 247 260  -HSync -VSync

        # 671x216x60.00 @ 15.625kHz
        Modeline "744x240x60.10"  14.250000  744 760 824 912  240 244 247 260  -HSync -VSync

        # 240x240x60.00 @ 15.625kHz
        Modeline "240x240x60.10"  4.625000  240 248 272 296  240 244 247 260  -HSync -VSync

        # 512x256x57.00 @ 15.846kHz
        Modeline "512x256x57.00"  10.014672  512 528 576 632  256 261 264 278  -HSync -VSync

        # 488x384x58.00 @ 16.650kHz
        Modeline "488x264x58.01"  9.990000  488 504 552 600  264 269 272 287  -HSync -VSync

        # 294x238x60.10 @ 15.625kHz
        Modeline "296x239x60.33"  5.750000  296 304 328 368  239 243 246 259  -HSync -VSync

        # 288x224x59.19 @ 15.625kHz
        Modeline "312x243x59.19"  6.000000  312 320 352 384  243 248 251 264  -HSync -VSync

        # 224x280x60.00 @ 16.650kHz
        Modeline "376x255x60.11"  7.725600  376 384 416 464  255 260 263 277  -HSync -VSync

        # 288x240x60.00 @ 15.625kHz
        Modeline "288x240x60.10"  5.500000  288 296 320 352  240 244 247 260  -HSync -VSync

        # 256x256x57.00 @ 15.846kHz
        Modeline "344x256x57.00"  6.718704  344 352 384 424  256 261 264 278  -HSync -VSync

        # 256x256x76.29 @ 16.650kHz
        Modeline "344x236x65.04"  7.059600  344 352 384 424  236 240 243 256  -HSync -VSync

        # 480x512x30.00 @ 16.650kHz
        Modeline "688x236x65.04"  14.119200  688 712 776 848  236 240 243 256  -HSync -VSync

        # 384x224x59.19 @ 15.625kHz
        Modeline "416x243x59.19"  8.000000  416 432 472 512  243 248 251 264  -HSync -VSync

        # 236x272x60.00 @ 16.650kHz
        Modeline "368x255x60.11"  7.592400  368 384 416 456  255 260 263 277  -HSync -VSync

        # 240x344x60.00 @ 16.650kHz
        Modeline "464x255x60.11"  9.457200  464 472 512 568  255 260 263 277  -HSync -VSync

        # 256x256x56.31 @ 15.654kHz
        Modeline "344x256x56.31"  6.637191  344 352 384 424  256 261 264 278  -HSync -VSync

        # 240x320x57.55 @ 16.650kHz
        Modeline "432x266x57.61"  8.791200  432 440 480 528  266 271 274 289  -HSync -VSync

        # 400x280x50.00 @ 15.625kHz
        Modeline "416x288x50.08"  8.000000  416 432 472 512  288 293 296 312  -HSync -VSync

        # 288x224x59.70 @ 15.625kHz
        Modeline "312x241x59.87"  6.000000  312 320 352 384  241 245 248 261  -HSync -VSync

        # 432x224x59.00 @ 15.625kHz
        Modeline "472x243x59.19"  9.125000  472 488 528 584  243 248 251 264  -HSync -VSync

        # 240x256x61.42 @ 16.650kHz
        Modeline "344x250x61.44"  7.059600  344 352 384 424  250 254 257 271  -HSync -VSync

        # 224x272x60.61 @ 16.650kHz
        Modeline "368x253x60.77"  7.592400  368 384 416 456  253 257 260 274  -HSync -VSync

        # 224x384x59.63 @ 16.650kHz
        Modeline "512x257x59.68"  10.522800  512 528 576 632  257 262 265 279  -HSync -VSync

        # 256x256x55.00 @ 15.625kHz
        Modeline "264x262x55.02"  5.125000  264 272 296 328  262 266 269 284  -HSync -VSync

        # 512x228x60.20 @ 15.625kHz
        Modeline "536x239x60.33"  10.250000  536 552 600 656  239 243 246 259  -HSync -VSync

        # 376x240x60.00 @ 15.625kHz
        Modeline "376x240x60.10"  7.250000  376 384 416 464  240 244 247 260  -HSync -VSync

        # 320x256x60.00 @ 16.650kHz
        Modeline "320x255x60.11"  6.526800  320 328 360 392  255 260 263 277  -HSync -VSync

        # 512x256x59.19 @ 16.454kHz
        Modeline "512x256x59.19"  10.398675  512 528 576 632  256 261 264 278  -HSync -VSync

        # 224x320x58.97 @ 16.650kHz
        Modeline "432x260x59.04"  8.791200  432 440 480 528  260 264 267 282  -HSync -VSync

        # 512x400x57.35 @ 16.650kHz
        Modeline "512x267x57.41"  10.522800  512 528 576 632  267 272 275 290  -HSync -VSync

        # 400x256x60.00 @ 16.650kHz
        Modeline "400x255x60.11"  8.258400  400 416 456 496  255 260 263 277  -HSync -VSync

        # 224x400x60.00 @ 16.650kHz
        Modeline "536x255x60.11"  10.922400  536 552 600 656  255 260 263 277  -HSync -VSync

        # 240x256x58.00 @ 16.124kHz
        Modeline "344x256x58.00"  6.836576  344 352 384 424  256 261 264 278  -HSync -VSync

        # 224x320x59.30 @ 16.650kHz
        Modeline "432x258x59.46"  8.791200  432 440 480 528  258 263 266 280  -HSync -VSync

        # 256x240x61.42 @ 15.969kHz
        Modeline "256x240x61.42"  4.982312  256 264 288 312  240 244 247 260  -HSync -VSync

        # 672x240x59.92 @ 15.625kHz
        Modeline "672x240x60.10"  12.875000  672 688 752 824  240 244 247 260  -HSync -VSync

        # 319x255x61.04 @ 16.650kHz
        Modeline "320x251x61.21"  6.526800  320 328 360 392  251 255 258 272  -HSync -VSync

Are you getting the same or am I missing something?
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

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Hi bitbytebit,

I've been testing your lrmc for Windows, I'd like to paste the results I'm getting to make sure we both get the same. I've done two tests, one with -D9800 (no lrmc.conf), and another with lrmc.conf set for Hantarex MTC9110. Using mame.xml v0.131. Here they are:

lrmc mame.xml -D9800

Code: [Select]

        # 256x224x60.00 @ 29.400kHz
        Modeline "256x448x60.00"  9.172800  256 264 304 312  448 457 461 490  -HSync -VSync

        # 640x480x60.00 @ 31.500kHz
        Modeline "640x480x60.00"  25.200000  640 656 752 800  480 490 494 525  -HSync -VSync

        # 224x256x60.00 @ 16.620kHz
        Modeline "688x256x60.00"  13.694880  688 704 776 824  256 260 263 277  -HSync -VSync

        # 320x240x60.00 @ 15.600kHz
        Modeline "640x240x60.00"  11.980800  640 656 720 768  240 244 247 260  -HSync -VSync

        # 320x224x60.00 @ 29.400kHz
        Modeline "320x448x60.00"  11.524800  320 328 376 392  448 457 461 490  -HSync -VSync

        # 320x224x59.19 @ 29.001kHz
        Modeline "320x448x59.19"  11.368372  320 328 376 392  448 457 461 490  -HSync -VSync

        # 384x224x59.63 @ 29.218kHz
        Modeline "384x448x59.63"  13.791089  384 392 448 472  448 457 461 490  -HSync -VSync

        # 512x288x60.00 @ 18.720kHz
        Modeline "512x288x60.00"  11.681280  512 520 568 624  288 293 296 312  -HSync -VSync

        # 256x240x60.00 @ 15.600kHz
        Modeline "512x240x60.00"  9.609600  512 528 576 616  240 244 247 260  -HSync -VSync

        # 336x240x59.92 @ 15.580kHz
        Modeline "672x240x59.92"  12.588570  672 688 752 808  240 244 247 260  -HSync -VSync

    # 1024x697x55.01 @ 39.716kHz
    Modeline "1024x697x55.01"  52.107801  1024 1064 1168 1312  697 700 704 722  +HSync +VSync

        # 384x224x59.61 @ 29.209kHz
        Modeline "384x448x59.61"  13.786601  384 392 448 472  448 457 461 490  -HSync -VSync

        # 224x288x60.61 @ 18.909kHz
        Modeline "384x288x60.61"  8.925091  384 392 432 472  288 293 296 312  -HSync -VSync

        # 288x224x60.00 @ 29.400kHz
        Modeline "288x448x60.00"  10.348800  288 296 336 352  448 457 461 490  -HSync -VSync

        # 384x240x60.00 @ 15.600kHz
        Modeline "768x240x60.00"  14.352000  768 784 864 920  240 244 247 260  -HSync -VSync

        # 224x288x60.00 @ 18.720kHz
        Modeline "384x288x60.00"  8.835840  384 392 432 472  288 293 296 312  -HSync -VSync

        # 224x256x60.61 @ 16.788kHz
        Modeline "688x256x60.61"  13.833213  688 704 776 824  256 260 263 277  -HSync -VSync

        # 320x224x60.05 @ 29.427kHz
        Modeline "320x448x60.05"  11.535248  320 328 376 392  448 457 461 490  -HSync -VSync

        # 512x256x60.00 @ 16.620kHz
        Modeline "512x256x60.00"  10.237920  512 528 576 616  256 260 263 277  -HSync -VSync

        # 224x260x59.54 @ 16.791kHz
        Modeline "704x260x59.54"  14.238633  704 728 800 848  260 265 268 282  -HSync -VSync

        # 496x384x60.00 @ 24.960kHz
        Modeline "496x384x60.00"  14.776320  496 512 560 592  384 388 392 416  -HSync -VSync

        # 320x240x58.00 @ 15.250kHz
        Modeline "648x242x58.21"  11.834000  648 664 728 776  242 246 249 262  -HSync -VSync

        # 384x256x60.11 @ 16.650kHz
        Modeline "768x256x60.11"  15.317666  768 784 864 920  256 260 263 277  -HSync -VSync

        # 256x232x60.00 @ 30.480kHz
        Modeline "256x464x60.00"  9.509760  256 264 304 312  464 474 478 508  -HSync -VSync

        # 224x320x60.00 @ 20.820kHz
        Modeline "432x320x60.00"  10.493280  432 440 480 504  320 326 329 347  -HSync -VSync

        # 384x224x60.00 @ 29.400kHz
        Modeline "384x448x60.00"  13.876800  384 392 448 472  448 457 461 490  -HSync -VSync

        # 240x240x57.44 @ 30.159kHz
        Modeline "320x480x57.44"  11.822151  320 328 376 392  480 490 494 525  -HSync -VSync

        # 704x512x60.00 @ 32.040kHz
        Modeline "704x512x60.00"  28.964160  704 736 848 904  512 516 520 534  -HSync +VSync

        # 512x224x60.00 @ 29.400kHz
        Modeline "512x448x60.00"  18.345600  512 520 600 624  448 457 461 490  -HSync -VSync

        # 288x224x60.61 @ 29.697kHz
        Modeline "288x448x60.61"  10.453334  288 296 336 352  448 457 461 490  -HSync -VSync

        # 448x224x60.00 @ 29.400kHz
        Modeline "448x448x60.00"  16.228800  448 464 528 552  448 457 461 490  -HSync -VSync

        # 240x384x60.00 @ 24.960kHz
        Modeline "512x384x60.00"  15.375360  512 528 576 616  384 388 392 416  -HSync -VSync

        # 256x224x60.10 @ 29.447kHz
        Modeline "256x448x60.10"  9.187501  256 264 304 312  448 457 461 490  -HSync -VSync

        # 256x224x60.00 @ 29.400kHz
        Modeline "600x448x60.00"  21.638400  600 616 704 736  448 457 461 490  -HSync -VSync

        # 399x253x54.82 @ 30.415kHz
        Modeline "400x506x55.00"  14.842520  400 408 464 488  506 516 520 553  -HSync -VSync

        # 384x232x60.00 @ 30.480kHz
        Modeline "384x464x60.00"  14.386560  384 392 448 472  464 474 478 508  -HSync -VSync

        # 304x224x60.00 @ 29.400kHz
        Modeline "304x448x60.00"  11.054400  304 312 360 376  448 457 461 490  -HSync -VSync

        # 256x248x60.00 @ 16.140kHz
        Modeline "512x248x60.00"  9.942240  512 528 576 616  248 252 255 269  -HSync -VSync

        # 320x224x58.97 @ 28.895kHz
        Modeline "320x448x58.97"  11.326958  320 328 376 392  448 457 461 490  -HSync -VSync

        # 704x480x59.94 @ 31.469kHz
        Modeline "704x480x59.94"  27.692305  704 720 824 880  480 490 494 525  -HSync -VSync

        # 336x240x60.00 @ 15.600kHz
        Modeline "672x240x60.00"  12.604800  672 688 752 808  240 244 247 260  -HSync -VSync

        # 256x240x58.00 @ 15.250kHz
        Modeline "520x242x58.21"  9.516000  520 536 592 624  242 246 249 262  -HSync -VSync

        # 416x224x60.00 @ 29.400kHz
        Modeline "416x448x60.00"  15.052800  416 432 496 512  448 457 461 490  -HSync -VSync

        # 320x232x58.97 @ 29.957kHz
        Modeline "320x464x58.97"  11.743050  320 328 376 392  464 474 478 508  -HSync -VSync

        # 256x240x59.19 @ 15.388kHz
        Modeline "512x240x59.19"  9.479167  512 528 576 616  240 244 247 260  -HSync -VSync

        # 256x240x57.44 @ 30.159kHz
        Modeline "256x480x57.44"  9.409467  256 264 304 312  480 490 494 525  -HSync -VSync

        # 512x480x30.00 @ 31.500kHz
        Modeline "512x480x60.00"  20.160000  512 528 608 640  480 490 494 525  -HSync -VSync

        # 640x480x57.00 @ 29.925kHz
        Modeline "640x480x57.00"  23.461200  640 656 752 784  480 490 494 525  -HSync -VSync

        # 384x256x55.02 @ 15.250kHz
        Modeline "768x256x55.05"  14.030000  768 784 864 920  256 260 263 277  -HSync -VSync

        # 320x224x59.64 @ 29.222kHz
        Modeline "320x448x59.64"  11.455153  320 328 376 392  448 457 461 490  -HSync -VSync



lrmc mame.xml (using lrmc.conf: Clock = 4 - 25 / 15.625 - 16.650 / 49.50 - 65.00)
Code: [Select]

        # 256x224x60.00 @ 15.625kHz
        Modeline "280x240x60.10"  5.375000  280 288 312 344  240 244 247 260  -HSync -VSync

        # 640x480x60.00 @ 16.650kHz
        Modeline "640x255x60.11"  13.053600  640 656 712 784  255 260 263 277  -HSync -VSync

        # 224x256x60.00 @ 16.650kHz
        Modeline "344x255x60.11"  7.059600  344 352 384 424  255 260 263 277  -HSync -VSync

        # 320x240x60.00 @ 15.625kHz
        Modeline "320x240x60.10"  6.125000  320 328 360 392  240 244 247 260  -HSync -VSync

        # 320x224x60.00 @ 15.625kHz
        Modeline "344x240x60.10"  6.625000  344 352 384 424  240 244 247 260  -HSync -VSync

        # 320x224x59.19 @ 15.625kHz
        Modeline "352x243x59.19"  6.750000  352 360 392 432  243 248 251 264  -HSync -VSync

        # 384x224x59.63 @ 15.625kHz
        Modeline "416x241x59.64"  8.000000  416 432 472 512  241 246 249 262  -HSync -VSync

        # 512x288x60.00 @ 16.650kHz
        Modeline "512x255x60.11"  10.522800  512 528 576 632  255 260 263 277  -HSync -VSync

        # 336x240x59.92 @ 15.625kHz
        Modeline "336x240x60.10"  6.500000  336 344 376 416  240 244 247 260  -HSync -VSync

        # 256x240x60.00 @ 15.625kHz
        Modeline "256x240x60.10"  4.875000  256 264 288 312  240 244 247 260  -HSync -VSync

    # 1024x253x60.50 @ 16.094kHz
    Modeline "1024x253x60.50"  20.600440  1024 1048 1152 1280  253 256 260 266  +HSync +VSync

        # 288x224x60.00 @ 15.625kHz
        Modeline "312x240x60.10"  6.000000  312 320 352 384  240 244 247 260  -HSync -VSync

        # 224x288x60.61 @ 16.650kHz
        Modeline "384x253x60.77"  7.858800  384 392 424 472  253 257 260 274  -HSync -VSync

        # 384x240x60.00 @ 15.625kHz
        Modeline "384x240x60.10"  7.375000  384 392 424 472  240 244 247 260  -HSync -VSync

        # 224x288x60.00 @ 16.650kHz
        Modeline "384x255x60.11"  7.858800  384 392 424 472  255 260 263 277  -HSync -VSync

        # 224x256x60.61 @ 16.650kHz
        Modeline "344x253x60.77"  7.059600  344 352 384 424  253 257 260 274  -HSync -VSync

        # 496x384x60.00 @ 16.650kHz
        Modeline "496x255x60.11"  10.123200  496 512 560 608  255 260 263 277  -HSync -VSync

        # 224x260x59.54 @ 16.650kHz
        Modeline "352x257x59.68"  7.192800  352 360 392 432  257 262 265 279  -HSync -VSync

        # 256x232x60.00 @ 15.625kHz
        Modeline "264x240x60.10"  5.125000  264 272 296 328  240 244 247 260  -HSync -VSync

        # 320x240x58.00 @ 15.625kHz
        Modeline "336x248x58.09"  6.500000  336 344 376 416  248 252 255 269  -HSync -VSync

        # 224x320x60.00 @ 16.650kHz
        Modeline "432x255x60.11"  8.791200  432 440 480 528  255 260 263 277  -HSync -VSync

        # 512x240x60.00 @ 15.625kHz
        Modeline "512x240x60.10"  9.875000  512 528 576 632  240 244 247 260  -HSync -VSync

        # 240x240x57.44 @ 15.625kHz
        Modeline "336x250x57.66"  6.500000  336 344 376 416  250 254 257 271  -HSync -VSync

        # 384x224x60.00 @ 15.625kHz
        Modeline "416x240x60.10"  8.000000  416 432 472 512  240 244 247 260  -HSync -VSync

        # 704x512x60.00 @ 16.650kHz
        Modeline "704x255x60.11"  14.385600  704 720 784 864  255 260 263 277  -HSync -VSync

        # 288x224x60.61 @ 15.625kHz
        Modeline "304x237x60.80"  5.875000  304 312 336 376  237 241 244 257  -HSync -VSync

        # 512x224x60.00 @ 15.625kHz
        Modeline "552x240x60.10"  10.625000  552 568 616 680  240 244 247 260  -HSync -VSync

        # 256x224x60.10 @ 15.625kHz
        Modeline "272x239x60.33"  5.250000  272 280 304 336  239 243 246 259  -HSync -VSync

        # 448x224x60.00 @ 15.625kHz
        Modeline "480x240x60.10"  9.250000  480 496 536 592  240 244 247 260  -HSync -VSync

        # 256x224x60.00 @ 16.650kHz
        Modeline "600x255x60.11"  12.254400  600 616 672 736  255 260 263 277  -HSync -VSync

        # 304x224x60.00 @ 15.625kHz
        Modeline "328x240x60.10"  6.250000  328 336 368 400  240 244 247 260  -HSync -VSync

        # 384x232x60.00 @ 15.625kHz
        Modeline "400x240x60.10"  7.750000  400 416 456 496  240 244 247 260  -HSync -VSync

        # 399x253x54.82 @ 15.625kHz
        Modeline "416x263x54.82"  8.000000  416 432 472 512  263 267 270 285  -HSync -VSync

        # 256x248x60.00 @ 16.140kHz
        Modeline "256x248x60.00"  5.035680  256 264 288 312  248 252 255 269  -HSync -VSync

        # 416x224x60.00 @ 15.625kHz
        Modeline "448x240x60.10"  8.625000  448 464 504 552  240 244 247 260  -HSync -VSync

        # 640x240x60.00 @ 15.625kHz
        Modeline "640x240x60.10"  12.250000  640 656 712 784  240 244 247 260  -HSync -VSync

        # 320x232x58.97 @ 15.625kHz
        Modeline "336x243x59.19"  6.500000  336 344 376 416  243 248 251 264  -HSync -VSync

        # 256x240x58.00 @ 15.625kHz
        Modeline "264x248x58.09"  5.125000  264 272 296 328  248 252 255 269  -HSync -VSync

        # 256x256x60.00 @ 16.650kHz
        Modeline "256x255x60.11"  5.194800  256 264 288 312  255 260 263 277  -HSync -VSync

        # 512x480x30.00 @ 16.650kHz
        Modeline "512x236x65.04"  10.522800  512 528 576 632  236 240 243 256  -HSync -VSync

        # 256x240x59.19 @ 15.625kHz
        Modeline "264x243x59.19"  5.125000  264 272 296 328  243 248 251 264  -HSync -VSync

        # 256x240x57.44 @ 15.625kHz
        Modeline "272x250x57.66"  5.250000  272 280 304 336  250 254 257 271  -HSync -VSync

        # 640x480x57.00 @ 16.650kHz
        Modeline "640x269x57.02"  13.053600  640 656 712 784  269 274 277 292  -HSync -VSync

        # 320x224x59.64 @ 15.625kHz
        Modeline "344x241x59.87"  6.625000  344 352 384 424  241 245 248 261  -HSync -VSync

    # 800x255x59.84 @ 16.038kHz
    Modeline "800x255x59.84"  15.909851  800 816 896 992  255 258 262 268  +HSync +VSync

        # 384x256x55.02 @ 15.625kHz
        Modeline "392x261x55.21"  7.500000  392 400 432 480  261 265 268 283  -HSync -VSync

        # 496x384x57.52 @ 16.650kHz
        Modeline "496x266x57.61"  10.123200  496 512 560 608  266 271 274 289  -HSync -VSync

        # 240x320x54.00 @ 16.650kHz
        Modeline "432x284x54.06"  8.791200  432 440 480 528  284 289 292 308  -HSync -VSync

        # 352x240x60.00 @ 15.625kHz
        Modeline "352x240x60.10"  6.750000  352 360 392 432  240 244 247 260  -HSync -VSync

    # 856x255x59.84 @ 16.038kHz
    Modeline "856x255x59.84"  17.064599  856 872 960 1064  255 258 262 268  +HSync +VSync

        # 320x240x59.60 @ 15.625kHz
        Modeline "328x241x59.64"  6.250000  328 336 368 400  241 246 249 262  -HSync -VSync

        # 384x512x60.10 @ 16.650kHz
        Modeline "688x255x60.11"  14.119200  688 712 776 848  255 260 263 277  -HSync -VSync

        # 256x224x59.19 @ 15.625kHz
        Modeline "280x243x59.19"  5.375000  280 288 312 344  243 248 251 264  -HSync -VSync

        # 240x248x60.00 @ 16.140kHz
        Modeline "336x248x60.00"  6.714240  336 344 376 416  248 252 255 269  -HSync -VSync

        # 256x224x57.50 @ 15.625kHz
        Modeline "288x250x57.66"  5.500000  288 296 320 352  250 254 257 271  -HSync -VSync

        # 256x240x57.41 @ 15.625kHz
        Modeline "272x251x57.44"  5.250000  272 280 304 336  251 255 258 272  -HSync -VSync

        # 208x256x61.04 @ 16.650kHz
        Modeline "344x251x61.21"  7.059600  344 352 384 424  251 255 258 272  -HSync -VSync

        # 256x224x60.61 @ 15.625kHz
        Modeline "272x237x60.80"  5.250000  272 280 304 336  237 241 244 257  -HSync -VSync

        # 260x224x59.54 @ 15.625kHz
        Modeline "280x241x59.64"  5.375000  280 288 312 344  241 246 249 262  -HSync -VSync

        # 360x240x59.92 @ 15.625kHz
        Modeline "360x240x60.10"  6.875000  360 368 400 440  240 244 247 260  -HSync -VSync

        # 256x224x56.00 @ 15.625kHz
        Modeline "296x257x56.00"  5.750000  296 304 328 368  257 262 265 279  -HSync -VSync

        # 224x256x56.00 @ 15.625kHz
        Modeline "344x257x56.00"  6.625000  344 352 384 424  257 262 265 279  -HSync -VSync

        # 512x288x60.31 @ 16.650kHz
        Modeline "512x254x60.33"  10.522800  512 528 576 632  254 259 262 276  -HSync -VSync

        # 544x480x60.00 @ 16.650kHz
        Modeline "544x255x60.11"  11.188800  544 560 608 672  255 260 263 277  -HSync -VSync

        # 384x256x55.00 @ 15.625kHz
        Modeline "392x262x55.02"  7.500000  392 400 432 480  262 266 269 284  -HSync -VSync

        # 292x240x60.10 @ 15.625kHz
        Modeline "296x240x60.10"  5.750001  296 304 328 368  240 244 247 260  -HSync -VSync

        # 671x216x60.00 @ 15.625kHz
        Modeline "744x240x60.10"  14.250000  744 760 824 912  240 244 247 260  -HSync -VSync

        # 240x240x60.00 @ 15.625kHz
        Modeline "240x240x60.10"  4.625000  240 248 272 296  240 244 247 260  -HSync -VSync

        # 512x256x57.00 @ 15.846kHz
        Modeline "512x256x57.00"  10.014672  512 528 576 632  256 261 264 278  -HSync -VSync

        # 488x384x58.00 @ 16.650kHz
        Modeline "488x264x58.01"  9.990000  488 504 552 600  264 269 272 287  -HSync -VSync

        # 294x238x60.10 @ 15.625kHz
        Modeline "296x239x60.33"  5.750000  296 304 328 368  239 243 246 259  -HSync -VSync

        # 288x224x59.19 @ 15.625kHz
        Modeline "312x243x59.19"  6.000000  312 320 352 384  243 248 251 264  -HSync -VSync

        # 224x280x60.00 @ 16.650kHz
        Modeline "376x255x60.11"  7.725600  376 384 416 464  255 260 263 277  -HSync -VSync

        # 288x240x60.00 @ 15.625kHz
        Modeline "288x240x60.10"  5.500000  288 296 320 352  240 244 247 260  -HSync -VSync

        # 256x256x57.00 @ 15.846kHz
        Modeline "344x256x57.00"  6.718704  344 352 384 424  256 261 264 278  -HSync -VSync

        # 256x256x76.29 @ 16.650kHz
        Modeline "344x236x65.04"  7.059600  344 352 384 424  236 240 243 256  -HSync -VSync

        # 480x512x30.00 @ 16.650kHz
        Modeline "688x236x65.04"  14.119200  688 712 776 848  236 240 243 256  -HSync -VSync

        # 384x224x59.19 @ 15.625kHz
        Modeline "416x243x59.19"  8.000000  416 432 472 512  243 248 251 264  -HSync -VSync

        # 236x272x60.00 @ 16.650kHz
        Modeline "368x255x60.11"  7.592400  368 384 416 456  255 260 263 277  -HSync -VSync

        # 240x344x60.00 @ 16.650kHz
        Modeline "464x255x60.11"  9.457200  464 472 512 568  255 260 263 277  -HSync -VSync

        # 256x256x56.31 @ 15.654kHz
        Modeline "344x256x56.31"  6.637191  344 352 384 424  256 261 264 278  -HSync -VSync

        # 240x320x57.55 @ 16.650kHz
        Modeline "432x266x57.61"  8.791200  432 440 480 528  266 271 274 289  -HSync -VSync

        # 400x280x50.00 @ 15.625kHz
        Modeline "416x288x50.08"  8.000000  416 432 472 512  288 293 296 312  -HSync -VSync

        # 288x224x59.70 @ 15.625kHz
        Modeline "312x241x59.87"  6.000000  312 320 352 384  241 245 248 261  -HSync -VSync

        # 432x224x59.00 @ 15.625kHz
        Modeline "472x243x59.19"  9.125000  472 488 528 584  243 248 251 264  -HSync -VSync

        # 240x256x61.42 @ 16.650kHz
        Modeline "344x250x61.44"  7.059600  344 352 384 424  250 254 257 271  -HSync -VSync

        # 224x272x60.61 @ 16.650kHz
        Modeline "368x253x60.77"  7.592400  368 384 416 456  253 257 260 274  -HSync -VSync

        # 224x384x59.63 @ 16.650kHz
        Modeline "512x257x59.68"  10.522800  512 528 576 632  257 262 265 279  -HSync -VSync

        # 256x256x55.00 @ 15.625kHz
        Modeline "264x262x55.02"  5.125000  264 272 296 328  262 266 269 284  -HSync -VSync

        # 512x228x60.20 @ 15.625kHz
        Modeline "536x239x60.33"  10.250000  536 552 600 656  239 243 246 259  -HSync -VSync

        # 376x240x60.00 @ 15.625kHz
        Modeline "376x240x60.10"  7.250000  376 384 416 464  240 244 247 260  -HSync -VSync

        # 320x256x60.00 @ 16.650kHz
        Modeline "320x255x60.11"  6.526800  320 328 360 392  255 260 263 277  -HSync -VSync

        # 512x256x59.19 @ 16.454kHz
        Modeline "512x256x59.19"  10.398675  512 528 576 632  256 261 264 278  -HSync -VSync

        # 224x320x58.97 @ 16.650kHz
        Modeline "432x260x59.04"  8.791200  432 440 480 528  260 264 267 282  -HSync -VSync

        # 512x400x57.35 @ 16.650kHz
        Modeline "512x267x57.41"  10.522800  512 528 576 632  267 272 275 290  -HSync -VSync

        # 400x256x60.00 @ 16.650kHz
        Modeline "400x255x60.11"  8.258400  400 416 456 496  255 260 263 277  -HSync -VSync

        # 224x400x60.00 @ 16.650kHz
        Modeline "536x255x60.11"  10.922400  536 552 600 656  255 260 263 277  -HSync -VSync

        # 240x256x58.00 @ 16.124kHz
        Modeline "344x256x58.00"  6.836576  344 352 384 424  256 261 264 278  -HSync -VSync

        # 224x320x59.30 @ 16.650kHz
        Modeline "432x258x59.46"  8.791200  432 440 480 528  258 263 266 280  -HSync -VSync

        # 256x240x61.42 @ 15.969kHz
        Modeline "256x240x61.42"  4.982312  256 264 288 312  240 244 247 260  -HSync -VSync

        # 672x240x59.92 @ 15.625kHz
        Modeline "672x240x60.10"  12.875000  672 688 752 824  240 244 247 260  -HSync -VSync

        # 319x255x61.04 @ 16.650kHz
        Modeline "320x251x61.21"  6.526800  320 328 360 392  251 255 258 272  -HSync -VSync

Are you getting the same or am I missing something?

Try it with these args...


lrmc mame.xml -d9800 -n -i -d -sl -v

Those should make the resolutions much closer to the ones asked for, if not exact in most cases.  Defaults of lrmc aren't really great, at least if you've got an arcade monitor :).

Also these could be of some interest too...

Code: [Select]
 
  -win, --windows        If your using Windows modelines/ini files
  -ff, --fixfrogger      If you have the frogger/galaxian patch from CabMAME
  -ini                   When using mame.xml create .ini files in ./ini/
  -rm, --roundmodes      When using mame.xml round hxw and refresh rate

-rm probably is best in Windows, unless there's a way to override the mame integer thing with refresh rate.
-win makes the .ini files windows compliant, HxW@R instead of HxWxD@R like sdlmame reads. (unless your using SDL mame in Windows).
« Last Edit: October 25, 2010, 08:09:18 am by bitbytebit »
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
I've got a Radeon X850 http://en.wikipedia.org/wiki/File:PowerColor_Radeon_X850XT_PE.jpg that I found on ebay cheap coming to test, because that is the last version of GPU's Linux DRI /opengl/mesa support interrupts on.  So I'll see if it can use the waitforvsync option and have throttle off, and find out if it really works for tearing and refresh rate exactness as good as triple buffer does in Windows.  I've got my Windows XP install and have experienced it there now with Soft15Khz and triplebuffer.  Definitely interesting, and I'm using a Radeon HD 4350 I got a few days ago right now which is quite a nice card in both Linux and Windows compared to the ArcadeVGA3000.  I see it's the rv700 GPU and in Linux of course still doesn't do the interrupts for vsync but does seem to work a lot smoother in mode switching and general supported well in both Windows and Linux (ArcadeVGA card acted kind of funny for me in Windows, was surprised about that, just had a hard time dealing with it but this 4350 seemed nicer and of course worked better with Soft15khz opposed to my ArcadeVGA with bios flashed to be a normal Radeon HD 2600 card).

So basically I'm hoping this Radeon X850 can do the vsync stuff because it could be the best card in Linux if you want it all (and of course not wanting a super fast modern card, but want all the classic arcade and/or MAME/MESS to run in original resolutions without tearing).  They are on ebay for under 50 US dollars, so seem like a good choice for an arcade cabinet right now using Linux, at least while waiting for page flip support on the r600+ ATI GPU's.
« Last Edit: October 25, 2010, 08:32:21 am by bitbytebit »
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Definitely interesting, and I'm using a Radeon HD 4350 I got a few days ago right now which is quite a nice card in both Linux and Windows compared to the ArcadeVGA3000.

Great! The Radeon HD 4350 is the exact card I just wanted to focus development on. Though I haven't tested it yet, from Soft-15KHz thread it seems it's fully compatible with low resolutions (low dotclocks). I believe anything used there should also work for the more powerful 4650/4670, but 4350's price makes it a popular card, similar to the venerable 9250. Sailorsat says has that starting from 5000 series, Ati has discontinued all the good lowres capabilities, they may need a dongle as newer nVidia cards do. As VGA analog cards may disappear in the near future I believe the best approach is to focus on the last decent pci card suitable for lowres and lead people interested in serious emulation to get that card, instead of the somehow frustrating task of making a general tool for all cards.

It's also good news that X850 is supported by my hacked drivers, so we have the right tool to achive dynamic modelines for that card in Windows, however I havent tested that card for low dotclocks.

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

Gray_Area

  • -Banned-
  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 3363
  • Last login:June 23, 2013, 06:52:30 pm
  • -Banned-
The X800 series is accessible via Soft15khz.

What rationale is there, or are the companies having, in locking out lowres capacity?
-Banned-

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
The X800 series is accessible via Soft15khz.

What rationale is there, or are the companies having, in locking out lowres capacity?

I'm wondering if it's only a driver lockout and more of a miss sight on their part.  In Linux the Xorg developers have done the same thing in most of the drivers from just a lack of awareness of Arcade monitors and not sure of which chips can really do lower dotclocks.  I'd be interested in trying one of these new ATI things in Linux, they are getting the evergreen driver moving along in Linux because it's being pushed and developed by ATI people themselves, so ATI is behind it in Linux 100% now.  So since it's all open in Linux, we'd be able to fully see if it really can't do the lower dotclocks, or if they are just being like the Xorg developers and thinking of only flat panel HD TV output type stuff.  Seems the philosophy now is to avoid having the user be able to choose what kind of modelines to output to a monitor, and just have the monitor tell the user what it'll allow.  If the monitor doesn't say anything back, like an arcade monitor, then they default to basic VESA calculations and treat it like a normal computer monitor.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Version 0.14 - Working nicely in Windows with Soft15Khz or ArcadeVGA cards :)
* Now have a new arg called -resfile <file> which can be specified multiple times and takes either Soft15Khz files or the default ArcadeVGA.txt file (both included in ./extras/ now).  It will use the resolutions in the files to limit it's calculations to.  This basically is doing the same thing as those .ini files generators but it's dynamic and at runtime so you no longer have to maintain all the .ini files or worry about updating mame and redoing them.  This works well with Soft15Khz, using switchres.pl as a wrapper to mame and setting up a config file in C:\\etc\switchres.conf works pretty nicely now.
* Lots of little fixes with how switchres runs, and cleanup of how it calculates modelines with lrmc since the -resfile option required this.
* Tested on MameWah in Windows and it works well, avoids issues with games resolutions and mames decisions on picking them, it fixes that just like the .ini file fixes do (make sure you remove all your .ini files because they will override switchres.pl).  It's a pain to setup Mamewah, because you have to specify the Perl binary before the switchres.pl script (took me awhile to figure this out) but it does work once setup right.
* There were bugs with the -lrmc and -emulator args for passing commands to them separately, now those options should work correctly.
* Am noticing how it definitely is not great to have the refresh rate wrong with how Windows works, pacman sounds wrong, so you might want to add resolutions for those extra games in your Soft15Khz and this should be able to dynamically generate the right modelines quick.  Each run of switchres.pl will output the best modeline for your monitor, then the one it found in the current ones (resfile you gave it), unfortunately with an arcadeVGA card you can't do much about adding new ones.  If you have a monitor that can do 15-31.5 or more KHz like a d9800 then you really want to do this, else your missing a lot of better running games, I've gotten this working pretty nice in Linux and in Windows it just requires adding the modelines manually to your Soft15Khz usermodes file.
* Have emailed the guy at ATI that does the Linux driver development asking him about why the drivers don't support Arcade monitors in general and are lacking without hacking things in both Linux and Windows.  Also asked if the hardware is the limitation on the newer ATI cards or the driver has it limited, and if Linux drivers for it would be able to be hacked to overcome it (or if he would think of arcade monitors somewhat while developing those new evergreen Radeon 5XXX drivers).  Maybe he'll respond, here's a bunch of information on the code to run the newer ATI Radeons which gives  some insight on why they might have broken things, but possibly just short sightedness and not physical card/chip limitations: http://www.botchco.com/agd5f/
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

elvis

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1154
  • Last login:April 13, 2023, 05:31:03 pm
  • penguin poker
    • StickFreaks
After all this time I still haven't been able to get my Nvidia TNT2 card working with the Nouveau drivers.  I'm running Ubuntu 10.10 Maverick at the moment, and have tried nouveau drivers and drm/dri code from GIT in both a custom kernel and xorg drivers, and I still get the "Operation Not Permitted" error when trying to switch modelines via xrandr.

I thought maybe it was the low pclocks, but even trying to set standard VGA (640x480x32@60 with 12MHz pclock) it still throws the error.

I've switched over to an ATI Radeon 7000VE, and it works flawlessly.  I'm using xrandr from git with the patches in the GenRes zip, and I get the right modelines without a hitch.  I still need to use "opengl" with "waitvsync" to get it perfect with no-tearing, but that's fine by me.

So for now I'm going to stick with ATI hardware.  I'll keep this Nvidia TNT2 card around and continue testing every now and then.  I'm really not sure what is causing the error.  But for now an easily working ATI card trumps another weekend of me compiling nouveau drivers. :)

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
After all this time I still haven't been able to get my Nvidia TNT2 card working with the Nouveau drivers.  I'm running Ubuntu 10.10 Maverick at the moment, and have tried nouveau drivers and drm/dri code from GIT in both a custom kernel and xorg drivers, and I still get the "Operation Not Permitted" error when trying to switch modelines via xrandr.

I thought maybe it was the low pclocks, but even trying to set standard VGA (640x480x32@60 with 12MHz pclock) it still throws the error.

I've switched over to an ATI Radeon 7000VE, and it works flawlessly.  I'm using xrandr from git with the patches in the GenRes zip, and I get the right modelines without a hitch.  I still need to use "opengl" with "waitvsync" to get it perfect with no-tearing, but that's fine by me.

So for now I'm going to stick with ATI hardware.  I'll keep this Nvidia TNT2 card around and continue testing every now and then.  I'm really not sure what is causing the error.  But for now an easily working ATI card trumps another weekend of me compiling nouveau drivers. :)

Sounds like we'll have to wait for the Nouveau drivers to settle down and become more stable till Nvidia cards can work with xrandr and vsync, I must have just gotten the right combination of code bases for it to work or it's my card version and somehow different supported in the driver (was an ancient QuadroFX 1400 or something).  I had got the current working snapshot and patched my kernel drm modules, which was a day old or something from the current working kernel tree they use and have linux 2.6.36.  Also got the xf86 driver for it from the git too, not sure if any of that makes a difference, but at least there's hope since it did work decently but I also had to go through all that though and do some odd tweaks here and  there too I think.  Oddly the vsync stuff didn't work though, might have been my card though because it's ancient and openGL stuff ran barely at all on it anyways.  I have this QuadroFX 3400 card in my workstation which might be slightly a few years more modern so maybe sooner or later I'll look into the Nvidia issues again.



SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Version 0.14 - Working nicely in Windows with Soft15Khz or ArcadeVGA cards :)
* Now have a new arg called -resfile <file> which can be specified multiple times and takes either Soft15Khz files or the default ArcadeVGA.txt file (both included in ./extras/ now).  It will use the resolutions in the files to limit it's calculations to.  This basically is doing the same thing as those .ini files generators but it's dynamic and at runtime so you no longer have to maintain all the .ini files or worry about updating mame and redoing them.  This works well with Soft15Khz, using switchres.pl as a wrapper to mame and setting up a config file in C:\\etc\switchres.conf works pretty nicely now.

This may sound like silly question, forgive me... but how are you running your scripts in Windows? I tried with activeperl as you proposed but it complained about semicolons and other stuff, probably my fault, so I gave up.

If I understood properly, you're not doing dynamic modelines in Windows, but choosing from available modes to get rid of inis, isn't it?
[Edit] I've read your doc, it's answered there!
« Last Edit: October 26, 2010, 08:47:07 am by Calamity »
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

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Version 0.14 - Working nicely in Windows with Soft15Khz or ArcadeVGA cards :)
* Now have a new arg called -resfile <file> which can be specified multiple times and takes either Soft15Khz files or the default ArcadeVGA.txt file (both included in ./extras/ now).  It will use the resolutions in the files to limit it's calculations to.  This basically is doing the same thing as those .ini files generators but it's dynamic and at runtime so you no longer have to maintain all the .ini files or worry about updating mame and redoing them.  This works well with Soft15Khz, using switchres.pl as a wrapper to mame and setting up a config file in C:\\etc\switchres.conf works pretty nicely now.

This may sound like silly question, forgive me... but how are you running your scripts in Windows? I tried with activeperl as you proposed but it complained about semicolons and other stuff, probably my fault, so I gave up.

If I understood properly, you're not doing dynamic modelines in Windows, but choosing from available modes to get rid of inis, isn't it?

Ah, you have to rename it to switchres.pl, most likely the case I'm suspecting.  Active perl wont see it otherwise, unless when you installed it you didn't allow it to add the path and extension stuff.

Yeah, basically it does the exact same thing now as the .ini generators do in Windows except it's dynamic.  I just added support to have it write out and keep a modelines database file, just a file that should be able to have soft15Khz use as the usermodes file.  So you can run it for a while, then go back and add those modes, and then add that file into your set of predefined modelines.  Would somewhat work but of course I do see how in Windows everything is called 60Hz refresh and looks like it doesn't even know how to pick resolutions based on refresh rates in the direct3d/draw layers.  At least from what I can tell, that area is basically the part that is open to having the ability to utilize the modeline we are generating somehow dynamically, else it'll have to be statically added and then again I'm guessing it still has the original refresh rate ambiguity that we had in Linux without using xrandr.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Quote
Yeah, basically it does the exact same thing now as the .ini generators do in Windows except it's dynamic.  I just added support to have it write out and keep a modelines database file, just a file that should be able to have soft15Khz use as the usermodes file.  So you can run it for a while, then go back and add those modes, and then add that file into your set of predefined modelines.  Would somewhat work but of course I do see how in Windows everything is called 60Hz refresh and looks like it doesn't even know how to pick resolutions based on refresh rates in the direct3d/draw layers.  At least from what I can tell, that area is basically the part that is open to having the ability to utilize the modeline we are generating somehow dynamically, else it'll have to be statically added and then again I'm guessing it still has the original refresh rate ambiguity that we had in Linux without using xrandr.

I'll give another try to Active perl, but I believe it was reading the files as it complained that the lines didn't end with semicolons.

For some reason, ArcadeVGA modelines are labeled as 60 Hz, which can be misleading, but that's not the rule. You can perfectly define a modeline labeled 320x224@57 and invoke it from Mame using those values, as long as you keep vfreq value as integer (that's what limits the precision for naming modes and leads us to xres incrementing tricks). You can have a second modeline labeled 320x224@58 and they won't get mixed up. The important thing here is that the driver cannot know the real refresh of the mode (it doesn't take the time to calculate it out of modeline data), but trusts on the label we assign to it, so when we request 320x224@57 it will check its table and return the correct modeline, even if the actual refresh defined by the modeline is 57.00, 57.55 or 120.00 Hz.

This is for a fixed modeline table. However, it's possible to achieve real dynamic modeline functionallity, at least with ATI cards supported by the discontinued Catalyst 6.11 (= Catalyst 6.5, the one I hacked for 200 modes), using the trick I mentioned some posts above. I wonder if it'll be possible to do a similar thing with current Catalyst, in order to extend this to newer ATI cards.
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

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Quote
Yeah, basically it does the exact same thing now as the .ini generators do in Windows except it's dynamic.  I just added support to have it write out and keep a modelines database file, just a file that should be able to have soft15Khz use as the usermodes file.  So you can run it for a while, then go back and add those modes, and then add that file into your set of predefined modelines.  Would somewhat work but of course I do see how in Windows everything is called 60Hz refresh and looks like it doesn't even know how to pick resolutions based on refresh rates in the direct3d/draw layers.  At least from what I can tell, that area is basically the part that is open to having the ability to utilize the modeline we are generating somehow dynamically, else it'll have to be statically added and then again I'm guessing it still has the original refresh rate ambiguity that we had in Linux without using xrandr.

I'll give another try to Active perl, but I believe it was reading the files as it complained that the lines didn't end with semicolons.

For some reason, ArcadeVGA modelines are labeled as 60 Hz, which can be misleading, but that's not the rule. You can perfectly define a modeline labeled 320x224@57 and invoke it from Mame using those values, as long as you keep vfreq value as integer (that's what limits the precision for naming modes and leads us to xres incrementing tricks). You can have a second modeline labeled 320x224@58 and they won't get mixed up. The important thing here is that the driver cannot know the real refresh of the mode (it doesn't take the time to calculate it out of modeline data), but trusts on the label we assign to it, so when we request 320x224@57 it will check its table and return the correct modeline, even if the actual refresh defined by the modeline is 57.00, 57.55 or 120.00 Hz.

This is for a fixed modeline table. However, it's possible to achieve real dynamic modeline functionallity, at least with ATI cards supported by the discontinued Catalyst 6.11 (= Catalyst 6.5, the one I hacked for 200 modes), using the trick I mentioned some posts above. I wonder if it'll be possible to do a similar thing with current Catalyst, in order to extend this to newer ATI cards.


Is it genres, that won't work cause it's a shell script, would make sense if it's giving the issue.  Only switchres will work in Windows, since genres really just wraps around lrmc giving it the ability to also create an xorg.conf file too.

Ah, interesting, I'll have to look at that closer, just running some games last night noticed that (although I know the modeline was running the in the right Vert Hz to the monitor from my monitor osd/display, can check them with that).  I was using Soft15Khz and just saw that when running mame in verbose mode it calls everything 60Hz it seems when checking the different resolutions and weighting them.  I was just surprised how much different pacman is at 50Hz compared to 60.61, and that seems to be what your forced at currently by an ArcadeVGA card if you want a 288 line height in Windows.

On a side note I tried out this Radeon HD 4870 I had laying around just now, since it's a large card and wanted to see for sure if the RV770 did low res and how it liked the N64 Emulator.  It does do low res, and definitely likes the N64 emulator too.  I'm guessing the big gigantic size of this 4870 compared to the 4350 really does nothing for MAME though, not sure if just general video display would be any better on it compared to the other radeon.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Is it genres, that won't work cause it's a shell script, would make sense if it's giving the issue.  Only switchres will work in Windows, since genres really just wraps around lrmc giving it the ability to also create an xorg.conf file too.

Ok, that was it, it'll try switchres either.

I was just surprised how much different pacman is at 50Hz compared to 60.61, and that seems to be what your forced at currently by an ArcadeVGA card if you want a 288 line height in Windows.

If I force my monitor (lowres) to 16,7 KHz (no problem) I can get 288 progresive lines at 54 Hz, still not 60, but closer. Here is were it is important to have that 'soundsync' option from CabMame, so you can reduce game speed adjusting sound at the same time, and still have a progressive full frame. If 'soundsync' is not an option, you need to get the real 60.61 Hz to keep sound synced, which can be achieved either by chopping the frame by some lines (I hate this solution) or by interlacing + stretching (my preferred) where you can produce any refresh needed. I like to optimize the later method by choosing the tallest possible interlaced resolution for the given vertical refresh, as it provides better quality with less flicker where it is possible.

On a side note I tried out this Radeon HD 4870 I had laying around just now, since it's a large card and wanted to see for sure if the RV770 did low res and how it liked the N64 Emulator.  It does do low res, and definitely likes the N64 emulator too.  I'm guessing the big gigantic size of this 4870 compared to the 4350 really does nothing for MAME though, not sure if just general video display would be any better on it compared to the other radeon.

Good to know. I'm now doubting among 4350 and 4650 as I've seen the last one at 35 €.
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

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Is it genres, that won't work cause it's a shell script, would make sense if it's giving the issue.  Only switchres will work in Windows, since genres really just wraps around lrmc giving it the ability to also create an xorg.conf file too.

Ok, that was it, it'll try switchres either.

I was just surprised how much different pacman is at 50Hz compared to 60.61, and that seems to be what your forced at currently by an ArcadeVGA card if you want a 288 line height in Windows.

If I force my monitor (lowres) to 16,7 KHz (no problem) I can get 288 progresive lines at 54 Hz, still not 60, but closer. Here is were it is important to have that 'soundsync' option from CabMame, so you can reduce game speed adjusting sound at the same time, and still have a progressive full frame. If 'soundsync' is not an option, you need to get the real 60.61 Hz to keep sound synced, which can be achieved either by chopping the frame by some lines (I hate this solution) or by interlacing + stretching (my preferred) where you can produce any refresh needed. I like to optimize the later method by choosing the tallest possible interlaced resolution for the given vertical refresh, as it provides better quality with less flicker where it is possible.

On a side note I tried out this Radeon HD 4870 I had laying around just now, since it's a large card and wanted to see for sure if the RV770 did low res and how it liked the N64 Emulator.  It does do low res, and definitely likes the N64 emulator too.  I'm guessing the big gigantic size of this 4870 compared to the 4350 really does nothing for MAME though, not sure if just general video display would be any better on it compared to the other radeon.

Good to know. I'm now doubting among 4350 and 4650 as I've seen the last one at 35 €.


Yeah I was using cabmame with the soundsync and all on, basically the defaults it does with those.  I mean it worked, but I could tell and especially now that I've been playing it at 60.61 in Linux it is very noticable when you jump back and forth. 

Also that 4870 seems to have killed my Windows install, now it gets the c:\\windows\system32\config\system file is missing message and unfortunately it's a dual boot through grub to Linux or Windows and I installed on another system with my systems install disks (which don't boot and repair, and even then I suspect it may break my grub install on the root partition).  So that's great, I may have to wiggle the disk out of there and do the repair or reinstall on another system, wow Windows is annoying :).  At least it did the job of getting switchres basically working there, but I did have mamewah setup pretty nice last night finally and all working great so it definitely sucks that somehow the 4870 blew up the install.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #100 on: October 26, 2010, 03:03:56 pm »
Note about the xorg-server patch, this is definitely needed.  I just tried the xorg-server unpatched to check and see, those default modes (especially the 320x240 one) are evil and won't let you even create one with xrandr to try and override it with.  So looks like for now, the xorg server must be patched with the patch I have and recompiled/installed.  The issues with that are the fact that you must make sure it's the same version you have installed, you have to make sure to use the right configure args which are "./configure --prefix=/usr --enable-record --enable-multibuffer --sysconfdir=/etc --localstatedir=/var", and you need to chmod 711 /usr/bin/Xorg;chmod u+s /usr/bin/Xorg after install else it won't be setuid root and allow a user to use it.

Definitely not the best thing to have people doing, but for some reason the X server adds those modes without a way to blacklist or override them and it even ignores the specified vert/horz freq limits in adding them.  It's sad but possibly the best approach eventually would be to have a complete X windows build/system for people to install to run on arcade monitors.  At least they wouldn't have to find/patch/configure/compile/install all the components and just run a script building it all for them instead.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #101 on: October 26, 2010, 04:40:32 pm »
Definitely not the best thing to have people doing, but for some reason the X server adds those modes without a way to blacklist or override them and it even ignores the specified vert/horz freq limits in adding them.  It's sad but possibly the best approach eventually would be to have a complete X windows build/system for people to install to run on arcade monitors.  At least they wouldn't have to find/patch/configure/compile/install all the components and just run a script building it all for them instead.

With all available software blocking natural hardware features it's become a difficult task to do modelines for the masses, however all the work and discoveries in this post seem very promising. Perhaps it would be nice to have a distribution or even a live cd with all the patches and good stuff so people without Linux background like me could dare to use and test it. VeS, the folk who posted some pages before and who pointed me to this thread, was working on a live cd for arcade monitors in the Spanish forum, then we stumbled upon those problems without knowing what was going on, it's great you've clarified all this. It seems probable the vsync issue will be figured out and all this put together will make a perfect platform for emulation, as I'm convinced Linux should run smoother than Windows.
« Last Edit: October 26, 2010, 04:42:58 pm by Calamity »
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

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #102 on: October 26, 2010, 05:03:38 pm »
Definitely not the best thing to have people doing, but for some reason the X server adds those modes without a way to blacklist or override them and it even ignores the specified vert/horz freq limits in adding them.  It's sad but possibly the best approach eventually would be to have a complete X windows build/system for people to install to run on arcade monitors.  At least they wouldn't have to find/patch/configure/compile/install all the components and just run a script building it all for them instead.

With all available software blocking natural hardware features it's become a difficult task to do modelines for the masses, however all the work and discoveries in this post seem very promising. Perhaps it would be nice to have a distribution or even a live cd with all the patches and good stuff so people without Linux background like me could dare to use and test it. VeS, the folk who posted some pages before and who pointed me to this thread, was working on a live cd for arcade monitors in the Spanish forum, then we stumbled upon those problems without knowing what was going on, it's great you've clarified all this. It seems probable the vsync issue will be figured out and all this put together will make a perfect platform for emulation, as I'm convinced Linux should run smoother than Windows.


I think the vsync stuff is right around the corner, have been watching these patches from the Alex Deucher guy and every day they are updated (he's employeed by ATI to develop the Linux open source drivers for the Linux drm part of the kernel and xf86-ati driver).  So looks hopeful, I'm guessing he's doing this for the next 2.6.37 version most likely, adding the page flipping interrupt vsync support to the kernels drm layer for kernel mode switching...

http://people.freedesktop.org/~agd5f/pflip/

I've emailed him, he emailed back about how most likely it's the drivers for the newer ATI cards in Windows and could always try in Linux and confirm that.  May be awhile before I get one of those cards, no need and definitely not going to risk it to just see if it works.  So maybe someone out there eventually will try switchres on one and report back.  I emailed back about these limitations of modelines and default resolutions not being able to get blacklisted.  Also he said it'd be best to have a reserved set of pll settings for when a mode was given with lower dotclocks instead of just making the minimum lower like we currently do, that would be something he'd think of as the proper fix in the drivers.  Not sure if he's planning on doing something like that or will let me know generally what would be needed to do that, also interesting if there's better general tuning of other things for the pll settings to get the resolutions to work better for arcade monitors (since he seems to be saying they are tuned currently for high end monitors, and probably in the newest cards are so over tuned that now they totally broke low res monitors support).  Tuning them for low res monitors might just be an amazing thing instead of just hacking the dotclocks. 

Building a set of sources or a set of patches and scripts that download the current sources for X windows, drm, mesa sdl, mame and any other misc needed parts, patch them and install.  That would be interesting since it'd be light weight being just patches and a script to run and it'd fetch it all and patch/install it.  I might try to setup something like that to make it a quick process, and avoid having to deal with all the varieties of Linux systems and instead override the Windowing system by creating our own (and probably put it in a separate path so it doesn't harm the current system, but just an alternative one to run).
 
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #103 on: October 27, 2010, 03:00:26 pm »
Some interesting updates, definitely getting interesting, I've been talking with the ATI Radeon driver guy for the Linux open source stuff. 

First I've figured out through his help that the xorg modeline stuff does work but you have to avoid using any Modes configuration in the Screen section of the config.  Those will write hardwired modes you will not be able to override with your custom modelines, and in fact work against you by making duplicate modes but with 60Hz refresh rates.  Basically the xserver does add our custom modes but when we add them in the screens section the driver takes those names and gets HxW and creates a CVT modeline using 60Hz. 

So you don't have to recompile the ATI driver, besides the lower dotclock limit of course to make it allow less than 12Mhz.  Yet the PLL clock setup of course involved in that is needing to be tuned for lower resolutions with arcade monitors, same in the DRM layer with Kernel Mode Switching in newer kernels/ATI drivers if enabled.  More on that in a bit.

Second the xserver may have a bug, where the default modes it creates, some of which don't conform to our Vert/Horz freq range values.  These can't be overridden by xrandr at the moment because they are unwritable, and it seems like a bug.  So that is the main reason the xserver needs my patch right now to remove the adding of those default modelines.

Third I'm working on a script that basically will get all the stuff needed to build an Xorg server/driver system with OpenGL and DRI/DRM all correctly setup and will patch the sources with changes we have to make for arcade monitors (at least until they are actually applied to the X stuff officially).  My goal is to try and get the actual Xorg/DRM/Linux kernel all adapted to arcade monitors so it works in all distributions by default. 

That is the interesting part, I installed the newest Ubuntu 10.10 to test since it uses all the newest Xorg and DRM stuff.  It actually seems to do the Vsync stuff correctly, which is a plus.  The minus is that it has issues with of course the PLL Clock values and some oddity with mame not being able to switch to the new modes (I can use xrandr to do it) and so it isn't centered.  That part is probably minor through configuration or maybe some patching to allow it to work right.  It was all unpatched just using the distribution packages, including the mame version, I'm going to try and make this custom build thing be able to work there and find out more that way so it would be easy to have others do to through the script (not have to distribute big distros since just a script and people run it to build the distro themselves, which really is just a separate tree for the Xorg stuff and anything else necessary).

So there's a flicker every so often of the monitor in Ubuntu even with a good arcade modeline that works fine in my normal Gentoo setup.  Ubuntu is using the KMS code in the Linux kernel instead of UMS, which I'm guessing is the difference.  Alex Deucher (Radeon driver guy) says that this very likely is the PLL clock dividers and to try the older ones, see if that fixes it.  So this brings back an interesting thing about how we've always hacked these drivers to use a lower min_clock value and that is all we have done.  We have never tuned the PLL clock dividers to actually be optimized for arcade monitors.  This sounds like something that could make Linux be the only way to actually output the best possible signal to arcade monitors and something we could never do under Windows (unless we hacked the driver/firmware bios I guess). 

Another interesting thing about Xorg setup, in your monitor section you really need to make the identifier the name of your card output, like DVI-0 or VGA-0 etc.  It doesn't know how to really link the monitor section to the card output very well, usually just picks the first one per monitor section as it reads them.  This may be another reason why modelines often don't apply properly, you have to setup the xorg.conf file just right for your monitor/card names and ordering.

Here's my xorg.conf which can load the custom modelines without my patches, and seems like the proper way to set it up...
Code: [Select]
Section "Monitor"
        Identifier   "DVI-0"
        VendorName   "Wells Gardner"
        ModelName    "D9800"

        Option "DPMS"           "false"

        Option "MinClock"       "1Mhz"
        Option "MaxClock"       "90Mhz"

        HorizSync    15.25-38.00
        VertRefresh  47.00-75.00

        Option         "Primary"    "True"

        Option      "PreferredMode" "640x480x60.10"
        UseModes "ArcadeModes"
EndSection

Section "Monitor"
        Identifier   "VGA-0"
        VendorName   "Lilo"
        ModelName    "Lilo"

        HorizSync    15.25-38.00
        VertRefresh  47.00-75.00

        Option       "RightOf" "DVI-0"
        Option       "Primary"    "False"

        Option      "PreferredMode" "640x480x60.10"
        UseModes     "ArcadeModes"
EndSection

Section "Device"
        Identifier  "Card0"
        Driver      "radeon"
        #Driver      "nv"
        #Driver      "nouveau"
        VendorName  "ATI Technologies Inc"
        BoardName   "Unknown Board"
        BusID       "PCI:1:0:0"

        #Option      "ArcadeMonitor"  "d9800"
        Option      "EXAVSync"       "yes"
        Option      "EnablePageFlip" "on"

        Option      "ModeDebug"      "true"
        Option      "NoDDC"
        Option      "IgnoreEDID"     "on"

        Option      "ForceMinDotClock"    "3Mhz"

        #assigns the output DVI-I-0 to Monitor0
        Option      "monitor-DVI-0" "DVI-0"
        #assigns the output DVI-I-1 to Monitor1
        Option      "monitor-VGA-0" "VGA-0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "DVI-0"
        DefaultDepth    24
        SubSection "Display"
                Viewport   0 0
                Depth     8
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     16
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Virtual 1280 480
        EndSubSection
EndSection

Section "Modes"
        Identifier "ArcadeModes"

        Modeline "640x480x60.10"  25.240385  640 656 752 800  480 490 494 525  -HSync -VSync
EndSection

 
Also I've gotten switchres to build the modelines file and will release a version with that capability so in Windows you can have it write out a Soft15Khz custom modelines file as you play games, and apply/reboot and you'll slowly build more modelines that match the games you want to be more exact (probably need to trim/edit of course if limited to certain numbers of modelines).

This X Windows build is looking interesting, I'm still getting the base Xorg and all friends with DRM/Mesa to compile then I'll look into possibly SDL/Mame and perhaps a Linux kernel. Maybe it'll just be a simple small distro that really is just the bare bones X server and stuff needed to run mame, dynamically downloaded patched and built.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #104 on: October 28, 2010, 12:49:29 am »
I figured out how to get the vsync stuff working now, and can run without any tearing at the screen refresh rate.  I had to first off use an ubuntu 2.6.35 kernel that seems to have patches that fix KMS to allow the radeon to work.  I also had to change the radeon DRM code in it to do lower dotclocks and default to 640x480 instead of 1024x768, so the framebuffer actually works on the monitor.  You also have to have a special firmware file too that isn't in my Gentoo dist.  I got my download/patch/compile script working and can build a good working X windows system from GIT that has openGL/Mesa and is independent from the system so it runs in a separate directory from /usr/ by just adding the new bin location to your path.  X Windows has compile variables that allow it to do that and keep within a separate tree basically.  This all works really well, and there's only one issue or two.  First the DRM code constantly checks for EDID when it doesn't exist, and that causes the flicker I saw on the monitor at a regular interval.  I am figuring I just need to fix that but also have notified the Radeon driver guy about it and expect he'll realize the issue and fix in in the main DRM linux kernel tree.  Also of course we still have the xserver being forceful about default modes (mainly makes a 320x480 one we can't override), and hopefully he also helps me overcome that (or I'll figure out how to make it allow overwriting those default modes or just remove the adding of them again in my new build tree).

So that is something to look forward to, will hopefully in a few days have a bash script that you can run and it'll download/patch/install a whole working X windows and Linux kernel separate from the main system (will need to of course boot into the new kernel version), which work with Radeon cards with modesetting and vsync ability through openGL. 
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

elvis

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1154
  • Last login:April 13, 2023, 05:31:03 pm
  • penguin poker
    • StickFreaks
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #105 on: October 28, 2010, 03:24:44 am »
So that is something to look forward to, will hopefully in a few days have a bash script that you can run and it'll download/patch/install a whole working X windows and Linux kernel separate from the main system (will need to of course boot into the new kernel version), which work with Radeon cards with modesetting and vsync ability through openGL. 
That sounds great.  I'll definitely be giving that a go when it's done.

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #106 on: October 28, 2010, 04:46:32 am »
I figured out how to get the vsync stuff working now, and can run without any tearing at the screen refresh rate.  I had to first off use an ubuntu 2.6.35 kernel that seems to have patches that fix KMS to allow the radeon to work.  I also had to change the radeon DRM code in it to do lower dotclocks and default to 640x480 instead of 1024x768, so the framebuffer actually works on the monitor.  You also have to have a special firmware file too that isn't in my Gentoo dist.  I got my download/patch/compile script working and can build a good working X windows system from GIT that has openGL/Mesa and is independent from the system so it runs in a separate directory from /usr/ by just adding the new bin location to your path.  X Windows has compile variables that allow it to do that and keep within a separate tree basically.  This all works really well, and there's only one issue or two.  First the DRM code constantly checks for EDID when it doesn't exist, and that causes the flicker I saw on the monitor at a regular interval.  I am figuring I just need to fix that but also have notified the Radeon driver guy about it and expect he'll realize the issue and fix in in the main DRM linux kernel tree.  Also of course we still have the xserver being forceful about default modes (mainly makes a 320x480 one we can't override), and hopefully he also helps me overcome that (or I'll figure out how to make it allow overwriting those default modes or just remove the adding of them again in my new build tree).

So that is something to look forward to, will hopefully in a few days have a bash script that you can run and it'll download/patch/install a whole working X windows and Linux kernel separate from the main system (will need to of course boot into the new kernel version), which work with Radeon cards with modesetting and vsync ability through openGL.  

That's fantastic!

I've been reading a bit about these PLL dividers. It would be great to have a look at the code that translates the dotclock parameter of the modeline into these dividers. This is hidden for me in Windows, where the dotclock param is also an integer measured in MHz, so there's a resulting granularity in the precision of real dotclocks you can obtain, that also applies to resulting vfreq. If you have a look at Powerstrip there's an option named "ultrafine granularity" that might be achieved by direct tuning of these dividers.

EDIT: This also makes me wonder if those cards that had problems supporting very low resolutions, via Soft-15Khz, etc., were really limited by its hardware or by drivers.
« Last Edit: October 28, 2010, 08:43:43 am by Calamity »
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

Quinny

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 47
  • Last login:June 08, 2014, 07:52:07 am
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #107 on: October 28, 2010, 09:45:00 am »
So that is something to look forward to, will hopefully in a few days have a bash script that you can run and it'll download/patch/install a whole working X windows and Linux kernel separate from the main system (will need to of course boot into the new kernel version), which work with Radeon cards with modesetting and vsync ability through openGL. 

Does this include the ArcadeVGA cards?

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #108 on: October 28, 2010, 10:37:16 am »
So that is something to look forward to, will hopefully in a few days have a bash script that you can run and it'll download/patch/install a whole working X windows and Linux kernel separate from the main system (will need to of course boot into the new kernel version), which work with Radeon cards with modesetting and vsync ability through openGL. 

Does this include the ArcadeVGA cards?


It should, there is one issue with the BIOS label on those cards that hopefully is fixed in the newer version of the kernel I'm using, because they don't have a recognized ATI signature.  It's something that in the kernel source is easy to comment out though and bypass the check, or for the brave backing up then flashing the BIOS with an HD 2600 cards also would make it a normal recognized ATI card in the kernel.  I'll have to play around with mine and see for sure after I get things stable. 

It's interesting, the newest Linux kernel straight from the Linus tree just had the fix for the flickering issue, because they were polling the card constantly and since no EDID it was irritating it and constantly doing an intrusive check.  So that was great they just figured that one out, and of course was the main issue I saw, also the crashes in KMS mode are fixed it seems that I had saw with anything earlier besides the Ubuntu kernel (which must have the patches that went into the newest Linus kernel tree since 2.6.36 was out).

So it's all on the edge it seems, they just now are getting these cards to work decent at all with real support for the vsync ability and modeswitching.  Hopefully the couple issues I'm seeing work out with my mame 140 compile directly linking into the separate tree with the alternate versions of everything.  I realized I most likely need mame to really link into the separate libraries or else seems the openGL stuff on a couple games won't display, oddly  the ones with the extra low resolutions.  It's quite an interesting thing to get everything separated out, basically DRM/OpenGL/X/SDL/Mame are all in a /GA/ root directory and just have to set my PATH environment to include that /GA/bin before any other paths.  Pretty much should avoid a persons distribution limitations, as long as  a modern/new version, should be able to pick the distro and run this script and wait for the big download/compile cycle and hopefully does all the patching automatically so they don't have to think about it. 


SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #109 on: October 28, 2010, 10:40:23 am »
I figured out how to get the vsync stuff working now, and can run without any tearing at the screen refresh rate.  I had to first off use an ubuntu 2.6.35 kernel that seems to have patches that fix KMS to allow the radeon to work.  I also had to change the radeon DRM code in it to do lower dotclocks and default to 640x480 instead of 1024x768, so the framebuffer actually works on the monitor.  You also have to have a special firmware file too that isn't in my Gentoo dist.  I got my download/patch/compile script working and can build a good working X windows system from GIT that has openGL/Mesa and is independent from the system so it runs in a separate directory from /usr/ by just adding the new bin location to your path.  X Windows has compile variables that allow it to do that and keep within a separate tree basically.  This all works really well, and there's only one issue or two.  First the DRM code constantly checks for EDID when it doesn't exist, and that causes the flicker I saw on the monitor at a regular interval.  I am figuring I just need to fix that but also have notified the Radeon driver guy about it and expect he'll realize the issue and fix in in the main DRM linux kernel tree.  Also of course we still have the xserver being forceful about default modes (mainly makes a 320x480 one we can't override), and hopefully he also helps me overcome that (or I'll figure out how to make it allow overwriting those default modes or just remove the adding of them again in my new build tree).

So that is something to look forward to, will hopefully in a few days have a bash script that you can run and it'll download/patch/install a whole working X windows and Linux kernel separate from the main system (will need to of course boot into the new kernel version), which work with Radeon cards with modesetting and vsync ability through openGL.  

That's fantastic!

I've been reading a bit about these PLL dividers. It would be great to have a look at the code that translates the dotclock parameter of the modeline into these dividers. This is hidden for me in Windows, where the dotclock param is also an integer measured in MHz, so there's a resulting granularity in the precision of real dotclocks you can obtain, that also applies to resulting vfreq. If you have a look at Powerstrip there's an option named "ultrafine granularity" that might be achieved by direct tuning of these dividers.

EDIT: This also makes me wonder if those cards that had problems supporting very low resolutions, via Soft-15Khz, etc., were really limited by its hardware or by drivers.


Here's where they do that magic at...

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/gpu/drm/radeon;hb=c3cceeddf0b5f97b0d2352b98ef0f025e31a9ae3

I think this file may be the most important with the clock stuff :)
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/gpu/drm/radeon/radeon_clocks.c;h=5249af8931e60549e01362102f9c8ca941ba0d24;hb=c3cceeddf0b5f97b0d2352b98ef0f025e31a9ae3
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

lodoss118

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 164
  • Last login:December 29, 2023, 12:18:30 pm
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #110 on: October 28, 2010, 01:13:24 pm »
Hi i have a geforce gtx 460 and was wondering if this would work on windows or do i have to use linux? I also have this monitor
http://www.giz10p.co.uk/index.php?_a=viewProd&productId=309 tri sync auto switching monitor.

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #111 on: October 28, 2010, 01:19:08 pm »
Hi i have a geforce gtx 460 and was wondering if this would work on windows or do i have to use linux? I also have this monitor
http://www.giz10p.co.uk/index.php?_a=viewProd&productId=309 tri sync auto switching monitor.

It depends if that card works with Soft15Khz

If you use Soft15Khz, have that setup, then you can use the switchres perl script to run the games and it can basically do the .ini stuff but using the command line instead.  Also it'll show the modelines using lrmc that would be more optimal for the game your loading with it.  Those can be then put back into Soft15Khz as usermodes and then it'll utilize those resolutions next time it runs the game after a reboot (needs a reboot to add new modelines in Windows). 

The next version will have switchres write out a file of the modelines it generates each time you run a game and that will make it easier to create the usermodes file for Soft15Khz.  I'm going to probably post it sometime today for those added features, the things I'm working on probably wont be ready in the next day or two so might as well post what I have so far. 
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #112 on: October 28, 2010, 01:49:37 pm »
Version 0.15 -
*  Added ability to write out modelines used into a file called modes.txt by default, useful with Soft15Khz and creating a usermodes file
*  new single mame patch for mame 0140 which combines everything and the hiscore patch so you don't have to get that extra now
*  new xf86-ati driver patch which just changes the lowest dotclock value allowed (doesn't even matter if using KMS in the Linux kernel DRM stuff
*  new way of creating the xorg.conf file, new example too, which will allow modelines to work right in the driver, avoid using the Modes line in the Screen section at all cost!!!
*  Don't use the stuff in the GroovyArcade folder, that is the script which is still in development for downloading/building an entire X Windows plus mame system, that will no longer have the tearing issues and work best with switchres.  The patches though are interesting in that directory, but somewhat duplicates of the normal patches directory.
* various bug fixes in switchres.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #113 on: November 01, 2010, 05:31:40 pm »
Version 0.16 is up now, see info on first post on changes. 

I have been working on building the kernel/X windows system in Linux to be able to get perfect vsync and resolutions with the newer KMS mode for Radeon cards.  This basically allows the kernel to fully control the Radeon through the Atom bios and we get proper vsync through that.  I have finally gotten a build of X Windows and Linux where I can both change resolutions with xrandr almost flawless to exact Vertical Refresh rates and have mame properly run with nothrottle driven by the refresh rate of the monitor.  This is a slightly complex process and has taken me a week of digging around compiling X/Linux and patching Linux plus the newest Linux kernel just got this working right with KMS too (straight from the Linus tree).  Fortunately there's a modular package you get with GIT and it does all the X Windows building work for us (you will need to patch xrandr only).  Then you can run my new GA.sh script with the right args to download and install SDL/DirectFB/Mame on top of the new X Windows/OpenGL system.  There's stuff I had to change in the Linux kernel to get it working nicer with arcade monitors, mainly the minimum dotclock.  Also there's now a real framebuffer for newer Radeon cards from all this, and you can kind of force it to be arcade monitor compliant (includes a radeon.conf file with the module options to try and do that, it might work and get a 640x480@60 interlaced picture on the console.

The main one issue, which seems to be a bug in the xserver, are those default modelines it will make.  Mainly the 320x240 one it does just spoils the fun when a game needs that mode, just like how in Windows that was/is an issue on certain cards.  It's a bug since it should allow us to overwrite that modeline, but it doesn't right now and so my X Server patch could be used for now until I find a way to fix that correctly in the X Server and hopefully get them to include that change. 

I can also confirm that the X850 Radeon cards, at least the crossfire ones, do not work well at all in Linux.  Barely works and can't get a console, only X Windows and then mame crashes for some odd reason with a segfault trying to use OpenGL on it.  Also the ArcadeVGA 3000 card when actually allowed to load the KMS stuff onto it, has terrible weird output and programming modes with KMS mode in Linux.  I think the BIOS changes are fully incompatible with normal Radeon ATI ATOM Bios setup, and so in Linux the normal Radeon driver when actually using the Atom bios just doesn't know how to setup the cards chips.  It seems to think both outputs are digital ones, and the first always has a weird output barely legible and then the digital one is way out of range of what it should be.  Basically it seems the cards being programmed totally wrong and the horizontal/vertical refresh values are not even close to what they should be for some reason. 

So if you have an ArcadeVGA it will not work in Linux when you want to go into the newest current stuff utilizing the Radeon bios and interrupts from the card, you will need to probably flash your bios and make it a normal ATI Radeon HD 2600 first.  This all works really well though on the HD 4870 card, which is what I am using, and any chipset most likely below that besides those odd X800 type cards I'm guessing. If someone had a newer radeon and tested this, it could confirm if those cards really can't do lower dotclocks or if it's just the Windows drivers blocking it. 
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #114 on: November 02, 2010, 06:37:25 pm »
Hi bitbytebit,

You've done a great achievement. I can get a slight idea of how difficult this must have been. I think it's going to be important in the next years (before vga says goodbye) to have a solid platform for emulation that supports arcade monitors, and benefit from the last cards capable of low resolutions (it seems it's all over since HD5000), and this Linux solution looks perfect for that. I'm eager to get my hands on it.

I wonder if it will work with older Radeon (before Atom bios), i.e. the popular Radeon 9250. On the default resolutions issue, are they actually produced by the xserver? In Windows, it's the driver the one that provides the system with all the modes, and the 320x240 issue really happens when a 320x or 400x resolution is invoked, because Catalyst driver is hardcoded to activate doublescan with those resolutions (it's not DirectX's fault as I read somewhere). I believe doublescan support through custom modes does not work properly with Catalyst, and it might be related with that. Anyway, Catalyst can be patched to avoid that behaviour, restoring the normal use of 320x and 400x modes without the 321 trick. Besides that, we also have the issue with default modes (31 KHz) added by the driver at a variety of resolutions, that need to be restricted.

Thanks for the good work, again!
« Last Edit: November 02, 2010, 06:47:36 pm by Calamity »
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

lodoss118

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 164
  • Last login:December 29, 2023, 12:18:30 pm
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #115 on: November 02, 2010, 07:16:51 pm »
i have ati 4850 and was wondering what is the best linux flavour to use, something that loades fast and how easy is it to install thispackage i am not a linux user?

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #116 on: November 03, 2010, 11:46:17 am »
Hi bitbytebit,

You've done a great achievement. I can get a slight idea of how difficult this must have been. I think it's going to be important in the next years (before vga says goodbye) to have a solid platform for emulation that supports arcade monitors, and benefit from the last cards capable of low resolutions (it seems it's all over since HD5000), and this Linux solution looks perfect for that. I'm eager to get my hands on it.

I wonder if it will work with older Radeon (before Atom bios), i.e. the popular Radeon 9250. On the default resolutions issue, are they actually produced by the xserver? In Windows, it's the driver the one that provides the system with all the modes, and the 320x240 issue really happens when a 320x or 400x resolution is invoked, because Catalyst driver is hardcoded to activate doublescan with those resolutions (it's not DirectX's fault as I read somewhere). I believe doublescan support through custom modes does not work properly with Catalyst, and it might be related with that. Anyway, Catalyst can be patched to avoid that behaviour, restoring the normal use of 320x and 400x modes without the 321 trick. Besides that, we also have the issue with default modes (31 KHz) added by the driver at a variety of resolutions, that need to be restricted.

Thanks for the good work, again!


It should, they at least are working on all the ATI cards and seems the ones with r600/700/800 gpu chips are getting the best attention, although the r200/300/400 ones should in theory work too.  I think my x850 card has some odd dual card ability which breaks it from doing lower resolutions well.

It's X windows that puts the default resolutions in and I have a simple patch that fixes it where if the EDID isn't there and the user has specified any modelines in xorg.conf then it'll skip adding those default resolutions:
Code: [Select]
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index b2daec7..ff5ca2c 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -1633,6 +1633,10 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
            xf86ForEachDetailedBlock(edid_monitor,
                                     handle_detailed_monrec,
                                     &p);
+       } else {
+           xf86DrvMsg(scrn->scrnIndex, X_INFO,
+                  "No EDID on output %s\n", output->name);
+           add_default_modes = FALSE;
        }

        if (xf86GetOptValFreq (output->options, OPTION_MIN_CLOCK,

I'm now on the xorg-devel mailing list and submitted it to them, hopefully they care enough to pay attention and this makes it into the main xserver eventually.  For now it's a pretty easy thing to patch and with the discovery of the modular GIT download package they have it makes compiling the whole X Windows somewhat easy.  There are a few quirks to it still with the build.sh script and I hopefully can make those easier to avoid with possibly a script to run the necessary commands with build.sh and add in the extra setting of things like environment variables.


My arcade cabinet now is definitely working nice and you not only gain MAME running without tearing and proper refresh rates and true resolutions, this stuff is dang fast for the other stuff too requiring Mesa OpenGL and DRM in general.  Also the Radeon card modeswitching is much smoother and seems the atom bios and chip is just being run properly now, before I guess it was more of a hack from userspace or something with the normal ati x driver methods.  Plus now you get a framebuffer on the console again with the newer cards, I am not sure how nice the modelines they have setup in there are on a true fixed freq arcade monitor though.  It should be somewhat easy to add a few modelines into the kernel as arcade monitor ones but I also think that the cvt part of it (it uses cvt too if you ask for one it doesn't know) should work giving it video=640x480-32@31i  which results in basically a 15.6Khz interlaced display for the frame buffer.  It seems you have to do the refresh rate 31 to get 62Hz interlaced and it pushes the Hfreq from 15.0 to 15.6 by doing that.  It might be nice to try putting lrmc logic in there to choose instead of cvt and specify it with a switch at the end like how it takes the 'i' at the end (like 'A' or something).

So one thing I would like to do is work on setting up the ability to make the framebuffer truly arcade friendly, to allow directfb and console usage to work nicely since it is nice to avoid X for some things (if only there was a good frontend too, would be kind of nice to avoid X all together).  One issue though with the framebuffer stuff is that directfb just doesn't understand the refresh rates and pixelclock settings and does the things we originally were stuck with in xrandr and SDL 1.2 with all the modelines.  It seems to not take very precise Hz values with decimal places and so we'd have to setup some interesting way to write out the /etc/fb.modes file each game start to hold only the Mode we want (that's how the directfb stuff programs the framebuffer, or basically how the Linux framebuffer gets the modelines it uses).  I guess that starts getting more complicated the more I think about it, there's unfortunately a lot of preset expectations on the framebuffer layers to just be a vesa compliant one.

I do think the nouveau driver will eventually be a good thing with Nvidia cards most likely, it's just not ready in development or at least close but not exactly there yet.  For now these radeon 4350 cards do look like the best bet, just odd how this new KMS stuff totally breaks an ArcadeVGA 3000 card into some weird horrible output issues.  I think they would have to completely write stuff into the DRM layers to add the AVGA cards and may be hard since the bios is closed source to them.  Fortunately ATI has the employees working on the normal Radeon cards in Linux though and since they can fully see all the stuff most likely, we are getting a very nice Radeon driver in Linux it seems. 
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #117 on: November 03, 2010, 11:50:11 am »
i have ati 4850 and was wondering what is the best linux flavour to use, something that loades fast and how easy is it to install thispackage i am not a linux user?
If you have an arcade monitor, then you'll want to possibly use Ubuntu but will have to install a newer patched xrandr/xserver plus the lrmc and switchres program.  Also will need to patch the Linux kernel, getting the newest one, and compile/install it.  Not a super easy task unfortunately for those not used to Linux, hopefully all the patches get into the mainline code eventually although it's hard to get the developers to listen about old CRT monitors.

If you don't have an arcade monitor, then just install the newest 10.10 Ubuntu and it has mame packages and everything you need, and should work great plus you really don't need my programs in that case since it mostly just makes arcade monitors and resolution switching work better.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization

lodoss118

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 164
  • Last login:December 29, 2023, 12:18:30 pm
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #118 on: November 03, 2010, 02:17:49 pm »
i have a arcade monitor :( i am going to get a mini itx and put my ati 4850 in that not sure i can setup a linux mame with this package :(. Is it possible for someone uhmmmm
in here making a compiled version of linux with this package already setup :@

bitbytebit

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 896
  • Last login:August 02, 2019, 11:07:16 am
    • The Groovy Organization
Re: Genres modeline generator and switchres dynamic modeline switcher (ver .14)
« Reply #119 on: November 03, 2010, 02:48:56 pm »
i have a arcade monitor :( i am going to get a mini itx and put my ati 4850 in that not sure i can setup a linux mame with this package :(. Is it possible for someone uhmmmm
in here making a compiled version of linux with this package already setup :@

Hopefully this can be used by those who want to create distributions, it is something that I've done before but it's hard to make a compile of every single persons setup with the kernel and hardware.  I hopefully can make a script to somewhat automate it but it'd probably be mostly like how Gentoo works which is by no means for the first time user. 

I'm researching how to either make this all work in the mainline linux stuff, get patches pushed into that, or make it easiest as it can be to setup.  It's all just now possible and very new code that they've been putting into the linux kernel as of the last month.  So I think we'll eventually see this all become easier, at least I hope, or someone will be able to distribute a setup disk with the proper binaries on it.
SwitchRes / GroovyMame - http://arcade.groovy.org
Modeline Generator and Mame Wrapper for Windows or Linux
LiveCD of Groovy Arcade Linux for Arcade Monitors
GroovyMame - generate arcade resolutions like advancemame
--
The Groovy Organization