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: Cleanstretch vertical only  (Read 14716 times)

0 Members and 1 Guest are viewing this topic.

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
Re: Cleanstretch vertical only
« Reply #40 on: April 29, 2013, 05:04:38 am »
With one caveat! Games that don't linedouble to <= 480 lines are flawed. The default scaling isn't terrible, but I'd prefer to override it and stretch the vertical larger than the screen height simply to keep the image clean, but I can't see any way of doing this without disabling the modeline engine. No matter how I adjust the vertical stretch within MAME it won't provide a clear image, unless modeline is off :(

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 19, 2025, 04:03:33 am
  • Quote me with care
Re: Cleanstretch vertical only
« Reply #41 on: April 29, 2013, 05:41:46 am »
If what you're suggesting is to force GM to crop the frame vertically in order to keep integer scaling for games that linedouble above 480 lines, well that's probably not going to happen: one of the basic principles of design was to ensure that the visible frame *always* fits inside the active video, either by integer or fractional scaling. This is because resolution switching is the supposed behaviour.

However, provided you can replicate the behaviour you want by disabling -modeline, then it is possible to keep -modeline on and achieve what you want by forcing certain options as enabled or disabled in per game inis (atention: not in mame.ini! this is overridden). Just create a log with -modeline on, then check which options are enabled/disabled by the SwitchRes automatic option setting (check the log). Then it's a matter of blocking those options manually from command line, one by one, to check which one is preventing GM from working as you like. Then move those options permanently to an ini file for the desired game/driver.
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

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
Re: Cleanstretch vertical only
« Reply #42 on: April 29, 2013, 03:30:56 pm »
Yeah, it's no big deal for the few decent games that are >240 lines. Scale up outside the borders then shift the picture up or down as desired.

Highly impressed at how well it works with arcade_31 though. Good job!

I have one final question though - does the upscaling and using an effect overlay introduce any input lag? I'm noticing I have more accurate response time to a PCB (I'm testing games I own and am intimately familiar with on PCB vs MAME) if I set frame_delay to 1, but that of course introduces tearing or sound stuttering depending on the game.

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 19, 2025, 04:03:33 am
  • Quote me with care
Re: Cleanstretch vertical only
« Reply #43 on: April 30, 2013, 04:25:57 pm »
Hi cools,

Upscaling should have no impact on input lag of any kind.

That said, it's been recently confirmed that ATI drivers do create an artificial frame queue when in Direct3D full screen mode, that adds up to 3 frames of lag.

This is bypassed by the frame_delay option, but unfortunately this one does not provide a fast enough v-sync for Direct3D, which can show as static tearing by the top of the screen.

Both issues can be solved by just switching to DirectDraw, in case that's a possibility considering your current setup.

Any report on this will be appreciated.

BTW A couple of days ago I bought a camera that can record video at 240 fps, it will become handy for future experiments :)

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

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
Re: Cleanstretch vertical only
« Reply #44 on: May 01, 2013, 04:23:52 pm »
Thanks, that's actually quite interesting considering there's no real need for an ATI card in my setup since I'm only using a single, VGA resolution.

Will report back when I have a chance to mess with it. Setting frame delay to 1 seemed to sort everything out but obviously there's the tearing at the top. Interesting the value is 1, rather than 3, though I didn't experiment further.

Not sure if DDraw will be practical, I've always found the performance hit huge when doing any sort ofscaling or overlays.

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
Re: Cleanstretch vertical only
« Reply #45 on: May 10, 2013, 01:41:29 pm »
Hi cools,

Upscaling should have no impact on input lag of any kind.

That said, it's been recently confirmed that ATI drivers do create an artificial frame queue when in Direct3D full screen mode, that adds up to 3 frames of lag.

This is bypassed by the frame_delay option, but unfortunately this one does not provide a fast enough v-sync for Direct3D, which can show as static tearing by the top of the screen.

Both issues can be solved by just switching to DirectDraw, in case that's a possibility considering your current setup.

Any report on this will be appreciated.

Okay, report!

Using the single resolution and frame_delay 1 = tearing, but no lag.

Using VMMaker generated resolutions from MAMEs XML infor with arcade_31 as a preset (letting VMMaker and switchres do their thing), with frame_delay 1 = no tearing, no lag! Lag is definitely present without frame_delay 1 - testing with tnzs, fantzone, nemesis it's like night and day how responsive they are when it's enabled. It's staying in my ini.

Really need to write up how it's all set up as there's been a lot of me messing around and digging for information that wasn't really needed.

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
Re: Cleanstretch vertical only
« Reply #46 on: May 10, 2013, 02:09:04 pm »
figured out games > 240 lines.

The default prescale is not working well enough for them - if I specify prescale 2 in the gamename.ini, and then use the vertical stretch slider (1.066 works for R-Type) I get pixel perfect scaling with the top and bottom cropped as desired.

All done :)

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 19, 2025, 04:03:33 am
  • Quote me with care
Re: Cleanstretch vertical only
« Reply #47 on: May 11, 2013, 11:12:43 am »
Hi cools,

Thanks for reporting this. It's good to have another confirmation that the -frame_delay actually reduces perceived lag in gameplay.

Just a note: you can create just a single 1600x480 resolution with VMMaker if that's what you want, and then use GroovyMAME leaving -modeline on, with arcade_31 setting and enforcing the -resolution option to pick this resolution for you. That will adjust the refresh while still using a single resolution.

I've been testing "super resolutions" these days, as a replacement for magic resolutions (which won't work in W7). I chose a bunch of 2560x resolutions, with the different heights I needed, and it actually works great out of the box. Some games that don't scale exactly to 2560 may show wider borders but not big deal, anyway when the horizontal-only fractional scaling is implemented this will be a very good replacement for magic resolutions.
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

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
Re: Cleanstretch vertical only
« Reply #48 on: May 12, 2013, 11:28:32 am »
Hmm, the only reason I tried the standard setup was because the single super-resolution didn't work well with frame_delay - I had tearing.

It's brilliant how well it works, shows how confused I was I couldn't replicate it when changing cards.

On my Rodotron however going above 1600 means I've got to change the brightness and contrast settings on the chassis, and Windows is unusable so I've got to stick to 1600 or lower. I'll have to try again forcing the resolution with frame delay on, as if that works perfectly then once fractional scaling on horizontal only is implemented everything will be centred and sized properly.